MySql从零开始学习笔记(三)
MySql约束
含义:一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性。
分类:六大约束
1.NOT NULL :非空,用于保证该字段的值不能为空。
2.DEFAULT:默认值,用于保证该字段有默认值。
3.PRIMARY KEY:主键,用于保证该字段的值具有唯一性并且非空。
4.UNIQUE:唯一,用于保证该字段的值具有唯一性,可以为空。
5.CHECK:检查约束(MySql不支持),检查字段的值是否为指定的值。
6.FOREIGN KEY:外键,用于限制两个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某些的值。
创建约束:
①建表时创建
列级
create table if not exists t_stuinfo(
id int primary key, #主键
stuName varchar(20) not null, #非空
gender char(1) check(gender='男' or gender='女'), #检查约束,MySql没有效果但不报错
seat int unique, #唯一约束
age int default 18, #默认(值)约束
majorId int references major(id) #外键约束,MySql没有效果,但不报错
);
表级
create table if not exists t_stuinfo(
id int,
stuName varchar(20),
gender char(1),
seat int,
age int,
majorId int,
constraint pk primary key(id), #约束名随意,主键不生效,但不报错。
constraint uq unique(seat), #唯一约束
constraint ck check(gender='男' or gender='女'), #检查约束,MySql不支持此约束,不报错但不生效
constraint fk_stuinfo_major foreign key(majorId) references major(id) #外键约束
);
②修改表时创建
1.添加非空约束
1 alter table 表名称 modify column 列名 列类型 not null;
2.添加默认约束
1 alter table 表名称 modify column 列名 列类型 default 默认值;
3.添加主键
①列级约束方式
1 alter table 表名称 modify column 列名 列类型 primary key;
②表级约束方式
1 alter table 表名称 add primary key(id);
4.添加唯一
①列级约束
1 alter table 表名称 modify column 列名 列类型 unique;
②表级约束
1 alter table 表名称 add unique(列名称);
5,添加外键(列级写法可行,但无效果)
1 alter table 表名称 add constraint fk_stuinfo_magor foreign key(magorId) references major(id);
删除约束:
1.删除非空约束
1 alter table 表名称 modify column 列名 列类型 [null];
2.删除默认约束
1 alter table 表名称 modify column 列名 列类型;
3.删除主键
①
1 alter table 表名称 modify column id int;
②
1 alter table 表名称 drop primary key;
4.删除唯一
1 alter table 表名称 drop index(索引名) 设置唯一时的名称;
5.删除外键
1 alter table 表名称 drop foreign key(索引名) 设置外键时的名称;