mysql唯一约束的特点_你知道MySQL的约束吗?为你盘点MySQL四大约束的用法和注意事项...

今天和大家一起学习分享一下MySQL的四大约束,好啦,直接开始吧!

5b50427159b0242b09fac9e883e8f975.png

第一个约束:非空约束 not null

那我们怎么创建非空约束呢?

1、可以在创建表时,添加约束

1efdf5db2ee889c430e7513611c7c34f.png

现在我们添加一条数据,如果name不给值,看看能否添加成功?

37322c1515da92206243070882e86a44.png

说明我们添加的非空约束起作用了。2、如果需要删除约束,我们可以这样:

ALTER table stu MODIFY name VARCHAR(20);

执行删除约束之后,我们再试一下插入空地name值

eafa07eb46cad2e63e8ebb8e128d27a2.png

3、创建表完之后,添加非空约束

ALTER table stu MODIFY name VARCHAR(20) NOT NULL;

第二个约束:唯一约束 unique,表示值不能重复,也叫唯一索引

1、我们来创建一张表,我们在创建表的时候,添加唯一约束

0712816ecc48b84042a55f59395fd0ab.png

我们来添加两条重复的数据看看

eda500e112fc63bf83a595b239629e21.png

我们发现提示 phone 字段出现了重复,所以证明添加的唯一约束是有效的

那么我们来思考一下,如果插入两条数据,phone那一列是空的,这个时候可以吗?我们来看看:

57c522fe6f78291d9dbeae1b774e50be.png

我们发现是可以的

注意:在mysql中,唯一约束限定的值可以有多个null

02f408a44ccbaa45ca2f57f3c2562419.png

2、那么我们怎么把唯一约束删除呢?

我们可以使用这个sql:

ALTER TABLE stu1 DROP INDEX phone;

ad7f58c7b8cfc1dd8c102a4fff52504e.png

38c83e2aed61b3f35ae7991a1761912e.png

删除完了之后,就可以插入重复的数据啦!

c9b2af6ef9e35a8541e80649d82a943d.png

3、我们也可以在创建表之后,创建唯一约束

ALTER TABLE stu1 MODIFY phone VARCHAR(20) UNIQUE;

a358e8606ffb78dd540668ba4012022b.png

第三个约束:主键约束 primary key

我们来介绍一下主键约束的特点:

主键约束表示 非空且唯一一张表只能有一个字段为主键主键就是表中记录的唯一标识1、接下来,我们来在创建 表时添加一个主键

CREATE TABLE stu1(

id INT PRIMARY KEY, -- 添加主键约束

name VARCHAR(10)

)

5103e08823b2b8a4368b6f8771222a9c.png

插入空的数据和重复的数据看看:

13d757459c9ce059a4ead2afb915c347.png

ef259467223311b6490051bfc1232eba.png

说明主键是非空且唯一的。

2、下面我们来删除掉主键:ALTER TABLE stu2 DROP PRIMARY KEY

3、我们也可以在创建表之后,来添加主键:

ALTER TABLE stu2 MODIFY id INT PRIMARY KEY;

4、自增主键

如果某一列是数值类型的,使用 auto_increment 可以来完成值得自增长。

create table stu3(

id int PRIMARY key auto_increment,

name VARCHAR(20));

81335009f127ddca6796175b652ac425.png

b788a911ffa9123d7ba136819dcb4ae0.png

第四个约束:外键约束 foreign key

我们先来新建一张表,并插入一些数据

bc3f32e2460c335c2f2f19cf08d365c7.png

我们看到表数据冗余

e073b3cb5578700dcd204b5c585c1783.png

我们可以把他拆成两张表,解决方案如下:

f15e0d12e34595e8cde9df9c631f7c20.png

-- 解决方案:分成 2 张表

-- 创建部门表(id,dep_name,dep_location)

一方,主表 department

-- 创建员工表(id,name,age,dep_id)

多方,从表 employee

c8166e611d837b3dab6ca691fb8d5b1d.png

向表中插入数据

3f2f760a9e4061a1ed9fa259c9b76d1e.png

思考一下:当我们在 employee 的 dep_id 里面输入不存在的部门,数据依然可以添加.但是并没有对应的部门,实际应用中不能出现这种情况。employee 的 dep_id 中的数据只能是 department 表中存在的 id。

所以这个时候就有了 外键约束

接下来我们来学习如何创建外键约束:

请记住是外键关联主表的主键,所以一定要分清,谁是主表,谁是从表。

1、在创建表时,添加外键约束

语法:

create table 表名(

...

外键列

constraint 外键名称 foreign key (外键列名) references 主表名称(主表列名称)

4df28e26ba8f1873706137eb16e5d91e.png

好啦,外键约束添加成功,我们来试一下,删除主表的一条数据,看能不能删除

fa8e3475b6672d93f994f4d988d98a6b.png

我们发现不能删除,因为他与另外一张表是有关联的。

2、删除外键

ALTER TABLE 表名 DROP foreign key外键名称

3、创建表之后,添加外键

ALTER TABLE 表名 ADD constraint 外键名称foreign key (外键列名) references 主表名称(主表列名称);

b67b32169db1964ba3b12ba08261baf2.png

好了,今天就和大家介绍到这里,byebye

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值