约束

一.概述

1.概念

约束是作用与表中字段上的规则,用于限制存储在表中的数据。

2.目的

保证数据库中数据的正确性,有效性和完整性。

3.分类

请添加图片描述

1.非空约束 not null

2.唯一约束 unique

3.主键约束 primary key

4.默认约束 default

5.检查约束 check

6.外键约束 foreign key

注意:约束是作用与表中字段上的,可以在创建/修改表的时候添加约束。

二、演示

1.创建有约束的表结构

(1)表结构的示例:

create table user
(
    id int primary key auto_increment comment '主键',
    name varchar(10) not null unique comment '姓名',
    age int check(age>0 and age<=120) comment'年龄',
    status char(1) default '1' comment '状态',
    gender char(1) comment '性别'
)comment '用户表';

id 后面的 auto_increment 表示这个id是自增的,数据库自动维护,不用输入。

(2)插入数据:

insert into user(name,age,status,gender) values('tom1',19,'1','男');
insert into user(name,age,status,gender) values('tom2',25,'0','男');
insert into user(name,age,status,gender) values('tom3',20,'1','男');

三、外键约束

1.概念

外键用来让两张表的数据之间建立连接,从而保证数据的一致性完整性

2.示例

请添加图片描述

注意:目前上述的两张表中,在数据库层面,并未建立外键关联,所以是无法保证数据的一致性和完整性的

未建立外键关联:即——>修改父表,不会改变子表。

(1)创建表结构

create table dept(
    id int auto_increment comment 'ID' primary key,
    name varchar(50) not null comment '部门名称'
)comment '部门表';
create table emp(
    id int auto_increment comment 'ID' primary key,
    name varchar(50) not null comment '姓名',
    age int comment '年龄',
    job varchar(20) comment '职位',
    salary int comment '薪水',
    dept_id int comment '部门id'
)comment '员工表';

(2)添加外键约束的语法

alter table 表名 add constraint 外键名称 foreign key(外键字段名) references 主表(主表列名)

(3)创建表时添加外键约束语法:

create table 表明(
	字段名 数据类型,
    ……
    [constraint] 外键名称 foreign key(外键字段名) references 主表(主表列名)
);

3.外键如何保证数据的完整和一致

子表添加了父表的外键后,父表中被子表外键关联的数据由于子表外键的约束,而不能修改,这就保证了子表和父表数据的完整和统一。

4.删除/更新行为

请添加图片描述

主要介绍四种:

(1)restrict:拒绝对主表的更新删除操作

(2)no action:同restrict

(3)cascade:在主表b中删除或更新时,会自动删除或更新从表a中对应的记录

(4)set null:在主表b中删除或更新时,将子表中该外键的值设置为null

5.删除/更新行为的代码

alter table 表明 add constraint 外键名称 foreign key (外键字段) preferences 主表名(主表字段名) on update cascade on delete cascade;

on update 在更新时怎么操作

on delete 在删除时怎么操作

四、小结

1.非空约束:not null

2.唯一约束:unique

3.主键约束:primary key——>既是非空,又是唯一的 (自增 auto_increment)(只在mysql中有这个命令)

4.默认约束:default

5.检查约束:check

6.外键约束:foreign key

学习内容来源地址