mysql外键的使用跟引用完整性

  • 内容
  • 评论
  • 相关

mysql外键的使用和引用完整性

  • 外键和引用的完整性

利用外键关系可以在某个数据表声明与另外一个数据表的某个索引相关联的索引,同时还可以将约束条件施加到外键关系中。
外键可以帮助维护数据的一致性,如果不使用外键就需要我们自己来维护不同数据表之间的一致性。

Mysql中,InnoDB存储引擎提供了对外键的支持
父表:包含原始键值的数据表
子表:引用父表中键值的数据表

  • 外键的创建和使用

CREATE TABLE `test_user_info` (
  `id` int(8) NOT NULL AUTO_INCREMENT,
  `user_id` int(8) NOT NULL,
  `address` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  CONSTRAINT `user_id` FOREIGN KEY (`user_id`) REFERENCES `test_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
CONSTRAINT用于给外键关系起一个名字,如果没有mysql会默认创建一个名字
FOREIGN KEY列出子表里面被索引的数据列,必须匹配附表中的索引值
REFERENCES子句列出父表中索引数据列的名字,子表中的外键将根据该子句索引父表中的数据列
ON DELETE用于指定当父表中的数据被删除时子表应该做什么
ON UPDATE用于指定当父表中的数据被更新时子表应该做什么

  • 当父表被删除时子表的几种行为

NO ACTION 当父表中的数据被删除时,与之关联的子表不做改动
CASCADE 当父表中的数据被删除时,与之关联的子表中的数据也被删除
SET NULL 当父表中的数据被删除时,与之关联的子表中的索引列被设置为NULL 
SET DEFAULT 当父表中的数据被删除时,与之关联的子表中的索引列被设置为默认值

原创文章,转载请注明: 转载自搞代码

本文链接地址: mysql外键的使用跟引用完整性

微信支付二维码

微信 赏一包辣条吧~

支付宝支付二维码

支付宝 赏一听可乐吧~

评论

0条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注