约束对应的英语单词:constraint
在创建表的时候,我们可以给表中的字段加上一些约束,来保证表中的数据的完整性、有效性!!!
约束的作用就是为了保证:表中的数据有效!!
非空约束 not null
唯一性约束 unique
主键约束 primary key
外键约束 foreign key
检查约束 check
非空约束 not null 约束的字段不能为 NULL



唯一性约束 unique 约束的字段不能重复,但是可以为 NULL


需求:name 和 email 两个字段联合起来具有唯一性!!!

主键约束 primary key 简称 pk
主键值是每一行记录的唯一标识
主键值是每一行记录的身份证号!!!
记住:任何一张表都应该有主键,没有主键,表无效!!!
主键的特征:not null + unique(主键值不能是 NULL,同时也不能重复)

主键不能重复

主键不能为NULL



除了单一主键和复合主键外,还拥有:
实际开发中,使用自然主键多,很少使用业务主键!!!
主键一旦和业务值挂钩,可能会出现各种问题!!!
外键页数 foregin key 简称 fk
业务背景:
请设计数据库表,来描述 “班级和学生” 的信息?
第一种方案:班级和学生存储在一张表中

分析上述方案的缺点:数据冗余,空间浪费!!!
第二种方案:班级一张表,学生一张表


当 cno 字段没有任何约束的时候,可能会导致数据无效。可能出现一个 102,但是 102 班级不存在,所以为了保证 cno 字段中的值都是 100 和 101,需要给 cno 字段添加外键约束。 那么:cno 字段就是外键字段。cno 字段中的每一个值都是外键值。
注意:
t_class 是父表 t_student 是字表
删除表的顺序?
先删子,再删父。
创建表的顺序?
先创建父,再创建子。
删除数据的顺序?
先删子,再删父。
插入数据的顺序?
先插入父,再插入子。
创建表


插入数据


注意:子表中的外键引用的父表中的某个字段,被引用的这个字段必须是主键吗?
不一定是主键,但至少具有 unique 约束。
到此这篇关于MySql约束超详细介绍的文章就介绍到这了,更多相关MySql约束内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!