一、 子查詢的定義 出現在其他語句中的select語句,稱為子查詢或者內查詢,外部的查詢語句稱為主查詢或者外查詢,子查詢可以包含普通select可以包含的任何語句。 外部查詢:select、insert、update、delete、set等,主要就是在select的應用。 二、 子查詢的分類 1.按 ...
一、 子查詢的定義
出現在其他語句中的select語句,稱為子查詢或者內查詢,外部的查詢語句稱為主查詢或者外查詢,子查詢可以包含普通select可以包含的任何語句。
外部查詢:select、insert、update、delete、set等,主要就是在select的應用。
二、 子查詢的分類
1.按照子查詢出現的位置
①select後面:僅僅支持標量子查詢
②from後面:支持表子查詢
③where或having後面:支持標量子查詢、列子查詢、行子查詢
④exist後:表子查詢
2.結果集的行列數
①標量子查詢:結果集一行一列
②列子查詢:結果一列多行
③行子查詢:一行多列
④表子查詢:多行多列
3.子查詢的特點
①子查放在小括弧內
②子查詢一般放在條件右側
③標量子查詢,一般搭配著單行操作符使用[> < >= <= = <>]
④列子查詢,一般搭配著多行操作符使用[in、any/some、all]
⑤子查詢的執行優先於主查詢執行,主查詢的條件用到了子查詢的結果
3.select後面,僅僅支持標量子查詢
4.from後面:支持表子查詢
其查詢結果可以比作一張表,必須給表起別名
5.where或having後面
①支持標量子查詢、行子查詢、列子查詢
②in、any、all的理解
in:等於列表中的任意一個,如:a [10,30,60,80,100],a等於5個數中的任意一個,等價於=any
not in:列表中的任意一個都不等於,如a[10,20,30,40,50] a 不等於其中任何一個,等價於<>all
any/some:和子查詢返回的某一個值進行比較,<any表示小於任意一個,等價於<max(欄位名)
all:和子查詢的所有值進行比較,<all表示小於所有的,等價於<min(欄位名)
③標量子查詢
④列子查詢(一行多列)
⑤行子查詢(一行多列)
6.exists後面
語法:exists(完整的查詢語句),結果為0或者1
三、 分頁查詢
由於數據量較大,一頁顯示不完整,需要分頁查詢。
1.基本語法:
Select 查詢列表 from 表1
[連接類型 join 表2
on 連接條件
where 篩選條件
group by 分組欄位
having 分組後篩選
order by 排序欄位
limit 分組條件]
2.limit特點
①放在查詢語句的最後面
②limit [index,] size index開始的下標,size每頁顯示的條目數,省略初始位置,預設為0
③公式:limit (page-1)*size,size;page是要顯示的頁數
四、 聯合查詢(union)
union: 將多條查詢語句的結果合併成一個結果
基本語法:查詢語句1 union 查詢語句2 union 查詢語句3...
基本應用:要查詢的結果來自於多個表,且多個表沒有直接聯繫,查詢的信息內容一致
①多條查詢語句欄位數目一致
②要求每一列的類型和順序儘量一致
③union關鍵之預設去重,union all可以包含重覆項