日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL中EXISTS的使用

發(fā)布時(shí)間:2024/8/26 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL中EXISTS的使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 1.簡(jiǎn)介
  • 2.表結(jié)構(gòu)
  • 3.查詢所有選修了“C1”課程的學(xué)生名。
  • 4.查詢沒有選C1課程的學(xué)生的學(xué)號(hào)、姓名
  • 5.查詢選修了所有課程的學(xué)生的姓名(續(xù))
  • 6.查詢至少選修了S1所選的全部課程的學(xué)生名
  • 7.在FROM語句中使用子查詢,對(duì)查詢結(jié)果定義表名及列名 例:求平均成績(jī)超過80分的學(xué)號(hào)及平均成績(jī)

1.簡(jiǎn)介

  • 不相關(guān)子查詢:子查詢的查詢條件不依賴于父查詢的稱為不相關(guān)子查詢。
  • 相關(guān)子查詢:子查詢的查詢條件依賴于外層父查詢的某個(gè)屬性值的稱為相關(guān)子查詢,帶EXISTS 的子查詢就是相關(guān)子查詢
  • EXISTS表示存在量詞:帶有EXISTS的子查詢不返回任何記錄的數(shù)據(jù),只返回邏輯值“True”或“False”

2.表結(jié)構(gòu)

選課表:學(xué)號(hào)、課程號(hào)

學(xué)生表:學(xué)號(hào)、姓名

課程表:課程號(hào)、課程名

3.查詢所有選修了“C1”課程的學(xué)生名。

普通SQL查詢:

SELECT 姓名 FROM 學(xué)生表 WHERE 學(xué)號(hào) IN (SELECT 學(xué)號(hào) FROM 選課表 WHERE 課程號(hào) = 'C1');

帶EXISTS的SQL查詢:

SELECT 姓名 FROM 學(xué)生表 WHERE EXISTS (SELECT * FROM 選課表WHERE 學(xué)生表.學(xué)號(hào) = 選課表.學(xué)號(hào) AND 課程號(hào) = 'C1' );

相關(guān)子查詢執(zhí)行過程:先在外層查詢中取“學(xué)生表”的第一行記錄,用該記錄的相關(guān)的屬性值(在內(nèi)層WHERE子句中給定的)處理內(nèi)層查詢,若外層的WHERE子句返回“TRUE”值,則這條記錄放入結(jié)果表中。然后再取下一行記錄;重復(fù)上述過程直到外層表的記錄全部遍歷一次為止。

EXISTS語句不關(guān)心子查詢的具體內(nèi)容,因此用“SELECT *”,“Exists + 子查詢”用來判斷該子查詢是否返回記錄。

  • Exists:若子查詢的結(jié)果集非空時(shí),返回“True”;若子查詢的結(jié)果集為空時(shí),返回“False” 。
  • NOT EXISTS :若子查詢結(jié)果為空,返回“TRUE”值;若子查詢的結(jié)果集非空時(shí),返回 “FALSE。

4.查詢沒有選C1課程的學(xué)生的學(xué)號(hào)、姓名

SELECT 姓名 FROM 學(xué)生表 WHERE NOT EXISTS (SELECT *FROM 選課表WHERE 學(xué)生表.學(xué)號(hào) = 選課表.學(xué)號(hào) AND 課程號(hào) = 'C1' );

5.查詢選修了所有課程的學(xué)生的姓名(續(xù))

SELECT 姓名 FROM 學(xué)生表 WHERE NOT EXISTS (SELECT *FROM 課程表WHERE NOT EXISTS(SELECT *FROM 選課表WHERE 學(xué)生表.學(xué)號(hào) = 選課表.學(xué)號(hào) AND 課程表.課程號(hào) = 選課表.課程號(hào)) );

6.查詢至少選修了S1所選的全部課程的學(xué)生名

SELECT 姓名 FROM 學(xué)生表 WHERE NOT EXISTS ( SELECT *FROM 選課表 AS 選課表X WHERE 選課表X.學(xué)號(hào)='s1' AND NOT EXISTS (SELECT *FROM 選課表 AS 選課表YWHERE 學(xué)生表.學(xué)號(hào) = 選課表Y.學(xué)號(hào) AND 選課表X.課程號(hào) = 選課表Y.課程號(hào)) );

7.在FROM語句中使用子查詢,對(duì)查詢結(jié)果定義表名及列名 例:求平均成績(jī)超過80分的學(xué)號(hào)及平均成績(jī)

SELECT 學(xué)號(hào), AVG_G FROM (SELECT 學(xué)號(hào), AVG(Grade)FROM 選課表GROUP BY 學(xué)號(hào) ) AS RA(學(xué)號(hào), AVG_G) WHERE AVG_G > 80

轉(zhuǎn)載于:https://www.cnblogs.com/jiangyunfeng/p/9054305.html

總結(jié)

以上是生活随笔為你收集整理的SQL中EXISTS的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。