数据库必知词汇:子查询

简介: 子查询(Sub Query)是嵌套在主查询中的SELECT查询语句,即当一个查询是另一个查询的条件时,称之为子查询。子查询嵌套在一个 SELECT、SELECT...INTO 语句、INSERT...INTO 语句、DELETE 语句、或 UPDATE 语句或嵌套在另一子查询中。

子查询(Sub Query)是嵌套在主查询中的SELECT查询语句,即当一个查询是另一个查询的条件时,称之为子查询。子查询嵌套在一个 SELECT、SELECT...INTO 语句、INSERT...INTO 语句、DELETE 语句、或 UPDATE 语句或嵌套在另一子查询中。

在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。当获得一个查询的答案需要多个步骤的操作,首先必须创建一个查询来确定用户不知道但包含在数据库中的值,将一个查询块嵌套在另一个查询块的WHERE字句或HAVING短语的条件中查询块称为子查询或内层查询。上层的查询块曾为父查询或外层查询。子查询的结果作为输入传递回“父查询”或“外部查询”。父查询将这个值结合到计算中,以便确定最后的输出。

SQL语言允许多层嵌套查询,即一个子查询中还可以嵌套其他子查询。以层层嵌套的方式来构造程序正是SQL中"结构化"的含义所在。

子查询是本质上就是一个完整 的SELECT 语句,它可以使一个 SELECT、SELECT...INTO 语句、INSERT...INTO 语句、DELETE 语句、或 UPDATE 语句或嵌套在另一子查询中。子查询的输出可以包括一个单独的值(单行子查询)、几行值(多行子查询)、或者多列数据(多列子查询)。

可用三种语法来创建子查询:

  • comparison ANY | ALL | SOME
  • expression [NOT] IN (sqlstatement)
  • [NOT] EXISTS (sqlstatement)

其中,comparison是一个表达式及一个比较运算符,将表达式与子查询的结果作比较。expression用以搜寻子查询结果集的表达式。sqlstatement是SELECT 语句,遵从与其他 SELECT 语句相同的格式及规则。它必须括在括号之中。

子查询的使用规则如下:

  • 子查询必须自身是一个完整的查询。即它必须至少包括一个SELECT子句和FROM子句。
  • 子查询SELECT语句不能包括在ORDER BY子句中。因为ORDER BY字句只能对最终查询结果排序,如果显示的输出需要按照特定顺序显示,那么ORDER BY子句应该作为外部查询的最后一个子句列出。
  • 子查询“必须包括在一组括号中”,以便将它与外部查询分开。
  • 如果将子查询放在外部查询的WHERE或HAVING子句中,那么该子查询只能位于比较运算符的“右边”。

资料来源:
王珊 萨师煊.数据库系统概率(第5版):高等教育出版社,2014
SQL 子查询 http://www.veryhuo.com/a/manual/sql/dasqlsubqueries.htm

相关文章
|
7月前
|
SQL 数据库
数据库开发之子查询案例的详细解析
数据库开发之子查询案例的详细解析
35 0
|
7月前
|
SQL 数据库
数据库开发之子查询的详细解析
数据库开发之子查询的详细解析
49 0
|
7月前
|
SQL 关系型数据库 MySQL
⑧【MySQL】数据库查询:内连接、外连接、自连接、子查询、多表查询
⑧【MySQL】数据库查询:内连接、外连接、自连接、子查询、多表查询
269 0
|
6月前
|
SQL 关系型数据库 MySQL
MySQL数据库子查询练习——EXISTS(存在)
MySQL数据库子查询练习——EXISTS(存在)
71 1
|
6月前
|
SQL 关系型数据库 MySQL
MySQL数据库子查询——in多个数据查询的示例
MySQL数据库子查询——in多个数据查询的示例
38 1
|
6月前
|
关系型数据库 分布式数据库 数据库
数据库内核那些事|PolarDB IMCI让你和复杂低效的子查询说拜拜
PolarDB IMCI(In-Memory Column Index)确实是数据库领域的一项重要技术,特别是当它面对复杂和低效的子查询时,表现尤为出色。以下是关于PolarDB IMCI如何助力解决
|
4月前
|
SQL 数据库 数据安全/隐私保护
什么是数据库子查询?
【8月更文挑战第2天】
152 14
什么是数据库子查询?
|
5月前
|
存储 缓存 监控
如何优化数据库子查询?
【7月更文挑战第22天】如何优化数据库子查询?
108 15
|
7月前
|
SQL 关系型数据库 分布式数据库
|
7月前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
116 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询