数据库约束——MySQL(一篇通) 数据库约束——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_infowhereid1;5.UNIQUE唯一约束注指定了唯一约束的列该列的值在所有记录中不能重复比如一个人的身份证学生在校的学号电话号码等。重构学生表为学号列设置唯一约束6.PRIMARY KEY主键约束主键约束唯一标识数据库中的每条记录主键必须包含为唯一的值且不能包含null值每个表只能有一个主键可以由单个列或多个列组成通常为每张表都指定一个主键主键列建议使用bigint类型重构学生表为id列添加非空和唯一约束查看表结构添加了非空和唯一约束之后key列显示PRI表示主键当id列重复时会发生主键冲突通常将主键列设置为自动增长让数据库维护主键值查看表结构Extra列显示auto_increment表示自增如果某条记录写入失败那么这条记录对应的主键值也会伴随作废期间失败了两次所以45主键值作废主键值可以不连续可以手动规定主键值复合主键有多个列共同组成的主键主键是否冲突以多个列的组成进行判定第一次插入1‘张三’)第二次插入1’张三’)由于主键由idname复合构成此时发生冲突插入失败第三次插入2‘张三’)虽然此时’张三’冲突,但是2不冲突插入成功7.FOREIGN KEY外键约束1.外键用于定义主表和从表之间的关系2.外键约束主定义在从表的列上主表失联的列必须是主键或唯一约束3.当定义外键后要求从表中的外键列数据必须在主表或唯一列存在或为null。创建班级表主表并初始化数据重构学生表从表加入外键约束foreignkey(id)referencesclass(id)查看表结构key列的值为MUL表示外键约束的列正常插入数据注插入一个班级号为5的学生由于主表中只有34两个班并没有5这个班所以插入失败插入班级id为null的记录可以成功表示当前学生未分配班级删除主表时要先删除从表8.CHECK约束可以应用于一个或多个列用于限制列中可接受的数据值从而确保数据的完整性和准确性。在8.0.16开始全面支持check约束。重构学生表要求年龄不能下雨18岁性别只能是男或女。只要不满足两者条件时则插入失败。