文章目录。
- 1. 基本查询练习。
- 2. 多表查询。
- 3. 自连接。
- 4. 子查询。
- 4.1 单行子查询。
- 4.2 多行子查询。
- 4.3 查询多列子。
- 4.4 子查询用于from子句。
- 5. 合并查询。
- 6. 表的内连。
- 7. 表的外连。

1. 基本查询练习。
我们已经有以下三张表格:
- EMP员工表。
- DEPT部门表。
- SALGRADE工资等级表。

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

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

- 降序排序采用年薪。
年薪 = 月薪 * 12 + 奖金 => sal * 12 + comm。

- 显示工资最高的员工的名称和工作岗位。
首先要找到最高工资,然后用工资比较#xff08使用嵌套查询;#xff09;

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

- 显示各部门的平均工资和最高工资。
先按部门分组,然后检查平均工资和最高工资。
- 显示部门号及其平均工资低于2000。
先计算一下。每个部门。平均工资,然后与2000相比。

- 显示各岗位员工总数,平均工资。
先按岗位分组。

2. 多表查询。
在实际开发中,数据往往来自不同的表,因此需要多表查询。我们仍然使用上述三张表EMP、DEPT、SALGRADE演示如何进行多表查询。
- 显示员工名称、员工工资和部门名称。
以上数据来自EMP和DEPT表,所以要联合查询。
联表查询语法:
select。列名。.。.。.。from。表。1。,表。2.。.。.。条件。.。.。

我们只需要找到它 雇员表中 部门号与 部门表中 可以有相同的部门号。
注意两张表中相同的列名。

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

- 显示每个员工的姓名,薪水,工资水平。
涉及 工资级别表 与 员工表。



3. 自连接。
自连接是指。将查询连接到同一张表中。
- 显示员工FORD上级领导的编号和姓名。
mgr是领导的编号,empno是员工的编号。


4. 子查询。
子查询是指。select语句嵌入其他sql语句。,也叫。嵌套查询。
4.1 单行查询。
只返回一行记录。的子查询。
- 显示与SMITH同一部门员工的姓名。

4.2 多行子查询。
返回多行记录。的子查询。
- 查询。与10号部门的工作岗位相同。员工姓名,工作,工资,部门号,但是。不包括10号部门自己的。
首先查询10号部门的职位,就目前的表而言,#xff00c;结果会有多行记录;然后找出相同的职位。
in关键字:结果中有“我”。

- 显示工资高于部门30的员工的姓名、工资和部门号。
all关键字:所有的结果。

- 显示工资比部门高30。任何员工工资都很高。员工姓名、工资和部门号(包括自己部门的员工)
说明:只要30个部门中有一个员工的工资低于我,那我就符合条件了。
any关键字:结果中的。任何一个/多个。

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

4.4 在from子句中使用子查询。
from子句中出现了子查询句。。
首先,我们应该始终明确:sql查询的结果一定是一张表。,所以可以。将一个子查询结果作为临时表使用。。
- 显示每个员工的姓名、部门、工资和平均工资高于自己部门的平均工资。
首先,每个部门的平均工资临时表,然后使用临时表与员工表进行连接查询可以从连接查询结果中筛选出符合条件的。
各部门平均工资临时表:

两表连接条件筛选。

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

- 显示各部门信息(部门名称,编号,地址)和人员数量。
用户查询:

使用多表:

5. 合并查询。
在实际应用中c;为了合并多个select的执行结果,可使用集合操作符 union,union all。
5.1 union。
该操作符用于。并集两个结果集。。使用此操作符时,会。结果集中的重复行自动去除。。
如果两个结果集有不同的列,两者不能合并。
。
- 找出工资大于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。连接条件。
以下两个表:

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

7.2 右外连接。
如果联合查询,右表完全显示。我们说是的。右外连接。
- 联合查询student表和test表c;显示所有成就,即使没有学生对应这个成绩还要显示。

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

