数据库约束——MySQL
文章摘要:本文全面介绍MySQL数据库中的八种约束类型,包括NOT NULL非空约束、DEFAULT默认值约束、UNIQUE唯一约束、PRIMARY KEY主键约束、FOREIGN KEY外键约束和CHECK约束。通过学生表等实际示例,详细讲解每种约束的语法规则、应用场景和注意事项,帮助读者深入理解数据库约束在保证数据完整性、准确性和一致性方面的重要作用。文章包含丰富的SQL代码示例和操作截图,适合数据库初学者和开发者学习参考。
目录
1.什么是数据库约束
2.约束类型
3.NOT NULL非空约束
4.DEFAULT默认值约束
5.UNIQUE唯一约束
6.PRIMARY KEY主键约束
7.FOREIGN KEY外键约束
8.CHECK约束
正文
1.什么是数据库约束
数据库约束是指对数据库表中的数据所施加的规则或条件,用于确保数据的准确性和可靠性。这些约束可以是基于数据类型,值范围,唯一性,非空等规则,以确保数据的正确性和相容性。
2.约束类型
3.NOT NULL非空约束
比如创建一个学生表,学生名为空的时候,该条数据不完整。
createtablestudent(idbigint,namevarchar(30)notnull);4.DEFAULT默认值约束
createtablestudent_info(idbigint,namevarchar(30)notnull,agebigintdefault18);insertintostudent_info(id,name)values(1,'张三');select*fromstudent_infowhereid=1;5.UNIQUE唯一约束
注:指定了唯一约束的列,该列的值在所有记录中不能重复,比如一个人的身份证,学生在校的学号,电话号码等。
重构学生表,为学号列设置唯一约束
6.PRIMARY KEY主键约束
主键约束唯一标识数据库中的每条记录
主键必须包含为唯一的值,且不能包含null值
每个表只能有一个主键,可以由单个列或多个列组成
通常为每张表都指定一个主键,主键列建议使用bigint类型
- 重构学生表,为id列添加非空和唯一约束
- 查看表结构,添加了非空和唯一约束之后key列显示PRI表示主键
- 当id列重复时会发生主键冲突
- 通常将主键列设置为自动增长,让数据库维护主键值
- 查看表结构,Extra列显示auto_increment表示自增
- 如果某条记录写入失败,那么这条记录对应的主键值也会伴随作废
- 期间失败了两次,所以4,5主键值作废
- 主键值可以不连续,可以手动规定主键值
- 复合主键:有多个列共同组成的主键,主键是否冲突以多个列的组成进行判定
- 第一次插入(1,‘张三’)
- 第二次插入(1,’张三’)由于主键由id,name复合构成,此时发生冲突,插入失败
- 第三次插入(2,‘张三’)虽然此时’张三’冲突,但是2不冲突,插入成功
7.FOREIGN KEY外键约束
1.外键用于定义主表和从表之间的关系
2.外键约束主定义在从表的列上,主表失联的列必须是主键或唯一约束
3.当定义外键后,要求从表中的外键列数据必须在主表或唯一列存在或为null。
- 创建班级表(主表),并初始化数据
- 重构学生表(从表),加入外键约束
foreignkey(id)referencesclass(id)- 查看表结构,key列的值为MUL表示外键约束的列
- 正常插入数据
注:插入一个班级号为5的学生,由于主表中只有3,4两个班,并没有5这个班,所以插入失败 - 插入班级id为null的记录可以成功,表示当前学生未分配班级
- 删除主表时要先删除从表
8.CHECK约束
可以应用于一个或多个列,用于限制列中可接受的数据值,从而确保数据的完整性和准确性。在8.0.16开始全面支持check约束。
- 重构学生表,要求年龄不能下雨18岁,性别只能是男或女。
只要不满足两者条件时,则插入失败。