数据库原理与应用(SQL Server)笔记 第四章 嵌套查询和其他查询子句
目錄
前言
一、嵌套查詢
(一)子查詢
(二)ANY或ALL謂詞的子查詢和比較運算的子查詢
1、ANY子查詢
2、ALL子查詢
(三)EXISTS子查詢
二、其他查詢子句(集合查詢)
(一)UNION子句(并操作)
(二)INTERSECT子句(交操作)
(三)EXCEPT子句(差操作)
(四)INTO子句
(五)CTE子句
(六)TOP謂詞
總結
前言
本次內容,我們主要掌握數據庫的嵌套查詢和其他查詢子句,將介紹幾個查詢子句,通過幾個例子來掌握嵌套查詢和其他查詢子句的查詢技巧。
一、嵌套查詢
(一)子查詢
當一個SELECT語句無法完成查詢任務時,需要另一個或多個SELECT語句的查詢結果作為查詢條件的一部分,這種查詢稱為嵌套查詢,也稱為子查詢,并且嵌套查詢的處理過程是由內向外的。
子查詢的格式:
SELECT <列名1>... (列名n) FROM <表1>...(表n) WHERE <列名> <操作符> (SELECT子查詢 )簡單點說,下層嵌套的SELECT子查詢的查詢結果作為上層SELECT子查詢的查詢條件進行查詢。
IN子查詢的用于進行一個給定值是否在子查詢結果中的判斷,即上面?WHERE <列名> <操作符> 中的操作符為IN,若在操作符IN前面加NOT,則返回的值相反。
例1、根據如下所給表,利用T-SQL語句查詢與雪碧不在同一商品種類的所有商品信息。
sql語句:
USE Sales SELECT * FROM Product WHERE CategoryID NOT IN (SELECT CategoryID FROM Product WHERE ProductName='雪碧' )測試結果:
(二)ANY或ALL謂詞的子查詢和比較運算的子查詢
比較運算的子查詢指父查詢與子查詢之間用比較運算符進行關聯,即“< > = <= >= != !< !>”等等比較運算符。
1、ANY子查詢
子查詢結果中任意一個值滿足比較條件就返回,否則返回的值相反。這里的操作符為ANY。
例2、根據如下所給表,利用T-SQL語句查詢所有商品中比可口可樂任意一個庫存量小的商品信息。
sql語句:
USE Sales SELECT * FROM Product WHERE Stocks<ALL (SELECT Stocks FROM Product WHERE ProductName='可口可樂' )測試結果:
2、ALL子查詢
子查詢結果中任每個值都滿足比較條件就返回,否則返回的值相反。這里的操作符為ALL。
例3、根據如下所給表,利用T-SQL語句查詢出比可口可樂價格都貴的商品信息。
sql語句:
USE Sales SELECT * FROM Product WHERE Price>ALL (SELECT Price FROM Product WHERE ProductName='可口可樂' )測試結果:
?
(三)EXISTS子查詢
EXISTS子查詢判斷子查詢結果中是否有記錄(是否為空表),若有則結果為真,否則為假,返回值相反。
例4、根據如下所給表,利用T-SQL語句查詢所有商品中屬于日用品類的商品信息。
sql語句:
USE Sales SELECT * FROM Product WHERE EXISTS ( SELECT * FROM Category WHERE Category.CategoryID=Product.CategoryID AND CategoryName='日用品' )測試結果:
?
例5、根據上表,利用T-SQL語句查詢查詢所有商品中調料和飲料類的商品ID和名稱。
sql語句:
USE Sales SELECT ProductID,ProductName FROM Product WHERE NOT EXISTS ( SELECT * FROM Category WHERE Category.CategoryID=Product.CategoryID AND CategoryName='日用品' )測試結果:
二、其他查詢子句(集合查詢)
(一)UNION子句(并操作)
UNION子句,也稱為并操作。即可以將兩個或者兩個以上的查詢結果合并成一個結果集,要注意每個語句中查詢的列數和列的順序必須相同,且數據類型必須兼容。
格式如下:
SELECT 語句 UNION SELECT 語句 UNION ...例6、根據如下所給表,利用T-SQL語句查詢所有商品中商品種類為1及商品種類為2的商品名稱。
sql語句:
USE Sales SELECT ProductName FROM Product WHERE CategoryID=1 UNION SELECT ProductName FROM Product WHERE CategoryID=2測試結果:
(二)INTERSECT子句(交操作)
INTERSECT子句,也稱為交操作,用于比較兩個查詢結果,即返回操作數INTERSECT兩邊的兩個查詢結果中的所有非重復值,要注意每個語句中查詢的列數和列的順序必須相同,且數據類型必須兼容。
格式如下:
SELECT 語句 INTERSECT SELECT 語句例7、根據如下所給表,利用T-SQL語句查詢所有員工中既在2020-4-10發過工資又在2020-5-10發過工資的員工工號。
sql語句:
USE YGGZ SELECT EmpNO FROM Salay WHERE PayDate='2020-4-10' INTERSECT SELECT EmpNO FROM Salay WHERE PayDate='2020-5-10'測試結果:
(三)EXCEPT子句(差操作)
EXCEPT子句,也稱為交操作,用于比較兩個查詢結果,即從左查詢中返回右查詢沒有找到的所有非重復值,要注意每個語句中查詢的列數和列的順序必須相同,且數據類型必須兼容。
格式如下:
SELECT 語句 EXCEPT SELECT 語句例8、根據上題所給表,利用T-SQL語句查詢所有員工中既在2020-4-10發過工資但在2020-5-10未發過工資的員工工號。
sql語句:
USE YGGZ SELECT EmpNO FROM Salay WHERE PayDate='2020-4-10' EXCEPT SELECT EmpNO FROM Salay WHERE PayDate='2020-5-10'測試結果:
(四)INTO子句
INTO子句用于將查詢的結果插入到創建的新表中。
(五)CTE子句
CTE子句用于指定臨時結果集。
(六)TOP謂詞
若只需要得到查詢結果的前幾項數據,就要用到TOP謂詞進行對查詢結果集的限定,即使用TOP n [PERCENT],即列出查詢結果的前n項或列出查詢結果的前%項。
格式如下:
TOP n [ 數字 ] [ 百分數% ]總結
以上就是本次數據庫原理與應用的全部內容,感謝您的閱讀和支持,若有表述或者代碼中的不當之處,歡迎指出!您的指出和建議能給作者帶來很大的動力!!!
總結
以上是生活随笔為你收集整理的数据库原理与应用(SQL Server)笔记 第四章 嵌套查询和其他查询子句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库原理与应用(SQL Server)
- 下一篇: 数据库原理与应用(SQL Server)