约束能保证数据的完整性和一致性。
约束类型:主键约束、唯一约束、非空约束、默认约束、外键约束
主键约束(PRIMARY KEY)
自动编号(AUTO_INCREMENT)
- 适用范围:整型,小数位数是0的浮点型
- 自动编号必须与主键组合使用(主键不一定和它一起使用)
- 默认情况下,起始值为1,每次的增量为1
主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。(单一主键和复合主键)
- 每张数据表只能存在一个主键
- 主键保证记录的唯一性
- 主键自动为NOT NULL
- 自动编号必须和主键一起使用
唯一约束(UNIQUE KEY)
唯一约束保证在一个字段或者一组字段里的数据与表中其它行的数据相比是唯一的。
- 唯一约束可以保证记录的唯一性
- 唯一约束的字段可以为空值
- 每张数据表可以存在多个唯一约束
非空约束(NOT NULL)
非空约束即限制必须为某个列赋值。
默认约束(DEFAULT)
当插入记录时,没有明确的为字段赋值,则自动赋予默认值。
外键约束(FOREIGN KEY)
FPREIGN KEY(子表外键名) REFERENCES 父表名(父表参照字段)
- 父表和子表必须使用相同的存储引擎,禁止使用临时表。
- 数据表的存储引擎只能为InnoDB。
- 外键列和参照列必须具有相似的数据类型。数字的长度或是否有符号位必须相同,但是字符的长度可以不同。
- 外键列和参照列必须创建索引。如果外键列不存在索引,MySQL将自动创建索引。
外键约束的参照操作
FOREIGN KEY(子表外键名) REFERENCES tb_name(父表参照字段) [ON DELETE CASCADE]
- CASCADE:从父表删除或更新行,则自动删除或更新子表中的匹配行
删除主表时自动删除从表。删除从表,主表不变。
更新主表时自动更新从表。更新从表,主表不变。 - SET NULL:父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表的外键列没有指定为NOT NULL
删除主表时自动更新从表值为NULL。删除从表,主表不变。
更新主表时自动更新从表值为NULL。更新从表,主表不变。 - RESTRICT(NO ACTION):拒绝对父表的删除或更新操作
当从表记录不存在,主表才能删除。删除从表,主表不变。
当从表记录不存在,主表才能更新。更新从表,主表不变。
网友评论