數據庫自學筆記(2)--- HAVING和WHERE, ANY 和 ALL,IN和EXIST。

1.HAVING和WHERE:

WHERE 和 HAVING 的做用對象不同。WHERE做用於基本表或視圖,挑出知足條件的元組。HAVING做用於組(group),通常配合GROUP BY 使用。html

 

2.ANY 和 ALL:

all 是將後面的內容當作一個總體,spa

如: >all (select age from student where sex = 'girl')上面一句語句表示比全部女生年紀大(比年紀最大的女生的年紀還要大)至關於內容的 and 語句。orm

若是是any,它表示其中任意一個條件均可以 >any (select age from student where sex = 'girl')htm

這一句表示的意思是,只要比任意一個女生年紀大就能夠了(比年紀最小的女生的年紀大)至關於內容中添加了or 語句。對象

其餘還有不少種應用,好比<>ANY 表明 不等於查詢結果中的某個值。blog

 

3.IN和EXIST:

EXIST:存在,後面通常都是子查詢,當子查詢返回行數時,exists返回true。若是內層查詢結果爲null的話,返回false.ci

select * from class where exists (select'x"form stu where stu.cid=class.cid)get

當in和exists在查詢效率上比較時,in查詢的效率快於exists的查詢效率 。form

exists(xxxxx)後面的子查詢被稱作相關子查詢, 他是不返回列表的值的.class

 

IN:包含 ,查詢和全部女生年齡相同的男生 select * from stu where sex='男' and age in(select age from stu where sex='女')

in()後面的子查詢 是返回結果集的,換句話說執行次序和exists()不同.

子查詢先產生結果集, 而後主查詢再去結果集裏去找符合要求的字段列表去.符合要求的輸出,反之則不輸出.

 

 

參考:http://www.javashuo.com/article/p-ffxvcutn-dc.html

相關文章
相關標籤/搜索