一.非空约束(not null)
1.创建表时进行非空约束
create table student(
son char(5),
sname varchar(10) not null
);
2.创建表完后添加或删除非空约束
alter table student modify sname varchar(10); -- 删除非空约束
alter table student modify sname varchar(10); -- 添加非空约束
3.注意事项
默认允许字段为空
二.唯一约束(unique)
1.创建表时添加唯一约束
create table student(
son char(5) unique,
sname varchar(10)
);
2.创建表完后添加或删除唯一约束
alter table student drop index son; -- 删除唯一约束
alter table student modify son char(5) unique; -- 添加唯一约束
3.注意事项
使用唯一约束的字段只允许存在一个NULL值,如果再有NULL值将不满足唯一约束。
三.主键约束(primary key)
1.创建表时添加主键约束
create table student(
son char(5) primary key, -- 将学号设置为主键
sname varchar(10)
);
2.创建表完后添加后删除唯一约束
alter table student drop primary key; -- 删除主键约束
alter table student modify son char(5) primary key; -- 添加主键约束
3.注意事项
使用主键约束的字段满足非空且唯一,且一张表只有一个主键。
4.自动增长(auto_increment)
如果某一个字段时数字类型的,可以使用auto_increment实现值的自增长。一般配合主键使用。
(1)创建表时添加自动增长
create table course(
con int primary key auto_increment,
cname varchar(10)
);
(2)创建表完后添加或删除自动增长
alter table course modify con int; -- 删除自动增长,注意这样无法删除主键
alter table course modify con int auto_increment; -- 添加自动增长
四.外键约束(foreign key)
1.创建表时添加外键约束
/*
创建班级表
*/
create table class(
id int primary key,
className varchar(10), -- 班级名称
classLocation varchar(10) -- 班级所在校区
);
/*
创建学生表关联班级表
*/
create table student(
son char(5) primary key,
sname varchar(10),
class_id int, -- 外键列
constraint stu_cls_fk foreign key (class_id) references class(id) -- 关联
);
2.创建表完后添加或删除外键约束
alter table student drop foreign key stu_cls_fk; -- 删除外键
alter table student add constraint stu_cls_fk foreign key (class_id) references class(id); -- 添加外键
3.注意事项
外键的主要作用是使表互相关联,保证数据的正确性。添加了外键的表将不能随意的添加或删除数据。
4.级联操作
使相互关联的表之间的数据可以同步更新
(1)创建表时添加级联更新(on update cascade)和级联删除(on delete cascade),这两个操作可以同时添加也可以分开添加
/*
创建班级表
*/
create table class(
id int primary key,
className varchar(10), -- 班级名称
classLocation varchar(10) -- 班级所在校区
);
/*
创建学生表并关联班级表同时设置级联
*/
create table student(
son char(5) primary key,
sname varchar(10),
class_id int,
constraint stu_cls_fk primary key (class_id) references class(id) on update cascade on delete cascade; -- 关联同时设置级联
);
(1)创建完表后添加级联更新和级联删除
/*
添加级联:首先需要删除外键,然后再添加外键的同时设置级联
删除级联:删除外键,再添加外键时不设置级联即可
*/
alter table student drop foreign key stu_cls_fk;
alter table student add constraint stu_cls_fk primary key (class_id) references class(id) on update cascade on delete cascade; -- 添加级联
以上即使关于MySQL约束部分的基础知识整理,如有错误还请批评指正。