嵌套查詢 帶有in謂詞,比較運算符,any或all謂詞的子查詢


前言

1.      將一個查詢塊嵌套在另一個查詢塊的where子句或having短語的條件中的查詢稱為嵌套查詢

2.      上層的查詢塊叫外層查詢或父查詢或主查詢,下層查詢塊又稱為內層查詢或子查詢,sql語句允許多層嵌套查詢!

3.      子查詢的select語句不能使用order by子句,order by子句永遠只能對最終(或外)查詢結果排序

4.      嵌套查詢的求解方法是由里向外處理

帶有in謂詞的子查詢

1.查詢與“王林”同一個系學習的學生的所有信息

一般的查詢方法:

       步驟一:確定“王林”所在系名

       select dept from dbo.s where sn='王林'

       步驟二:查找所有計算機系的學生

      select *from dbo.s where dept='計算機'

 


2.分步寫比較麻煩,使用嵌套查詢:

select *from dbo.s where dept in(select dept from dbo.s where sn='王林')

 


3查詢選修了課程名為“數據庫”的學生學號和姓名

select * from dbo.s where sno in (select sno from dbo.sc where cno in (select cno from dbo.c where cn='c語言'))

 


帶有比較運算符的子查詢

1.帶有比較運算符的子查詢是指父查詢與子查詢之間用比較運算符進行連接。

常用的比較運算符:>、<、=、>=、<=、!=、

 

2.一個學生只能在一個系學習,所以內查詢王林所在系的結果是唯一值

3.查詢與“王林”同一個系學習的學生的所有信息(sql)

select *from dbo.s where dept =(select dept from dbo.s where sn='王林')

 


帶有any 或all謂詞的子查詢

1.      子查詢返回單值時可以用比較運算符,返回多值時必須結合使用any或all謂詞。使用any或all謂詞時必須同時使用比較運算符。

2.

>any

大於子查詢結果中的某個值

<any

小於子查詢結果中的某個值

>=any

大於等於子查詢結果中的某個值

<=any

小於等於子查詢結果中的某個值

=any

等於子查詢結果中的某個值

!=any或<>any

不等於子查詢結果中的某個值

>all

大於子查詢結果中的所有值

<all

小於子查詢結果中的所有值

>=all

大於等於子查詢結果中的所有值

<=all

小於等於子查詢結果中的所有值

=all

等於子查詢結果中的所有值

!=all或<>all

不等於子查詢結果中的任何一個值

3.查詢其他系中比信息系所有學生年齡小的學生名單(升序)

select *from dbo.s where age<all(select age from dbo.s where dept='信息') and dept !='信息' order by age asc

 或集函數處理:

select *from dbo.s where age<(select min(age) from dbo.s where dept='信息') and dept !='信息' order by age asc

 

數據庫表s,c,sc截圖請到:http://www.cnblogs.com/fuge/archive/2012/03/16/2400913.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM