小蔺的米哈游数据分析师之路——MYSQL约束篇

一,约束

        概念:约束是作用于表中的字段上的规则,用于限制存储表中的数据

        目的:保证数据库中数据的正确,有效和完整

        分类:

约束 描述 关键字
非空约束 限制该字段的数据不能为null NOT NULL
唯一约束 保证该字段所有的数据都是唯一,不重复的 UNIQUE
主键约束 主键是一行数据的唯一标识,要求非空且唯一 PRIMARY KEY
默认约束 保存数据时,如果为指定该字段的值,则采用默认值 DEFAULT
检查约束 保证字段值满足某一条件 CHECK
外键约束 用来让两张表的数据之间建立连接,保证数据的一致性和完整性 FOREIGN KEY

        就如同我们呢目前需要来创建一张表,其中包含的信息有:

字段名 字段含义 字段类型 约束条件
id ID唯一标识 int 主键,自动增长
name 姓名 varchar(10) 非空,且唯一
age 年龄 int 大于0,小于120
status 状态 char(1) 默认值为1
gender  姓别 char(1)

                那我们如何创建这张表呢,只需要输入以下内容,我们这里创建一个名为nice的表,运行后我们就可以来查看下我们的表结构了:

create table nice(
	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 '学生表'

小蔺的米哈游数据分析师之路——MYSQL约束篇_第1张图片

        我们可以看到我们目前已经实现了我们所想要的功能了,当然如果大家感兴趣的话,也可以尝试插入一些数据来 验证下我们的结果是否真实,当然在这里我们就不做多的演示

        需要我们着重讲解的是我们现在这里着重需要讲的就是外键约束

        首先我们先来看下什么是外键:

        他的概念为:外键是用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。

        假设我们现在有两张表分别为emp表:小蔺的米哈游数据分析师之路——MYSQL约束篇_第2张图片

        和dept表小蔺的米哈游数据分析师之路——MYSQL约束篇_第3张图片 

        那么这两张表中我们可以看到emp表的dept_id为这张表的外键,dept表中id为这张表的主键,并且这两张表之间由这个主键和外键联系起来了,所以我们就可以称这两张表存在主键外键关联,并且我们将此关联中主键所在的表称为父表,外键所在的表称为子表或者从表。

        那我们首先先创建此表,

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 '薪资',
	entrydate date  COMMENT '入职时间',
	managerid int COMMENT '直属领导ID',
	dept_id int COMMENT '部门ID',
)		COMMENT '员工表';

        插入两张表以后,这时候我们可以看到我们两张表的ID列均为主键,那么我我们现在需要将dept表的id列与emp表的dept_id关联,那我们应该怎么做呢,我们可以输入

ALTER TABLE 
    emp 
ADD CONSTRAINT 
    fk_emp_dept_id foreign key (dept_id) 
REFERENCES 
    dept(id);

         这段文字代表我们在emp表中添加一个外键,外键名称为fk_emp_dept_id,添加在dept表中,并且我们外键对应的主键表为dept,对应主键表中的字段为id

        当然对应的删除外键的时候我们需要输入的就是

alter table emp drop foreign key fk_emp_dept_id;

        这样我们就可以删除掉emp表中的外键了

        当然我们创建外键的时候不但可以在我们创建表之后创建,我们也可以在创建表的过程中就创建好外键,这个大家有兴趣的话也可以自己尝试以下

        那创立好了外键我们这里继续来看外键约束

        外键约束,他会约束表的一些行为

行为 说明
NO ACTION 当父表中删除/更新对应记录时,首先检查该记录是否由对应外键,如果有则不允许更新/删除
RESTARICT 当父表中删除/更新对应记录时,首先检查该记录是否由对应外键,如果有则不允许更新/删除
CASCADE 当父表中删除/更新对应记录时,首先检查该记录是否由对应外键,如果有则更新/删除外键在子表中的记录
SET NULL 当在父表中删除对应记录时,首先检查该记录是否对应外键,如果有则设置子表中该外键值为null(要求外键允许null值)
SET DEAFULT 父表有变更时,子表将外键列设置成一个默认的值

        当然大家如果感兴趣的话,可以插入外键之后把这些实际使用以下看看

你可能感兴趣的:(小蔺数据分析师之路SQL篇,mysql,数据库)