MySQL入门——约束简介、外键约束说明、外键约束主表与子表的创建与使用约束案例

时间:2022-09-21 13:04:01

1、约束简介:
(1)、约束保证了数据的完整性和一致性;
(2)、约束分为表级约束和列级约束。
其中,表级约束是指对多个数据列建议的约束,它只能在列定义后声明。
列级约束是指多一个数据列建立的约束,它可以在定义列的时候声明,也可以在列定义好以后声明。
(3)、约束的类型包括
NOT NULL(NN,非空约束)、
PRIMARY KEY(PK, 主键约束)、
UNIQUE KEY(UN, 唯一约束)、
DEFAULT(DE,默认约束)、
FOREIGN KEY(FK, 外键约束)

2、外键约束说明:
(1)、父表和子表必须使用相同的存储引擎,如InnoDB等,而且禁止使用临时表;
(2)、支持外键约束的数据表存储引擎只能是InnoDB;
(3)、外键列(字段)和参照列必须具有相似的数据类型,其中数字的长度或是否有符号位必须相同,而字符类型的字段的长度则可以不同;
(4)、外键列(字段)和参照列(即外键列在另一个表中对应的主键列)必须创建索引,如果外键不存在索引(即外键约束)的话,MySQL将自动给外键列自动创建索引(外键约束)

外键约束使用案例,其中主键列(主表/父表)是province表,外键列(子表)是user表;
MySQL入门——约束简介、外键约束说明、外键约束主表与子表的创建与使用约束案例
MySQL入门——约束简介、外键约束说明、外键约束主表与子表的创建与使用约束案例
注意:province表中的id列,在province表中是主键列。user表中的pid列,在user表中是外键列,但是与province表中的id列一一对应,REFERENCES province(id),所以,user表中的pid字段的数据类型,是否UNSIGNED要与province表中的id字段对应好,对于非字符类型的字段,则要求字段类型以及各种约束都要完全相同。