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子句用于指定当父表中的数据被更新时子表应该做什么