MySQL 6:数据库约束

发布时间:2026/7/26 11:35:58
MySQL 6:数据库约束 1.概念与类型概念数据库约束是指对数据库表中的数据所施加的规则或条件用于确保数据的准确性和可靠性。这些约束可以是基于数据类型、值范围、唯一性、非空等规则以确保数据的正确性和相容性。约束类型2.NOT NULL 非空约束定义表时某列不允许为NULL时可以为列添加非空约束。对于明确不会为空的列建议主动添加该约束这不仅保障数据完整性也能优化查询效率。举例创建一个学生表约束学生名的列不能为NULL。•为所有列添加非空约束•由于name列有非空约束插入NULL值时报错。•正常值可以成功插入drop table if exists student; create table student( id bigint, name varchar(20) not null );NULL列为NO表示值不允许为NULLYES表示值可以为NULL。•查看表结构name列的Null 属性值为NO。3.DEFAULT 默认值约束DEFAULT 约束用于向列中插入默认值如果没有为列设置值那么会将默认值设置到该列。举例为年龄列加入默认值•重构学生表新增年龄列为年龄列加入默认约束。•插入一条记录不指定年龄的值时列使用了默认值若没有设置默认约束时会为NULL。drop table student; create table student ( id bigint, name varchar(20) not null, age int default 18 );•查看表结构age列的Default 属性值为18。4.UNIQUE 唯一约束指定了唯一约束的列该列的值在所有记录中不能重复比如⼀个人的身份证号学生的学号等。对于明确是唯一的列建议主动添加该约束这不仅保障数据完整性也能优化查询效率。注意唯一约束只确保非 NULL 值的唯一性通常允许存在多个 NULL值。举例设置学号唯一•重构学生表新增学号列并设置唯一约束。•插入重复的学号时报错唯一约束生效。drop table student; create table student ( id bigint, name varchar(20) not null, age int default 18, sno varchar(10) unique );•查看表结构sno列的Key 属性值为UNI表示该学号列已成功添加唯一约束。5.PRIMARY KEY 主键约束5.1定义5.2示例举例将学生表的id 列设为主键•重构学生表为id列添加主键约束。•查看表结构id列的Key 属性值为PRI表示id已被成功设为主键。drop table student; create table student ( id bigint primary key, name varchar(20) );•当Id列的重复时会发生主键冲突通常把主键列设置为自动增长让数据库维护主键值一个表中只能有一个自增列。•重构学生表将学生表的id 列设为自增主键。•插入数据时设置主键列的值为NULL或不设置主键列的值推荐主键列的值都会自动生成。drop table student; create table student ( id bigint primary key auto_increment, name varchar(20), age int );•查看表结构id列的Extra 属性值为auto_increment表示自增。•如果某条记录写入失败新生成的主键值将会作废。由于id 重复产生了唯一冲突导致插入失败ID为3的主键值作废。修改 id 后成功插入数据查询后发现新记录 id 列的值为4。•主键值可以不连续手动指定⼀个值下一次自增从主键的最大值开始。当然也可以手动指定中间的值但是下一次自增仍从主键的最大值开始。•主键或唯一键有冲突时的更新操作•替换如果存在冲突则替换不存在冲突则插入。•一个表中只能有一个主键一个主键可以包含多个列•复合主键由多个列共同组成的主键主键是否冲突以多个列的组成进行判定。6.FOREIGN KEY 外键约束举例•创建班级表(主表)并初始化数据•重构学生表(从表)加入外键约束create table class ( id bigint primary key auto_increment, name varchar(20) not null );# 创建外键约束 class_id bigint, foreign key (class_id) references class(id)•查看表结构class_id列的Key 属性值为MUL表示该列已成功添加外键约束。•正常向从表中插入数据班级编号在主表中存在插入成功。•插入班级Id为NULL的记录可以成功表示当前学生还没有分配班级。•删除主表前请先处理依赖关系可选择删除从表或解除所有外键约束或清空从表数据。解除所有外键约束清除从表数据7.CHECK 约束