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

一,约束

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

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

        分类:

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

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

字段名字段含义字段类型约束条件
idID唯一标识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 '学生表'

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

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

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

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

        假设我们现在有两张表分别为emp表:

        和dept表 

        那么这两张表中我们可以看到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父表有变更时,子表将外键列设置成一个默认的值

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值