学习这一部分之前先去回顾一下之前的基础知识哦!!!
这里写目录标题
- 关联关系
- 关联关系分类
- 关联关系的创建
- 关联查询
- 等值连接
- 内连接
- 外连接
- 左连接
- 右连接
关联关系
指一个业务中创建的表与表之间的关系。其关联关系有一下几种:
关联关系分类
- 一对一:有AB两张表,A表中的一条数据对应着B表中的一条数据,同时,B表中的一条数据也只对应着A 表中的一条数据。(比如:一个男生只有一个女朋友,他女朋友也只有他一个男朋友)
- 一对多:有AB两张表,A表中的一条数据对应着B表中的多条数据,但是,B表中的一条数据只对应着A 表中的一条数据。(比如:一位同学一个阶段只会在一个班级,但一个班级里却有多位同学)
- 多对多:有AB两张表,A表中的一条数据对应着B表中的多条数据,而且,B表中的一条数据也对应着A 表中的多条数据。(比如:一个老师有多位学生,一位学生也有多个老师)
关联关系的创建
- 一对一:在AB两张表的任意一张表中创建一个关系字段,用于指向另一张表的主键。
- 一对多:在“多关系”的表中创建一个关系字段,用于指向“单一关系”表中的主键。(如在员工表中创建部门id字段指向部门表的主键)
- 多对多:需要单独创建一个关系表用于保存两张表的关系,该关系表只有两个字段,分别指向两个表的主键。
关联查询
查询具有关联关系的表中的数据信息。其查询方式有一下几种:
等值连接
查询两张表的交集部分。
格式:select 字段名 from A表,B表 where 关联关系 and 查询条件。
//查询工资高于2000的员工的姓名和对应的部门名
select emp.name,dept.name from emp,dept where emp.dept_id=dept.id and sal>2000;
//查询程序员和销售的姓名,工资,部门名,部门地点
select emp.name,sal,dept.name,loc from emp,dept where emp.dept_id=dept.id and job in("程序员","销售");
内连接
查询两张表的交集部分,和等值连接一样,但相同条件下推荐使用内连接。
格式:select 字段名 from A表 join B表 on 关联关系 where 条件
//查询工资高于2000的员工的姓名和对应的部门名
select emp.name,dept.name from emp join dept on emp.dept_id=dept.id where sal>2000;
//查询程序员和销售的姓名,工资,部门名,部门地点
select emp.name,sal,dept.name,loc from emp join dept on emp.dept_id=dept.id where job in("程序员","销售");
外连接
查询一张表的全部信息及两张表的交集部分。
左连接
格式: select 字段名 from A表 left join B表 on 关联关系 where 其它条件;
查询join之前的表(左边表)的全部信息及两张表的交集部分
//查询所有员工姓名和对应的部门名
select emp.name,dept.name from emp left join dept on emp.dept_id=dept.id ;
右连接
格式: select 字段名 from A表 right join B表 on 关联关系 where 其它条件;
查询join之后的表(右边表)的全部信息及两张表的交集部分
//查询所有部门名和地址以及员工的姓名
select emp.name,dept.name,loc from emp right join dept on emp.dept_id=dept.id;
结束啦!多练习,多测试。。。。。