SQL中的子查询

SQL中的子查询

💡 原文英文,约900词,阅读约需4分钟。
📝

内容提要

本文讲解了如何创建和操作SQL表,包括创建部门和员工表,插入数据,以及使用各种子查询进行数据检索。子查询类型有单行、多行、相关子查询、EXISTS、NOT EXISTS、标量子查询、内联视图和HAVING子查询,展示了SQL在复杂数据操作中的强大功能。

🎯

关键要点

  • 创建部门和员工表,部门表包含部门ID、部门名称和位置ID,员工表包含员工ID、员工名称、部门ID和薪资。

  • 插入示例数据到部门表和员工表,包括HR、IT和Sales部门,以及Alice、Bob和Charlie员工。

  • 单行子查询:获取IT部门的员工名称。

  • 多行子查询:获取位置ID为101的部门的员工名称。

  • 相关子查询:获取薪资高于其部门平均薪资的员工名称。

  • EXISTS子查询:获取位置ID为102的部门工作的员工名称。

  • NOT EXISTS子查询:获取不在位置ID为102的部门工作的员工名称。

  • 标量子查询:获取员工名称及其部门名称。

  • 内联视图:获取每个部门的平均薪资。

  • HAVING子查询:获取平均薪资高于部门10的部门。

延伸问答

如何创建部门和员工表?

使用CREATE TABLE语句创建部门表和员工表,部门表包含部门ID、部门名称和位置ID,员工表包含员工ID、员工名称、部门ID和薪资。

SQL中有哪些类型的子查询?

SQL中的子查询类型包括单行子查询、多行子查询、相关子查询、EXISTS、NOT EXISTS、标量子查询、内联视图和HAVING子查询。

如何使用单行子查询获取IT部门的员工名称?

可以使用SELECT语句,子查询获取IT部门的部门ID,然后在外部查询中根据该ID获取员工名称。

什么是相关子查询,它是如何工作的?

相关子查询是针对外部查询的每一行执行的子查询,例如获取薪资高于其部门平均薪资的员工名称。

如何使用HAVING子查询获取平均薪资高于特定部门的部门?

使用GROUP BY和HAVING子句,计算每个部门的平均薪资,并与特定部门的平均薪资进行比较。

EXISTS和NOT EXISTS子查询有什么区别?

EXISTS用于检查子查询是否返回至少一行,而NOT EXISTS则用于过滤掉那些存在于子查询结果中的行。

➡️

继续阅读