清华主页 - 清华新闻 - 综合时讯 - 正文

【MySQL】复合查询

文章目录。

  • 1. 基本查询练习。
  • 2. 多表查询。
  • 3. 自连接。
  • 4. 子查询。
    • 4.1 单行子查询。
    • 4.2 多行子查询。
    • 4.3 查询多列子。
    • 4.4 子查询用于from子句。
  • 5. 合并查询。
    • 5.1 union。
    • 5.2 union all。
  • 6. 表的内连。
  • 7. 表的外连。
    • 7.1 左外连接。
    • 7.2 右外连接。

在这里插入图片描述

1. 基本查询练习。

我们已经有以下三张表格:

  • EMP员工表。
  • DEPT部门表。
  • SALGRADE工资等级表。

在这里插入图片描述

  1. 查询工资高于500或MANAGER的员工,同时,他们的首字母是大写J。

在这里插入图片描述

  1. 员工工资按部门号升级排序。

在这里插入图片描述

  1. 降序排序采用年薪。

年薪 = 月薪 * 12 + 奖金 => sal * 12 + comm。

在这里插入图片描述

  1. 显示工资最高的员工的名称和工作岗位。

首先要找到最高工资,然后用工资比较󿀌#xff08使用嵌套查询;#xff09;

在这里插入图片描述

  1. 显示工资高于平均工资的员工信息。

首先,计算平均工资,然后找出工资高于平均工资的员工的信息。

在这里插入图片描述

  1. 显示各部门的平均工资和最高工资。

先按部门分组,然后检查平均工资和最高工资。在这里插入图片描述

  1. 显示部门号及其平均工资低于2000。

先计算一下。每个部门。平均工资,然后与2000相比。
在这里插入图片描述

  1. 显示各岗位员工总数,平均工资。

先按岗位分组。

在这里插入图片描述

2. 多表查询。

在实际开发中,数据往往来自不同的表,因此需要多表查询。我们仍然使用上述三张表EMP、DEPT、SALGRADE演示如何进行多表查询。

  1. 显示员工名称、员工工资和部门名称。

以上数据来自EMP和DEPT表,所以要联合查询。
联表查询语法:

select。列名。.。.。.。from。表。1。,表。2.。.。.。条件。.。.。

在这里插入图片描述

我们只需要找到它 雇员表中 部门号与 部门表中 可以有相同的部门号。

注意两张表中相同的列名。

在这里插入图片描述

  1. 显示部门号为10的部门名,员工名称和工资。

在这里插入图片描述

  1. 显示每个员工的姓名,薪水,工资水平。

涉及 工资级别表 与 员工表。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3. 自连接。

自连接是指。将查询连接到同一张表中。

  1. 显示员工FORD上级领导的编号和姓名。

mgr是领导的编号,empno是员工的编号。

  • 用户查询:

在这里插入图片描述

  • 使用自连接(多表查询)#;:

在这里插入图片描述

4. 子查询。

子查询是指。select语句嵌入其他sql语句。,也叫。嵌套查询。

4.1 单行查询。

只返回一行记录。的子查询。

  1. 显示与SMITH同一部门员工的姓名。

在这里插入图片描述

4.2 多行子查询。

返回多行记录。的子查询。

  1. 查询。与10号部门的工作岗位相同。员工姓名,工作,工资,部门号,但是。不包括10号部门自己的。

首先查询10号部门的职位,就目前的表而言,#xff00c;结果会有多行记录;然后找出相同的职位。

in关键字:结果中有“我”。

在这里插入图片描述

  1. 显示工资高于部门30的员工的姓名、工资和部门号。

all关键字:所有的结果。
在这里插入图片描述

  1. 显示工资比部门高30。任何员工工资都很高。员工姓名、工资和部门号(包括自己部门的员工)

说明:只要30个部门中有一个员工的工资低于我,那我就符合条件了。

any关键字:结果中的。任何一个/多个。

在这里插入图片描述

4.3 查询多列子。

  • 单行查询。指子查询只返回。单列,单行。数据;
  • 多行子查询。是指返子查询回。单列,多行。数据。
  • 查询多列子。指子查询返回。多个列。子查询语句的数据。
  1. 所有与SMITH部门和职位完全相同的员工,不包括SMITH本人。

在这里插入图片描述

4.4 在from子句中使用子查询。

from子句中出现了子查询句。

首先,我们应该始终明确:sql查询的结果一定是一张表。,所以可以。将一个子查询结果作为临时表使用。

  1. 显示每个员工的姓名、部门、工资和平均工资高于自己部门的平均工资。

首先,每个部门的平均工资临时表,然后使用临时表与员工表进行连接查询󿀌可以从连接查询结果中筛选出符合条件的。

各部门平均工资临时表:
在这里插入图片描述

两表连接󿀌条件筛选。

在这里插入图片描述

  1. 找出每个部门工资最高的人的姓名、工资、部门和最高工资。

在这里插入图片描述

  1. 显示各部门信息(部门名称,编号,地址)和人员数量。

用户查询:

在这里插入图片描述
使用多表:

在这里插入图片描述

5. 合并查询。

￰在实际应用中c;为了合并多个select的执行结果,可使用集合操作符 union,union all。

5.1 union。

该操作符用于。并集两个结果集。。使用此操作符时,会。结果集中的重复行自动去除。

如果两个结果集有不同的列,两者不能合并。

  1. 找出工资大于2500或职位是MANAGER的人。

在这里插入图片描述

5.2 union all。

该操作符用于获取两个结果集的并集。使用此操作符时,结果集中的重复行不会被删除。

在这里插入图片描述

6. 表的内连。

内连接。其实就是用where子句。筛选两种表形成的笛卡儿积。

我们。前面学习的查询都是内部连接。,也是开发过程中使用最多的连接查询。

语法:

select。字段。 from。表。1。[。inner。]。join。表。2。on。连接条件。 [。and。其他条件。]。;

在这里插入图片描述

7. 表的外连。

7.1 左外连接。

如果联合查询,完全显示左表。我们说是的。左外连接。

select。字段名。 from。表名。1。left。join。表名。2。on。连接条件。

以下两个表:
在这里插入图片描述

  1. 查询所有学生的成绩,如果这个学生没有成绩󿀌还要显示学生的个人信息。

在这里插入图片描述

7.2 右外连接。

如果联合查询,右表完全显示。我们说是的。右外连接。

  1. 联合查询student表和test表c;显示所有成就,即使没有学生对应这个成绩󿀌还要显示。

在这里插入图片描述

  1. 列出这些部门的部门名称和员工信息,同时,列出没有员工的部门。

在这里插入图片描述
在这里插入图片描述

2025-06-24 12:44:55

相关新闻

清华大学新闻中心版权所有,清华大学新闻网编辑部维护,电子信箱: news@tsinghua.edu.cn
Copyright 2001-2020 news.tsinghua.edu.cn. All rights reserved.