更多Java全套学习资源均在专栏,持续更新中↑↑戳进去领取~
- ????MySQL的安装及登陆基本操作(附图)手把手带你安装
- ????MySQL基础:通过SQL对数据库进行CRUD
- ????MySQL基础:通过SQL对表、数据进行CRUD,万字实际案例手把手教程
- ????MySQL高级:掌握约束的使用
- ????MySQL高级:掌握表关系及建表原则
上面内容学习了吗?学完了记得打钩✔哦!
mysql高级
今日目标
- 重点掌握多表查询操作
一、多表查询
多表查询顾名思义就是从多张表中一次性的查询出我们想要的数据。我们通过具体的sql给他们演示,先准备环境
执行下面的多表查询语句
结果如下:
从上面的结果我们看到有一些无效的数据,如 孙悟空
这个员工属于1号部门,但也同时关联的2、3、4号部门。所以我们要通过限制员工表中的 dep_id
字段的值和部门表 did
字段的值相等来消除这些无效的数据,
执行后结果如下:
上面语句就是连接查询,那么多表查询都有哪些呢?
- 连接查询
- 内连接查询 :相当于查询AB交集数据
- 外连接查询
- 左外连接查询 :相当于查询A表所有数据和交集部门数据
- 右外连接查询 : 相当于查询B表所有数据和交集部分数据
- 子查询
二、 内连接查询
- 语法
内连接相当于查询 A B 交集数据
- 案例
- 隐式内连接
执行上述语句结果如下:
- 查询 emp的 name, gender,dept表的dname
执行语句结果如下:
- 显式内连接
执行结果如下:
三、 外连接查询
- 语法
左外连接:相当于查询A表所有数据和交集部分数据
右外连接:相当于查询B表所有数据和交集部分数据
- 案例
- 查询emp表所有数据和对应的部门信息(左外连接)
执行语句结果如下:
- 查询dept表所有数据和对应的员工信息(右外连接)
执行语句结果如下:
四、子查询
- 概念
查询中嵌套查询,称嵌套查询为子查询。
什么是查询中嵌套查询呢?我们通过一个例子来看:
需求:查询工资高于猪八戒的员工信息。
来实现这个需求,我们就可以通过二步实现,第一步:先查询出来 猪八戒的工资
第二步:查询工资高于猪八戒的员工信息
第二步中的3600可以通过第一步的sql查询出来,所以将3600用第一步的sql语句进行替换
这就是查询语句中嵌套查询语句。
- 子查询根据查询结果不同,作用不同
- 子查询语句结果是单行单列,子查询语句作为条件值,使用 = != > < 等进行条件判断
- 子查询语句结果是多行单列,子查询语句作为条件值,使用 in 等关键字进行条件判断
- 子查询语句结果是多行多列,子查询语句作为虚拟表
- 案例
- 查询 ‘财务部’ 和 ‘市场部’ 所有的员工信息
- 查询入职日期是 ‘2011-11-11’ 之后的员工信息和部门信息
五、 案例
- 环境准备:
- 需求
- 查询所有员工信息。查询员工编号,员工姓名,工资,职务名称,职务描述
- 查询员工编号,员工姓名,工资,职务名称,职务描述,部门名称,部门位置
- 查询员工姓名,工资,工资等级
- 查询员工姓名,工资,职务名称,职务描述,部门名称,部门位置,工资等级
- 查询出部门编号、部门名称、部门位置、部门人数