MySQL基础-002-数据库多表设计

数据库多表设计


一、多表设计之外键约束
⒈ 约束
⑴ 约束的作用
约束是用来保证数据的完整性。
⑵ 单表约束
主键约束、唯一约束、非空约束。
⑶ 多表约束
外键约束:用来保证数据完整性(多表之间)。
⒉ 演示外键约束作用
⑴ 创建一个部门表

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,'教研部');

⑵ 创建一个员工表

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);

⑶ 删除其中的某个部门(是否可以)
查看数据



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


⑵ 设置外键为非空


二、 多表设计之表关系的介绍
⒈  一对多的关系
一对多的例子:一个部门下可以有多个员工,一个员工只能属于某一个部门。
⒉  多对多的关系
多对多的例子:一个学生可以选择多门课程,一门课程可以被多个学生选择。
⒊ 一对一的关系
一对一的例子:一个公司可以有一个注册地址,一个注册地址只能对一个公司。


三、多表设计之一对多关系
 一对多关系的建表原则

在多的一方创建外键指向一的一方的主键


四、多表设计之多对多
⒈ 多对多的关系介绍
一个学生选择多门课程,一门课程被多个学生所选择
⒉ 多对多的建表的原则

需要创建中间表,中间表中至少两个字段,分别作为外键指向多对多双方的主键


五、多表设计之一对一关系
⒈  一对一关系的介绍
一个公司可以对应一个注册地址,一个注册地址只能对应一个公司
⒉  一对一关系建表原则


六、多表设计之多表分析及创建
⒈ 多表的分析
需求:完成一个学校的选课系统,在选课系统中包含班级,学生和课程这些实体。
班级和学生之间是有关系存在:一个班级下包含多个学生,一个学生只能属于某一个班级(一对多的关系)。
学生和课程之间是有关系存在:一个学生可以选择多门课程,一门课程也可以被多个学生所选择(多对多的关系)。
⒉ 多表的创建
创建表:


七、多表查询之多表查询的概述
多表查询的分类
⒈ 连接查询


⒉ 子查询
子查询:一个查询语句条件需要依赖另一个查询语句的结果。


八、多表查询之数据准备
⒈ 班级表数据的准备


⒉ 学生表数据的准备


⒊ 课程表数据的准备


⒋ 学生选课表的准备


九、多表查询之交叉连接
交叉连接
⒈ 使用cross join关键字


⒉ 不使用cross join关键字


十、多表查询之内连接
⒈ 显示内连接


⒉ 隐式内连接


十一、多表查询之外连接
⒈ 左外连接


⒉ 右外连接


十二、多表查询之内连接与外连接的区别
内连接和外连接的区别如下图:


十三、多表查询之子查询
⒈ 带in的子查询
查询学生生日在91年之后的班级的信息。


⒉ 带exists的子查询
查询学生生日大于91年1月1日,如果记录存在,前面的SQL语句就会执行。


⒊ 带any的子查询


⒋ 带all的子查询


十四、多表查询之练习

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章