mysql入门到精通005-基础篇-约束

mysql入门到精通005-基础篇-约束_第1张图片

1、概述

1.1 概念

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

1.2 目的

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

1.3 常见的约束分类

mysql入门到精通005-基础篇-约束_第2张图片

  • 一旦谈到外键,则至少涉及2张表
  • 约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束

2、演示

2.1 案例

案例1: 根据需求完成表结构的创建(关注约束条件)

mysql入门到精通005-基础篇-约束_第3张图片

创建表结构: 

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 "用户表"

插入数据:

insert into user(name,age,status,gender) values ("tom1",19,"1","男"),("kity",29,"0","女")
// 没有传status参数,这个时候会默认取1
insert into user(name,age,gender) values ("tom1",19,"男")

mysql入门到精通005-基础篇-约束_第4张图片

2.2 总结

记住约束的关键字即可

3、外键约束

3.1 概念

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

(具有外键的表被称为子表(从表),外键所关联的表被称为父表(主表))

eg.如员工表和部门表之间的关联。

mysql入门到精通005-基础篇-约束_第5张图片

注:目前上述的两张表,在数据库层面,并未建立外键关联,所以是无法保证数据的一致性和完整性的。(影响:如删除或则update主表记录后,从表不会进行更新

3.2 语法

3.2.1 添加外键

<1>  创建表时,添加外键语法

CREATE TABLE 表名(
         字段名 数据类型,
         ...
         [CONSTRAINT] [外键名称] FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名)
  ); 

<2> 更新表时,添加外键语法

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCES 主表(主表列名);

外键名称是自定义的变量,名字可以自己命名。

alter table emp add contraint fk_emp_dept_id foreign key (dept_id) references dept(id);
mysql入门到精通005-基础篇-约束_第6张图片
3.2.2 删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名;
alter table drop foreign key fk_emp_dept_id;

4、外键删除更新行为

4.1 应用场景

如果我想在主表删除记录时候,从表也对应删除对应外键的记录,这个时候就可以使用外键的删除更新行为。(如员工表和部门表,一对多的关系,删除主表部门表一条记录时,可能对应删除多个从表员工表的多条记录)

4.2 外键删除更新行为分类

mysql入门到精通005-基础篇-约束_第7张图片

alter table emp add constranint fk_emp_dept_id foreign key(dept_id) references dept(id) on update cascade on delete cascade;

5、小结

mysql入门到精通005-基础篇-约束_第8张图片

你可能感兴趣的:(mysql,mysql,数据库)