子查詢(內查詢)

2020-10-26 14:00:48

子查詢的概念

子查詢(也稱內查詢)含義: 出現在其他語句中的select語句,稱為子查詢或內查詢。
					  外部的查詢語句,稱為主查詢或外查詢。

子查詢的分類

按照子查詢出現的位置分類:

  • select後面:
    僅僅支援標量子查詢
  • from後面:
    支援表子查詢
  • where或having後面:
    標量子查詢(用的多)
    列子查詢(用的多)
    行子查詢(用的少)
  • exists後面(相關子查詢):
    表子查詢

按結果集的行列數不同分類:

  • 標量子查詢(結果集只有一行一列)
  • 列子查詢(結果集只有一列多行)
  • 行子查詢(結果集有一行多列)
  • 表子查詢(結果集一般為多行多列)

按照子查詢出現的位置分類:

where或having後面

  • 1.標量子查詢(單行子查詢)
  • 2.列子查詢(多行子查詢)
  • 3.行子查詢(多列多行)

特點:

  • 1.子查詢放在小括號內
  • 2.子查詢一般放在條件的右側
  • 3.標量子查詢,一般搭配著單行操作符 (> < >= <= = <>)使用
    列子查詢一般搭配著多行操作符使用 in 、 any/some 、 all 。
  • 4.子查詢的執行優先於主查詢執行,主查詢的條件用到了子查詢的結果。

1、標量子查詢

非法使用標量子查詢  子查詢不是一行一列

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

2、列子查詢

列子查詢(多行子查詢): 返回多行,使用多行比較操作符。
操作符含義
IN / NOT IN等於列表中的任意一個
ANY / some和子查詢返回的某一個值比較
ALL和子查詢返回的所有值比較

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述

3、行子查詢

在這裡插入圖片描述

select後面

select後面的子查詢 僅僅支援標量子查詢

在這裡插入圖片描述
在這裡插入圖片描述

from後面

將子查詢充當一張表,要求必須起別名。

在這裡插入圖片描述
在這裡插入圖片描述

exists後面

在這裡插入圖片描述
在這裡插入圖片描述