MySQL学习——约束
1.非空约束:not null
作用:约束的字段不能为空
eg: drop table if exists student;
create table vip(
id int not null, //即字段id不可以为NULL
name varchar(255)
)
insert into vip(id,name) values(1,'chai'); //正确插入
insert into vip(name) values('chai'); //无法正常插入数据,因为id字段设置了不能为空
2.唯一性约束: unique
作用:unique约束的字段不能重复,但是可以为NULL;
eg:drop table if exists student;
create table student(
(1)=》》 id int unique, //即字段id不能够重复
name varchar(255),
(2)=》》 unique(id,name) //指的是id+name的联合字段不能重复,字段id和name都是可以单独重复的
)
insert into vip(id,name) values(1,'chai'); //正常插入数据
insert into vip(id,name) values(1,'chai'); //无法正常插入数据,因为id字段设置了不能重复
insert into vip(name) values('chai'); //可以正常插入数据,因为id虽然不能重复但是可以为空
(1)约束在后方,属于“列级约束”
(2)约束在前方,属于“表级约束”,id+name的组合具有唯一性,但是name具有唯一性,email具有唯一性。各自唯一。
3.主键约束: primary key (简称PK)
作用:其实primary key(PK) = unique + not null;
主键字段:被添加主键约束的字段,被称为主键字段;
主键值:主键字段中的每一个值都叫做主键值;(不能是null,也不能重复)
注:(1)任何一张表都应该有主键值,主键值是每一行记录的唯一标号(身份证明),如果没有主键值,表就没有意义 (2)一张表,主键约束只能添加1个;(主键值只有一个)
(3)不提倡联合(复合)主键; eg:primary key(id,name)这是不提倡的;
(4)为了确保主键的安全性,使用“auto_increment”表示自增,从1开始,以1递增;
4.外键约束:foreign key(简称FK)
作用:外键约束用于表与表之间的联系
eg:drop table if exists class;
drop table if exists student;
creat table class(
cla_no int primary key,
cla_name varchar(255)
)
creat table student(
stu_no int primary key,
stu_name varchar(255),
stu_cno int
foreign key(cno) references class(cla_no) //表示student中的stu_cno作为外键字段,与表class中的cla_no进行外键约束,也就是stu_cno的值只能是cla_no中的数据,不能为另外的数据。
)
注:子表中的外键引用的父表中的某个字段,被引用的这个字段不一定是主键,但至少具有unique约束(即cla_no不一定为主键,但至少为nuique约束);
外键值可以为null(即stu_no可以为null)
5.检查约束:check(mysql不支持,oracle支持)