MySQL 基础 4 多表设计之外键约束

1.1 约束

1.1.1 约束的作用

  约束是用来保证数据的完整性。

1.1.2 单表约束

  • 主键约束
  • 唯一约束
  • 非空约束

1.1.3 多表约束

  • 外键约束:用来保证数据完整性(多表之间)。

1.2 演示外键约束作用

1.2.1 创建一个部门表

create table dept(
    did int primary key auto_increment,
    dname varchar(20)
);
insert into dept values (null,'市场部');
insert into dept values (null,'人事部');
insert into dept values (null,'教研部');

1.2.2 创建一个员工表

create table employee(
    eid int primary key auto_increment,
    ename varchar(20),
    salary double,
    birthday date,
    sex varchar(10),
    dno int
);

insert into employee values (null,'张三',8000,'1988-09-01','男',3);

insert into employee values (null,'李四',9000,'1988-09-01','男',1);

insert into employee values (null,'王五',6000,'1988-09-01','男',2);

insert into employee values (null,'赵六',10000,'1988-09-01','男',3);

insert into employee values (null,'孙七',10000,'1988-09-01','男',1);

1.2.3 删除其中的某个部门(是否可以)

  • 查看数据

  • MySQL 基础 4 多表设计之外键约束_第1张图片
    查看数据.png
  • 向员工表中插入一条记录(没有部门)
    • insert into employee values (null,'田八',10000,'1988-09-01','男',null);
  • 删除一个人事部
    • delete from dept where did = 2;

  向刚才做的这两个操作(插入一个没有部门的员工,删除一个带有员工的部门)。这种情况都是不应该发生。这个时候需要在多表之间添加外键约束。

1.3 添加外键约束

1.3.1在员工表上添加外键

  • alter table employee add foreign key (dno) references dept(did);

  • 在员工表上添加外键.png

1.3.2设置外键为非空

  • alter table employee modify dno int not null;

  • 设置外键为非空.png

你可能感兴趣的:(MySQL 基础 4 多表设计之外键约束)