数据库Mysql_约束
将失败当作自己的老师,即使他会使自己难堪
----------陳長生.
1.什么是数据库约束
数据库约束是在数据库中对表中的内容设定条件或者规则,设置了这些规则能使得数据更具体有准确性,可靠性。
2.约束类型
NOT NULL | 设置列不能为空 |
UNIQUE | 设置列只能是该表中唯一的值 |
PRIMARY KEY | nut null与unique的结合,既不能为空并且是唯一值 |
FOREIGN KEY | 将主表内容与从表内容相关联 |
DEFAULT | 给设置列一个默认的值 |
CHECK | 给设置列限制一个输入的数据 |
3.NOT NULL 非空约束
定义列中不想为空时,可以为该列添加一个非空约束
create table if not exists student(
id bigint not null,
name varchar(20) not null
);
设置一个非空约束后,name列就不会添加一个非空的值进来了
可以看到,当我们插入null值时,系统就会报错,证明了我们当前的非空约束成功设置了。
4.UNIQUE 唯一约束
在很多场景下,我们需要一个唯一不重复的值,例如在学校中,两个人的名字可能会重复,但是他们的学号不会,如果学号也相同,那些后续的一些信息填入就会出现一些问腿,所以不重复的学号便是用来区分两个相同名字的同学,那么mysql中就给我们提供了这么一个约束。
create table if not exists student1(
id bigint unique,
name varchar(20) not null
);
但我们将id列添加一个唯一约束时,id中的值就不会重复了
我们可以成功插入两个不同的id列的值,但是插入一个重复的”002“id的值就报错,证明了该唯一约束设置成功。
5.PRIMARY KEY 主键约束
- 主键必须是唯一并且不为空的值
- 每个表中只有一个主键值,可以由单列或多列组成
create table if not exists student2(
id bigint primary key,
name varchar(20) not null
);
我们使用desc查看该表结构表
id的Key列中由PRI,说明主键 ”Primary key “生效
6.FOREIGN KEY 外键约束
- 外键约束用来定义主表与从表的关系
- 外键约束定义在从表上,主表关联的列必须是主键或者是唯一约束
主表(专业课表):
create table if not exists class(
id bigint primary key,
name varchar(20)
);
从表(学生表):
create table if not exists student3(
id bigint primary key,
name varchar(20),
class_id bigint,
foreign key (class_id) references class(id)
);
先声明外键约束哪从表中的哪一个列,然后再连接(references)主表中对应的主键值
关于删除:
建立连接的两个表不可以随意删除,若想删除,须先删除从表中的数据,再删除主表中的数据,否则删除会失败。
-- 正确删除顺序
delete from student3;
delete from class;
运行结果为成功~
7.DEFAULT 默认约束
默认约束就是在创建列时,给一个默认值,后续如果不给该列赋值,那么会按默认值输出。
create table if not exists student4(
id bigint primary key,
name varchar(20) not null,
age int default 18 —>设置该默认值为18
);
8.CHECK 限制约束
用于限制列中可以接受的值,确保数据的准确性与完整性
create table if not exists student5(
id bigint,
name varchar(20),
age int,
check(age>=16) -->限制age列中的数字必须大于16
);
当我们试图插入age为14的数据时,系统提示我们违反"chl_1"的规则,证明当前的check约束创建成功。