SELECT 查詢 子查詢

2022-08-03 00:48:14 字數 2867 閱讀 2029

1 . 非相關子查詢

非相關子查詢,也稱巢狀子查詢,可以多層巢狀。這種子查詢的執行不依賴於外查詢。執行過程是,先執行子查詢,子查詢的結果並不顯示出來,而是作為外查詢的條件值,然後執行外查詢。

非相關子查詢的特點:子查詢只執行一次,其查詢結果不依賴於外查詢。而外查詢的查詢條件依賴於子查詢的結果,因此,也可以說外查詢的查詢結果依賴於子查詢的結果。

非相關子查詢的結果可以是一行或多行。返回一行的非相關子查詢通常用在比較運算子之後;返回多行的非相關子查詢通常用在比較運算子與any、all組成的運算子in、not in之後。

返回一行的非相關子查詢

查詢與bugsbug在同乙個系學習的學生學號、姓名

返回多行的非相關子查詢

如果子查詢返回多個值,即乙個集合,則外查詢條件中不能直接用比較運算子中的任意乙個,因為某一行的乙個列值不能與乙個集合比較。必須在比較運算子之後加any或all關鍵字。

使用格式為:

〈列名〉〈比較符〉 [any|all] 〈子查詢 結果〉

any的含義為:將乙個列值與子查詢返回的一組值中的每乙個比較。若在某次比較中結果為true,則any測試返回true,若每一次比較的結果均為false,則any測試返回false。

all的含義為:將乙個列值與子查詢返回的一組值中的每乙個比較。若每一次比較中結果均為true,則all測試返回true,只要有一次比較的結果為false,則all測試返回false。

查詢其他系中比software designing系所有學生年齡都小的學生基本情況

where sdept<>'computer' and sage 查詢其他系中比software designing係某一學生年齡小的學生的基本情況

查詢成績大於80分的學生的學號、姓名。

查詢選修了課程名為english的課程並且成績大於80 分的學生學號、姓名。

相關子查詢

相關子查詢,即子查詢的執行依賴於外查詢。相關子查詢執行過程是先外查詢,後內查詢,然後又外查詢,再內查詢,如此反覆,直到外查詢處理完畢。

使用exsists 或not exsists關鍵字來表達相關子查詢。

格式為:exists 《子查詢》

exists表示存在量詞,用來測試子查詢是否有結果,如果子查詢的結果集中非空(至少有一行),則exists條件為true,否則為false。

由於exists的子查詢只測試子查詢的結果集是否為空,因此,在子查詢中指定列名是沒有意義的。所以在有exists的子查詢中,其列名序列通常都用「*」表示。 

查詢選修了c2課程的學生的學號和姓名

查詢沒有選修c2課程的學生的學號、姓名。  

select sno, sname from students  wherenot exists (select *   from enrollment  where sno =students.sno and cno ='c2')

select 查詢—組合查詢

在標準sql中,集合運算的關鍵字分別為union(並)、intersect(交)、minus(差)。

因為乙個查詢的結果是乙個表,可以看作是行的集合,因此,可以利用sql的集合運算關鍵字,將兩個或兩個以上查詢結果進行集合運算,這種查詢通常稱為組合查詢(也稱為集合查詢)。

1.將兩個查詢結果進行並運算

並運算用union 運算子。它將兩個查詢結果合併,並消去重複行而產生最終的乙個結果表。

查詢選修了c1課程或選修了c2課程的學生學號。

注意:

① 兩個查詢結果表必須是相容的。即列的數目相同且對應列的資料型別相同。

② 在兩個查詢結果合併時,將刪除重複行。若union後加all,則結果集中包含重複行。

2.將兩個查詢結果進行交運算

交運算子是intersect。它將同時屬於兩個查詢結果表的行,作為整個查詢的最終結果表。

查詢選修了c1課程並且也選修了c2課程的學生學號。

3.將兩個查詢結果進行差運算

差運算子是minus。它將屬於第乙個查詢結果表而不屬於第二個查詢結果表的行組成最終的結果表。

查詢選修了c1課程但沒有選修了c2課程的學生學號。

select查詢原理

select查詢原理 我並非專業dba,但做為b s架構的開發人員,總是離不開資料庫,一般開發員只會應用sql的四條經典語句 select insert,delete,update。但是我從來沒有研究過它們的工作原理,這篇我想說一說select在資料庫中的工作原理。b s架構中最經典的話題無非於三層...

select查詢原理

我並非專業dba,但做為b s架構的開發人員,總是離不開資料庫,一般開發員只會應用sql的四條經典語句 select insert,delete,update。但是我從來沒有研究過它們的工作原理,這篇我想說一說select在資料庫中的工作原理。b s架構中最經典的話題無非於三層架構,可以大概分為資料...

基本select查詢

最基本的select語句必須包含select子句和from子句,select子句後跟隨的是萬用字元 列名 計算表示式 函式呼叫 別名 連線操作符,from子句後包含的是表的名字 表的別名或者查詢生成的結果集。查詢表中所有行所有列 使用萬用字元 代表所有列 sql select from emp 查詢...