多表查询,子查询

  • 多表查询
  • 子查询
  • where子句中使用子查询
  • from后面嵌套子查询
  • 在select后面嵌套子查询


多表查询

找出每个员工的部门名称,工资等级
步骤:

  1. 先连接emp表和dept表找出员工的部门名称
  2. 再emp表和salgrade表连接找出员工的薪水等级

mysql where 多个id mysql多个子查询_嵌套


找出每个员工的部门名称,工资等级以及上级领导

步骤:

  1. 先连接emp表和dept表找出员工的部门名称
  2. 再emp表和salgrade表连接,找出员工的薪水等级
  3. 再使用自连接,即一张表看作两张表,找出员工的上级领导,注意该处不是所有的员工都会有上级领导,像KING,他是BOSS,没有上级领导,但他也是一名员工,所以使用左连接,即不管有没有对应的上级领导,员工都应该要全部查询出来

mysql where 多个id mysql多个子查询_mysql_02

子查询

子查询:select语句中嵌套select语句,被嵌套的select语句就是子查询。
子查询可以出现在select后面from后面where后面

where子句中使用子查询

找出高于平均薪资的员工信息
步骤:

  1. 找出员工的平均薪资
  2. 找出高于平均薪资的员工

mysql where 多个id mysql多个子查询_sql_03

from后面嵌套子查询

找出每个部门平均薪水的薪资等级
步骤:

  • 1.先找出每个部门的平均薪水

mysql where 多个id mysql多个子查询_sql_04

  • 2.将得到的这张临时表作为一张新表,和salgrade表连接,查出每个部门薪水的等级。from后面跟表,所以将上一步骤的查询语句作为子查询语句,放在from后面,作为一张表使用。

在使用时,注意表的命名和子查询中分组函数的命名

mysql where 多个id mysql多个子查询_嵌套_05


找出每个部门平均的薪水等级(和上一题不一样哦~)

步骤:

  1. 找出每个员工的薪水等级
  2. 按照部门分组
  3. 求等级的平均值

mysql where 多个id mysql多个子查询_sql_06


mysql where 多个id mysql多个子查询_mysql where 多个id_07

在select后面嵌套子查询

找出每个员工所在的部门名称,要求显示员工名和部门名

mysql where 多个id mysql多个子查询_子查询_08


mysql where 多个id mysql多个子查询_嵌套_09


文章为学习笔记,如有不足还请指正。