约束为了保证数据的完整性及一致性,分为表级约束和列级约束,约束针对一个字段即为列级约束,针对两个及以上字段即为表级约束
约束包括:
主键约束(primary key)、外键约束(foreign key)、唯一约束(unique key)、非空约束(not null)、默认约束(default)
下面来总结一下外键约束:
外键约束:实现数据表的一对一或一对多关系
要求:
父表和子表必须具有相同的存储引擎(innodb),有外键的表称为子表
外键列和参照列必须具有相似的数据类型,其中数字的长度和是否有符号位必须相同,而字符的长度可以不同
外键列和参照列必须有索引,如果外键列没有索引,mysql将自动创建,参照列不会自动创建
插入记录必须先在父表中插入,才能再子表中插入(因为子表需要引用父表中的记录)
外键约束操作 on delete cascade/not null/restrict/no action
cascade:从父表中删除或更新时,自动从子表中删除或更新指定的行
not null:从父表中删除或更新时,将子表中的外键列设为null(要求子表中的外键列在设置时,不能设置为not null)
restrict/no action:拒绝对父表的删除或更新
但在定义表时为了保证数据表在所有的引擎中都可以使用,一般不使用物理外键foreign key来定义。