SQL 子查询

2024 年 8 月 28 日 | 3 分钟阅读

子查询是嵌套在 WHERE 子句中的另一个 SQL 查询中的查询。

重要规则

  • 子查询可以放置在 SQL 的多个子句中,如 WHERE 子句、FROM 子句、HAVING 子句。
  • 您可以将子查询与 SELECT、UPDATE、INSERT、DELETE 语句以及 =, <, >, >=, <=, IN, BETWEEN 等运算符一起使用。
  • 子查询是另一个查询中的查询。外部查询称为主查询,内部查询称为子查询。
  • 子查询位于比较运算符的右侧。
  • 子查询用括号括起来。
  • 在子查询中,不能使用 ORDER BY 命令。但是可以使用 GROUP BY 命令来执行与 ORDER BY 命令相同的功能。

1. 带有 Select 语句的子查询

SQL 子查询最常与 Select 语句一起使用。

语法

示例

考虑 EMPLOYEE 表具有以下记录

ID姓名年龄地址工资
1John20US2000.00
2Stephan26迪拜1500.00
3大卫27曼谷2000.00
4Alina29英国6500.00
5Kathrin34班加罗尔8500.00
6Harry42中国4500.00
7Jackson25米佐拉姆邦10000.00

带 SELECT 语句的子查询将是

这将产生以下结果

ID姓名年龄地址工资
4Alina29英国6500.00
5Kathrin34班加罗尔8500.00
7Jackson25米佐拉姆邦10000.00

2. 带有 INSERT 语句的子查询

  • SQL 子查询也可以与 Insert 语句一起使用。在 insert 语句中,子查询返回的数据用于插入到另一个表中。
  • 在子查询中,选定的数据可以用任何字符、日期函数进行修改。

语法

示例

考虑一个与 EMPLOYEE 类似的 EMPLOYEE_BKP 表。

现在使用以下语法将完整的 EMPLOYEE 表复制到 EMPLOYEE_BKP 表中。

3. 带有 UPDATE 语句的子查询

SQL 子查询可以与 Update 语句结合使用。当子查询与 Update 语句一起使用时,可以更新表中的一个或多个列。

语法

示例

假设我们有一个可用的 EMPLOYEE_BKP 表,它是 EMPLOYEE 表的备份。给出的示例将 EMPLOYEE 表中所有年龄大于或等于 29 的员工的 SALARY 更新为 .25 倍。

这将影响三行,最后,EMPLOYEE 表将具有以下记录。

ID姓名年龄地址工资
1John20US2000.00
2Stephan26迪拜1500.00
3大卫27曼谷2000.00
4Alina29英国1625.00
5Kathrin34班加罗尔2125.00
6Harry42中国1125.00
7Jackson25米佐拉姆邦10000.00

4. 带有 DELETE 语句的子查询

SQL 子查询可以与 Delete 语句以及前面提到的其他语句结合使用。

语法

示例

假设我们有一个可用的 EMPLOYEE_BKP 表,它是 EMPLOYEE 表的备份。给出的示例从 EMPLOYEE 表中删除所有年龄大于或等于 29 的 EMPLOYEE 的记录。

这将影响三行,最后,EMPLOYEE 表将具有以下记录。

ID姓名年龄地址工资
1John20US2000.00
2Stephan26迪拜1500.00
3大卫27曼谷2000.00
7Jackson25米佐拉姆邦10000.00

下一主题DBMS SQL 子句