數(shù)據(jù)庫上基本筆記

SQl語言的復(fù)雜查詢與視圖

主要內(nèi)容:

  1. [not]IN
  2. some / all
  3. [not]exists
  4. 聚集函數(shù)
  5. group by
  6. having
  7. 視圖

子查詢:

  • 出現(xiàn)在where子句中的select語句稱為子查詢(subquery),子查詢返回一個集合,可以通過這個集合的比較來確定另一個查詢集合。
  • 三種類型:[not]IN ; Some / All ; [not]Exists
    [not] in 子查詢
  • 基本語法: 表達式 [not] in (子查詢)
  • 表達式可以為列名或常數(shù)。
  • 語義:判斷某表達式的值是否在子查詢結(jié)果中。
例子:求學(xué)過001又學(xué)過002號課程的學(xué)生學(xué)號?(無關(guān)子查詢)
Select S# From SC
Where C# = '001' and
            S# in (Select S# From SC Where C# = '002');
例子:沒學(xué)過李明老師課程的所有同學(xué)的姓名?(無關(guān)子查詢)
Select Sname From Student
Where S# not in (Select S# From SC.Course C,Teacher T
                             Where T.Tname = '李明' and SC.C# = C.C#
                                          and T.T# = C.T#);

非相關(guān)子查詢與相關(guān)子查詢
外層查詢的變量的作用域包含內(nèi)層查詢。

  • 非相關(guān):
    內(nèi)層查詢獨立進行,不涉及任何外層查詢相關(guān)信息的子查詢。
  • 相關(guān):
    內(nèi)層查詢依靠外層查詢的某些參量作為限定條件才能進行的子查詢。
例子:學(xué)過001號課程的同學(xué)名字
Select Sname
From Student Stud
Where S# in (Select S#
                      From SC
                       Where S# = Stud.S# and C# = '001');

some/all子查詢

  • 基本語法:
    表達式 比較運算符 some/all(子查詢)
  • 語義:
    將表達式的值與子查詢結(jié)果相比較
例子:找出所有課程多不及格的學(xué)生名字(相關(guān)子查詢)
Select Sname From Student
 Where 60 > all (Select From Score
                          where Score.S# = Sname.S#);
例子:找出張三同學(xué)成績最低的課程號?(相關(guān)子查詢)
Select C# From SC,Student S
Where Sname = "張三" and S.S# = SC.S# and
            Score <= all (Select Score Form SC 
                                  Where S# = S.S#);

等價與不等價

  • 表達式 in (子查詢) 等價 表達式 some (子查詢)
  • 表達式 not in (子查詢) 等價 <>all (子查詢)
  • 表達式 not in (子查詢) 不等價 表達式<> some (子查詢)
    Exists子查詢
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 50個常用的sql語句Student(S#,Sname,Sage,Ssex) 學(xué)生表Course(C#,Cname...
    哈哈海閱讀 1,337評論 0 7
  • mysql數(shù)據(jù)庫中 :database : 文件夾table : 數(shù)據(jù)表(數(shù)據(jù)文件) 進入mysqlmysql -...
    賦閑閱讀 643評論 0 0
  • 說明:以下五十個語句都按照測試數(shù)據(jù)進行過測試,最好每次只單獨運行一個語句。 問題及描述: --1.學(xué)生表 Stud...
    lijun_m閱讀 1,403評論 0 1
  • 有時候就什么事情都用不想,就讓時間靜靜的流淌。
    書店時光閱讀 151評論 0 0
  • 下了車,軒哥來接我,聽八屆的師兄劉洋講他的創(chuàng)業(yè),做考研做教育。矗哥講的房地產(chǎn),很震撼,我挺喜歡聽矗哥講故事,好的壞...
    dec41dfda297閱讀 177評論 0 0

友情鏈接更多精彩內(nèi)容