一、外键约束(FOREIGN KEY)
外键约束的功能:
1)、保持数据一致性,完整性
2)、实现一对一或一对多关系
外键约束的要求:
1)、父表和字表必须使用相同的存储引擎,而且禁止使用临时表
2)、数据表的存储引擎只能为InnoDB
3)、外键列和参照咧必须具有相似的数据类型,其中数字的长度或是否有符号位必须相同;而字符的长度可以不同
4)、外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引
二、查看数据表存储引擎
1 | SHOW CREATE TABLE provinces; |
三、创建外键约束表
表一:
1 | CREATE TABLE provinces( |
表二:
1 | CREATE TABLE users( |
四、外键约束的参照操作
1)、CASCADE:从父表删除或更新且自动删除或更新字表中匹配的行(也就是当从父表中删除纪录,那么字表中的纪录也会被删除)
2)、SET NULL:从父表删除或更新行,并设置字表中的外键列为NULL。如果使用该选项,必须保证子列表没有指定NOT NULL(也就是说从父表删除纪录,字表中的数据变为空值,前提是字表不能设置为不为空)
3)、RESTRICT:拒绝对父表的删除或更新操作
4)、NO ACTION:标准的SQL的关键字,在MySQL中与RESTRICT相同
五、表级约束和列级约束
1)、对一个数据列建立的约束,称为列级约束
2)、对多个数据列建立的约束,称为表级约束
3)、列级约束既可以在定义的时候声明,也可以在列定义后声明
4)、表级约束只能在列定义后声明