mysql数据库主键约束

约束实际上就是给表中的数据添加限制条件

例如:我们的身份证号,学号,在一张表中是不能够重复的,又比如有时候填表的重要信息是不能够为空的,比如手机号,住址等等

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;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值