今天和大家一起学习分享一下MySQL的四大约束,好啦,直接开始吧!
第一个约束:非空约束 not null
那我们怎么创建非空约束呢?
1、可以在创建表时,添加约束
现在我们添加一条数据,如果name不给值,看看能否添加成功?
说明我们添加的非空约束起作用了。2、如果需要删除约束,我们可以这样:
ALTER table stu MODIFY name VARCHAR(20);
执行删除约束之后,我们再试一下插入空地name值
3、创建表完之后,添加非空约束
ALTER table stu MODIFY name VARCHAR(20) NOT NULL;
第二个约束:唯一约束 unique,表示值不能重复,也叫唯一索引
1、我们来创建一张表,我们在创建表的时候,添加唯一约束
我们来添加两条重复的数据看看
我们发现提示 phone 字段出现了重复,所以证明添加的唯一约束是有效的
那么我们来思考一下,如果插入两条数据,phone那一列是空的,这个时候可以吗?我们来看看:
我们发现是可以的
注意:在mysql中,唯一约束限定的值可以有多个null
2、那么我们怎么把唯一约束删除呢?
我们可以使用这个sql:
ALTER TABLE stu1 DROP INDEX phone;
删除完了之后,就可以插入重复的数据啦!
3、我们也可以在创建表之后,创建唯一约束
ALTER TABLE stu1 MODIFY phone VARCHAR(20) UNIQUE;
第三个约束:主键约束 primary key
我们来介绍一下主键约束的特点:
主键约束表示 非空且唯一一张表只能有一个字段为主键主键就是表中记录的唯一标识1、接下来,我们来在创建 表时添加一个主键
CREATE TABLE stu1(
id INT PRIMARY KEY, -- 添加主键约束
name VARCHAR(10)
)
插入空的数据和重复的数据看看:
说明主键是非空且唯一的。
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));
第四个约束:外键约束 foreign key
我们先来新建一张表,并插入一些数据
我们看到表数据冗余
我们可以把他拆成两张表,解决方案如下:
-- 解决方案:分成 2 张表
-- 创建部门表(id,dep_name,dep_location)
一方,主表 department
-- 创建员工表(id,name,age,dep_id)
多方,从表 employee
向表中插入数据
思考一下:当我们在 employee 的 dep_id 里面输入不存在的部门,数据依然可以添加.但是并没有对应的部门,实际应用中不能出现这种情况。employee 的 dep_id 中的数据只能是 department 表中存在的 id。
所以这个时候就有了 外键约束
接下来我们来学习如何创建外键约束:
请记住是外键关联主表的主键,所以一定要分清,谁是主表,谁是从表。
1、在创建表时,添加外键约束
语法:
create table 表名(
...
外键列
constraint 外键名称 foreign key (外键列名) references 主表名称(主表列名称)
好啦,外键约束添加成功,我们来试一下,删除主表的一条数据,看能不能删除
我们发现不能删除,因为他与另外一张表是有关联的。
2、删除外键
ALTER TABLE 表名 DROP foreign key外键名称
3、创建表之后,添加外键
ALTER TABLE 表名 ADD constraint 外键名称foreign key (外键列名) references 主表名称(主表列名称);
好了,今天就和大家介绍到这里,byebye