摘要:下面是由希賽小編整理的中級通信互聯網技術知識點精講之嵌套查詢,希望能幫助學友們。
下面是由希賽小編整理的中級通信互聯網技術知識點精講之嵌套查詢,希望能幫助學友們。具體內容如下:
嵌套查詢
在SQL中,一個SELECT-FROM-WHERE語句稱為一個查詢塊。將一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件中的査詢稱為嵌套查詢。
嵌套査詢一般的求解方法是由里向外處理。即每個子査詢在上一級査詢處理之前求解,子査詢的結果用于建立其父查詢的查找條件。
嵌套查詢可以用多個簡單查詢構成復雜的查詢,從而增強SQL的查詢能力。以層層嵌套的方式來構造程序正是SQL“結構化”的含義所在。
(1)帶有IN謂詞的子查詢
在嵌套查詢中,子查詢的結果往往是一個集合,謂詞IN是嵌套查詢中最經常使用的謂詞。
(2)帶有比較運算符的子查詢
帶有比較運算符的子查詢是指父查詢與子查詢之間用比較運算符進行連接。當用戶能確切知道內層查詢返回的是單值時,可以用>、<、=、>=、<=、!=或<>等比較運算符。
(3)帶有ANY或ALL謂詞的子查詢
子査詢返回單值時可以用比較運算符,而使用ANY或ALL謂詞時則必須同時使用比較運算符。其語義如下:
>ANY大于子査詢結果中的某個值
>ALL大于子查詢結果中的所有值
<=ANY大于等于子查詢結果中的某個值
<=ALL大于等于子查詢結果中的所有值
<=ANY小于等于子査詢結果中的某個值
<=ALL小于等于子査詢結果中的所有值
=ANY等于子查詢結果中的某個值
=ALL等于子查詢結果中的所有值(通常沒有實際意義)
!=(或OANY不等于子查詢結果中的某個值!=(或OALL不等于子查詢結果中的任何一個值
(4)帶有EXISTS謂詞的子查詢
EXISTS代表存在量詞。帶有EXISTS謂詞的子查詢不返回任何數據,只產生邏輯真值“true”或邏輯假值“false”。使用存在量詞EXISTS后,若內層查詢結果非空,則外層的WHERE子句返回真值,否則返回假值。由EXISTS引出的子査詢,其目標列表達式通常都用*,因為帶EXISTS的子査詢只返回真值或假值,給出列名無實際意義。
這類查詢與前面講解的不相關子査詢有一個明顯區(qū)別,即子査詢的査詢條件依賴于外層父査詢的某個屬性值,稱這類査詢?yōu)橄嚓P子査詢(CorrelatedSubqueiy).求解相關子查詢不能像求解不相關子查詢那樣,一次將子査詢求解出來,然后求解父查詢。內層査詢由于與外層查詢有關,因此必須反復求值。從概念上講,相關子査詢的一般處理過程是:首先取外層査詢中表的第1個元組,根據它與內層查詢相關的屬性值處理內層査詢,若WHERE子句返回值為真,則取此元組放入結果表:然后取表的下一個元組:重復這一過程,直至外層表全部檢查完為止。
與EXISTS謂詞相對應的是NOTEXISTS謂詞。使用存在量詞NOTEXISTS后,若內層査詢結果為空,則外層的WHERE子句返回真值,否則返回假值。
集合査詢
SELECT語句的查詢結果是元組的集合,所以多個SELECT語句的結果可進行集合操作。集合操作主要包括并操作UNION、交操作INTERSECT和差操作MINUS。
相關推薦:
通信工程師備考資料免費領取
去領取