MySQL约束

116 阅读2分钟

约束作用: 限制数据的插入和删除

主键约束

知识点:

主键约束关键词: primary key

主键约束特点: 限制主键键入的数据不能为空, 不能重复

建表的时候添加主键约束: create table 表名(主键名 主键类型 primary key, 其他字段...);

注意: 一个表中只能有一个主键

示例:

# 1.主键约束
# 特点: 数据不能为空不能重复
# 添加主键约束方式1: 先有表,再单独添加(了解)
alter table stu1 add primary key (id); # 报错,因为stu1中有重复数据以及空数据
truncate stu1; # 清除数据
alter table stu1 add primary key (id); # 执行成功
desc stu1;

# 添加主键约束方式2: 建表的时候直接添加(建议)
# 创建表
create table stu2(
    id int primary key ,
    name varchar(100),
    age int
);
# 查看表结构
desc stu2;
# 演示主键约束的特点: 限制对应数据不能重复不能为空
insert into stu2(id, name, age) VALUES (1,'张三',18); # 成功
insert into stu2(id, name, age) VALUES (1,'张三',18); # 报错,因为数据重复
insert into stu2(id, name, age) VALUES (2,'李四',28); # 成功
insert into stu2(id, name, age) VALUES (null,'王五',38); # 报错,因为数据是null
insert into stu2(id, name, age) VALUES (0,'王五',38); # 成功,id就是0

# 演示如何删除主键
alter table stu1 drop primary key;
# 查看表结构
desc stu1;
# 注意: 删除主键默认只删除了唯一约束,非空约束依然存在
# 如何删除非空约束? 使用change
alter table stu1 change id id int;

主键自增

自增关键字: auto_increment

自增特点: 默认从1 开始,每次自动加1
注意: 如果插入数据的时候制定了 主键字段, 可以使用 null 或者 0 展位表示自动使用自增

建表的时候添加主键自增约束: create table 表名(主键名 主键类型 primary key auto_increment , 其他字段...);  

非空约束

非空约束关键字: not null

非空约束特点: 限制对应数据不能为空null

建表的时候添加非空约束:  create table 表名(主键名 主键类型 primary key ,字段名 字段类型 not null , 其他字段...);

注意: 一个表中可以有多个非空约束

唯一约束

唯一约束关键字: unique

唯一约束特点: 限制对应的数据不能重复

建表的时候添加唯一约束:  create table 表名(主键名 主键类型 primary key ,字段名 字段类型 unique, 其他字段...);

注意: 一个表中可以有多个唯一约束

默认约束

默认约束关键字: default

默认约束特点: 可以提前给字段设置默认值

建表的时候添加默认约束:  create table 表名(主键名 主键类型 primary key ,字段名 字段类型 default 默认值, 其他字段...);

注意: 一个表中可以有多个默认约束