概述
關聯式資料庫的起源起源於數學中的集合概念.所以集合與集合之間,也同樣繼承了數學集合之間的運算.而對於在關聯式資料庫中,常常用於兩個資料集中並沒有直接的關聯式資料庫中的「關係」,比如外來鍵.但兩個資料集會有間接的關係,比如兩屆比賽,參加比賽人員集合之間會有間接關係.
資料集運算的種類
在t-sql中,關係運算實際上可以分為四類,首先看我們舉例子用的表:
這裡的例子表分別為兩個不同會議參加的人員記錄,分別為meeting1和meeting2,如下:
1_1 1_2
關係運算的具體可以分為以下四類:
1.a∩b,既是所求資料集既在a中,又在b中
在例項表中,實際的例子為既參加第乙個會議,又參加第二個會議人的集合,如下圖: 2
2.a∪b,既所求資料在資料集a中,或在資料集b中
在例項表中,實際的例子為參加第乙個會議,或參加第二個會議人的集合,如下圖: 3
3.a-b,既所求資料在資料集a中,不在資料集b中
在例項表中,實際的例子為參加了第乙個會議,同時沒有參加第二個會議的人的集合,如下圖: 4
4.b-a,既所求資料在資料集b中,不在資料集a中
這個其實和上面第三種情況沒有本質區別,只是順序顛倒了一下,如下圖: 5
資料集的**
在t-sql中,參與資料集運算的兩個資料集可以來自任何返回資料集的表示式.比如,一張表,一張表的子集,多張表,臨時表變數,虛擬列,甚至是乙個scalar值
資料集運算的條件
並不是所有的資料集都可以做運算。就像乙個蘋果+乙個鴨梨不能等於2一樣,在t-sql中,資料集之間的運算需要符合下面3個條件:
1.兩個資料集之間必須有相同數量的列(column)
2.兩個資料集之間列出現的次序必須一致
3.兩個資料集之間每乙個對應的列的資料型別必須匹配
資料集運算在t-sql中的實現
1.a∪b 使用union實現
t-sql中提供了union來實現a∪b的運算,實際上union有兩個版本,分別為:
union
union表示了a∪b的關係,當遇到兩個資料集中相同的行時,保留唯一乙個: 6
union all
union all同樣實現了a∪b的邏輯,但與union不同的是,當遇到兩個資料集中重複的行時,全部保留: 7
2.a∩b,使用intersect實現
t-sql提供了intersect關鍵字來實現a∩b的關係: 8
3.a-b,使用except實現
t-sql提供了except關鍵字來實現a-b的關係: 9
資料集運算的別名和排序
如果沒有為資料列指定別名,則資料列的名稱按照出現在第乙個集合對應的列名算: 10
做union後: 11
如若我們想自定義列名,則需要為資料集運算**現在第一位的資料集指定別名: 12
對運算後的結果進行排序
對運算後的結果進行排序是一件非常簡單的事情,只需要在運算的最後加上order by子句,但是這裡一定要注意:
1.order by是對整個運算後的結果排序,並不是對單個資料集
2.order by後面排序的欄位名稱是第乙個資料集的欄位名或者別名 13
總結
分類: t-sql
資料集之間的運算
關聯式資料庫的起源起源於數學中的集合概念.所以集合與集合之間,也同樣繼承了數學集合之間的運算.而對於在關聯式資料庫中,常常用於兩個資料集中並沒有直接的關聯式資料庫中的 關係 比如外來鍵.但兩個資料集會有間接的關係,比如兩屆比賽,參加比賽人員集合之間會有間接關係.在t sql中,關係運算實際上可以分為...
資料集之間的運算
關聯式資料庫的起源起源於數學中的集合概念.所以集合與集合之間,也同樣繼承了數學集合之間的運算.而對於在關聯式資料庫中,常常用於兩個資料集中並沒有直接的關聯式資料庫中的 關係 比如外來鍵.但兩個資料集會有間接的關係,比如兩屆比賽,參加比賽人員集合之間會有間接關係.在t sql中,關係運算實際上可以分為...
TSQL查詢給定記錄的相關資料
具體環境為sql 2000 在一內容表中給定一條記錄,查尋編號大於這裡記錄的的資料,具體 如下 create proc cmst queryinterrelated id int,給定的記錄的主鍵 num int 需要條數 asdeclare rnum int declare sql nvarcha...