程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL的集合運算符簡介

SQL的集合運算符簡介

編輯:關於SqlServer

最近學習了SQL SERVER方面的知識,畢竟做Web應用,少不了跟數據庫打交道。學習的來源主要是《 程序員的SQL金典》這本書。

今天介紹數據庫裡面的集合運算符,它是指匹配集合的每一個結果。數據庫集合運算符包括:IN、 ANY、SOME、ALL、EISTS及EXCEPT和INTERSECT等。

(1)IN運算符:它可以用來匹配一個固定集合中的某一項。比如說一個集合裡面的年份有 (2001,2003,2005),那麼就可以有:

SELECT * FROM T_Book

WHERE FYearPublished IN(2001,2003,2005)

IN運算符,除了支持從固定的集合裡面去匹配,當然也支持動態的集合方式去匹配。比如如下方式:

SELECT * FROM T_Reader

WHERE FYearOfJoin IN

(

select FYearPublished FROM T_Book

)

(2)ANY和SOME集合運算符:在SQL SERVER裡面,ANY和SOME是同義詞,二者的用法和功能一樣(一 樣還搞兩個,不知道是不是蛋疼)。相比於IN運算符,ANY和SOME需要與其它的比較符(大於(>)、 等於(=)、小於(<)、大於等於(>=)、小於等)共同使用,而且比較符需要在它們的前面。

SELECT * FROM T_Reader

WHERE FYearOfJoin =ANY

(

select FYearPublished FROM T_Book

)

注意:和IN 運算符不同,ANY 和SOME運算符不能與固定的集合相匹配,比如下面的SQL 語句是錯誤 的:

SELECT * FROM T_Book

WHERE FYearPublished<ANY(2001,2003,2005)

(3)ALL集合運算符:在SQL SERVER裡面,ALL運算符也需要與其它的比較符(大於(>)、等於 (=)、小於(<)、大於等於(>=)、小於等)共同使用,而且比較符需要在它們的前面。

SELECT * FROM T_Book

WHERE FYearPublished<ALL

(

SELECT FYearOfJoin FROM T_Reader

)

注意:

I、與ANY和SOME 運算符相同,ALL 運算符同樣不能與固定的集合相匹配,比如下面的SQL 語句是錯 誤的:

SELECT * FROM T_Book

WHERE FYearPublished<ALL(2001,2003,2005)

II、關於使用ALL運算符,還有一項需要注意,那就是這個ALL子查詢結果為空時,匹配的結果並不是 以空的方式來處理,而是相當於全部匹配成功。所以在使用ALL運算符的時候,這一個問題很容易在系統 中造成BUG,因此使用時必須注意。比如:

SELECT * FROM T_Book

WHERE FYearPublished<ALL

(

SELECT FYearOfJoin FROM T_Reader

WHERE FProvince = 'JiangSu'

)

如果ALL子查詢的結果為空時,則將會取SELECT FYearOfJoin FROM T_Reader的全部結果來作為成功 匹配的結果。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved