Mysql 主键约束PrimaryKey

Mysql 主键约束Primary Key

今天来简单的讲一下主键约束。
假如有一张学生信息表,里面记录了学生的学号 ,姓名,成绩等,那么,会不会有两个学号相同的学生,答案肯定是否定的,如果有的话也只能是插入信息的时候犯下的错误,那么我们如何去避免这种错误呢,这时候,primary key就发挥作用了。

下面我们创建一个stu_inform 表

create table stu_inform(
    id int,
    name varchar(20),
    grade double,
    primary key(id)
);

这样的话我们就为id 加上了主键约束,我们来插入一个错误的信息

insert into stu_inform values(1,'张三',100.00),(1,'李四',100.00); -- Error

如果是这样插入的话环境会报出一个错误,这个错误正是主键约束的作用。

但是如果你也想让姓名也不能相同,你可能会这样写

create table stu_inform(
    id int,
    name varchar(20),
    grade double,
    primary key(id,name)
);

接下来我们插入一个数据

insert into stu_inform values(1,'张三',100.00),(1,'李四',100.00);

你会发现这条语句是完全可行的,是完全没有错误的,这是为什么呢,这是因为这是一个联合主键,它的作用是id不能重复 且 姓名也不能重复,注意是且。

你如果这样写的话

insert into stu_inform values(1,'张三',100.00),(1,'张三',100.00);//Error

你如果这样写的话就是大错特错了,因为这违反了联合主键。因为id和姓名同时相同了就是这个道理。

那么要怎样才能实现id不能相同,同时姓名也不能相同呢,这就是下一篇要讲的unique的作用了。

转载于:https://www.cnblogs.com/haodawang/p/5967222.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值