MYSQL学习(四)

来源:互联网 发布:90后相亲知乎 编辑:程序博客网 时间:2024/06/06 09:33

约束为了保证数据的完整性及一致性,分为表级约束和列级约束,约束针对一个字段即为列级约束,针对两个及以上字段即为表级约束

约束包括:

主键约束(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来定义。


0 0