SQL查询技巧:在FROM子句中运用子查询获取部门平均薪水等级

需积分: 0 6 下载量 75 浏览量 更新于2024-08-15 收藏 705KB PPT 举报
本资源主要讲解了如何在SQL查询中使用子查询,特别是如何在From子句中运用子查询来获取每个部门的平均薪水等级。通过实例展示了SQL语言在数据库操作中的应用,包括数据操纵、定义、控制等方面的功能,并介绍了相关的实验数据表结构。 在SQL结构化查询语言中,From子句是用于指定数据来源的关键部分。在这个例子中,我们使用了子查询来先计算每个部门的平均薪水,然后将这个计算结果作为一个临时的表(也称为内嵌视图)进行后续的操作。子查询在From子句中的使用使得我们可以分步骤地处理复杂的数据查询问题,提高了查询的灵活性和可读性。 首先,子查询 `(select deptno, avg(sal) avg_sal from emp group by deptno)` 被用来计算每个部门的平均薪水,并以部门编号(deptno)和平均薪水(avg_sal)为结果。这个子查询的结果被视为一个虚拟表(t),与salgrade表进行连接。salgrade表包含了薪水等级的相关信息,包括最低工资(losal)和最高工资(hisal)。通过`WHERE`子句 `t.avg_sal between s.losal and s.hisal`,我们能够找到每个部门平均薪水对应的等级。 SQL语言分为几个主要类别: 1. 数据操纵语言(DML):包括SELECT(查询数据)、INSERT(插入数据)、UPDATE(修改数据)和DELETE(删除数据)。 2. 数据定义语言(DDL):涉及CREATE(创建表)、ALTER(修改表结构)、DROP(删除表)、RENAME(重命名表)和TRUNCATE(清空表)等操作。 3. 数据控制语言(DCL):用于权限管理,如GRANT(授权)和REVOKE(撤销权限)。 4. 事务管理:如COMMIT(提交事务)、ROLLBACK(回滚事务)和SAVEPOINT(设置保存点)。 实验中涉及的数据表有: - emp表:包含雇员信息,如雇员工号(Empno)、雇员名字(Ename)、工作(Job)、经理的工号(Mgr)、雇用日期(Hiredate)、工资(Sal)和津贴(Comm)。 - dept表:存储部门信息,包括部门编号(Deptno)、部门名字(Dname)和地址(Loc)。 - salgrade表:定义薪水等级,包括最低工资(losal)、最高工资(hisal)和等级(Grade)。 - bonus表:记录奖金信息,如雇员名字(Ename)、工作(Job)、工资(Sal)和津贴(Comm)。 在SELECT语句中,可以指定要检索的列,例如检索单个列、多个列或所有列。还可以使用别名(alias)来重命名检索出的列,提高代码的可读性。此外,使用通配符(*)可以检索所有列,但可能会降低查询效率。 通过这个例子,我们可以看到SQL在实际数据库操作中的强大功能,以及如何利用子查询在From子句中解决复杂查询问题。理解并熟练掌握这些概念对于进行有效的数据库管理和数据分析至关重要。