SQL 子查詢 詳細整理

子查詢分爲兩種:
非相關子查詢(獨立子查詢)
相關子查詢

①獨立子查詢可以單獨執行,所以先執行後,得到的

     整個查詢中子查詢只執行一次,執行完後再執行外層查詢;

②相關子查詢是指子查詢(內層查詢)中引用了外層查詢所引用表的字段,

     因此外層查詢處理每一條記錄時都必須執行一次子查詢,

     因爲子查詢中引用的字段的值發生了變化。

③單行子查詢

(1) 單行子查詢的特點是什麼?

	僅返回一行

	使用單行比較符

(2) 主查詢對子查詢結果的單行比較運算符有哪些?

	= > >= < <= <>(不等於)

④.在子查詢中使用組函數與HAVING子句

⑤. 什麼是子查詢錯誤?

使用子查詢的一個常見錯誤是單行子查詢返回了多行

⑥.多行子查詢中IN運算符

⑦. 什麼是多行子查詢?

返回多於一行

使用多行比較符

⑧.主查詢對子查詢的多行比較運算符有哪些?

In:等於列表中的任何成員

Any 比較子查詢返回的,每個值

All 比較子查詢返回的全部值

⑨ SQL查詢:子查詢和聯表查詢有什麼區別,

一般來說子查詢和關聯子表的性能,相對來說 關聯表要好一些。

爲什麼呢?

主要在於優化器更加傾向於去優化 關聯查詢,且關聯查詢相對來說更易理解,語句也相對簡單,所以優化效果比較好,能生成較優的執行計劃。

但是,這個也不確定,性能是否好,還是要看優化器生成的執行計劃,如果子查詢生成的執行計劃更好,那麼就會更快。

注意點

1、如果只需要返回 一個表的數據,建議用exists 或者in。

2、如果要返回2個或多個表的數據,那麼就用關聯。

總結:

相關子查詢的執行依賴於外部查詢,一般是在where子句中引用外部的表。執行過程如下:

(1)從外層查詢中取出一個元組,將元組相關列的值傳給內層查詢。

(2)執行內層查詢,得到子查詢操作的值。

(3)外查詢根據子查詢返回的結果或結果集得到滿足條件的行。

(4)然後外層查詢取出下一個元組重複做步驟1-3,直到外層的元組全部處理完畢。
 

 

【轉載註明出處,希望尊重原創 】

 

【作者水平有限,如有錯誤歡迎指正 .】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章