约束实际上就是给表中的数据添加限制条件
例如:我们的身份证号,学号,在一张表中是不能够重复的,又比如有时候填表的重要信息是不能够为空的,比如手机号,住址等等
1.主键约束
主键约束相当于 唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值。
每一个表中最多只允许出现一个主键(多个列可以合在一起,称为联合主键)
关键字:primary key
2.添加单列主键
方式1-语法:
create table 表名(
…
<字段名> <数据类型> primary key
…
)
方式1-实现:
create table emp1(
eid int primary key,
name varchar(20),
deptid int,
salary double
);
方法2-语法:
create table 表名(
…
[constraint <约束名> primary key [字段名]]
);
方法2-实现:
create table emp2(
eid int,
name varchar(20),
depid int,
salary double,
constraint pk1 primary key(eid)
);
– 主键的作用(以emp2)为例:
– 证明主键唯一性
insert into emp2(eid,name,depid,salary) values(1001,‘张三’,10,5000);
Affected rows: 1
时间: 0.003s
insert into emp2(eid,name,depid,salary) values(1001,‘李四’,20,6000);
1062 - Duplicate entry ‘1001’ for key ‘emp2.PRIMARY’
时间: 0s
insert into emp2(eid,name,depid,salary) values(1002,‘李四’,20,6000);
Affected rows: 1
时间: 0.002s
证明主键具有唯一性,不能出现两个1001
– 证明主键非空
insert into emp2(eid,name,depid,salary) values(null,‘王五’,20,6000);
1048 - Column ‘eid’ cannot be null
时间: 0s
证明主键不能为空
3.添加多列联合主键
– 注意:当添加联合主键的时候,不能像单列主键那样直接在字段名后面声明主键约束
一张表只能有一个主键,联合主键也是一个主键
语法:
create table 表名(
…
primary key (字段1,字段2,字段3,…)
…
);
实现:
create table emp3(
name varchar(20),
deptid int,
salary double,
primary key(name,deptid)
);
当成为联合主键时,他是一个整体,就比如,此时name,deptid为联合主键
插入第一条数据为:张三,20,5000
第二条数据为:张三,20,6000 --------->那么此时这条数据不能插入
第三条数据为:张三,10,5000 --------->可以插入
第四条数据为:李四,20,5000 --------->可以插入
即只有当name和deptid两个字段同时与之前记录重复时,才会报错
而当作为联合主键的任意一个字段为null时都会报错。
通过修改表结构添加主键
– 语法
create table 表名(
…
);
– 实现
create table emp4(
eid int,
name varchar(20),
deptId int,
salary double
);
alter table emp4 add primary key(eid); --------------->联合主键类似,添加多个字段名即可
4.删除主键
格式:
alter table <数据名> drop primary key ;
实现:
– 删除单列主键
alter table emp1 drop primary key;
– 删除联合主键
alter table emp3 drop primary key;