資料庫的集合運算(表的加減法和聯結)

2021-12-30 12:40:34 字數 1673 閱讀 3652

先解釋一下什麼是集合運算。

在資料庫中,集合運算就是對滿足同一規則的記錄進行的加減等四則運算。

集合運算子包括:union(並集)、intersect(交集)、except(差集)。

集合運算子可以去除重複行。如果希望集合運算子保留重複行,就需要使用all選項。

※mysql不支援intersect和except。oracle中使用minus代替except

表的加減法(以行為單位)

一、加法——union

select a,b from t1 union select a,b from t2

注意事項:①作為運算物件的記錄的列數、列的型別必須一致

②union會去除重複的記錄。包含重覆記錄可以使用all

③order by子句只能在最後使用一次。

二、選取表中公共部分——intersect

語法和注意事項同union。

select a,b from t1 intersect select a,b from t2

三、記錄的減法——except

語法同union。

except有一點要特別注意:減數和被減數的位置不同,得到的結果也不相同。

表的聯結(以列為單位對錶進行聯結)

一、內連線——inner join

有兩種,顯式的和隱式的,返回連線表中符合連線條件和查詢條件的資料行。(所謂的鏈結表就是資料庫在做查詢形成的中間表)。

二、外連線——outer join

外連不但返回符合連線和查詢條件的資料行,還返回不符合條件的一些行。

外連線分三類:左外連線(left outer join)、右外連線(right outer join)和全外連線(full outer join)。

三者的共同點是都返回符合連線條件和查詢條件(即:內連線)的資料行。不同點如下:

左外連線還返回左表中不符合連線條件單符合查詢條件的資料行。

右外連線還返回右表中不符合連線條件單符合查詢條件的資料行。

全外連線還返回左表中不符合連線條件單符合查詢條件的資料行,並且還返回右表中不符合連線條件單符合查詢條件的資料行。

全外連線實際是上左外連線和右外連線的數學合集(去掉重複),即「全外=左外 union 右外」。

說明:左表就是在「(left outer join)」關鍵字左邊的表。右表當然就是右邊的了。在三種型別的外連線中,outer 關鍵字是可省略的。

三、聯合連線——union join

這是一種很少見的連線方式。oracle、mysql均不支援,其作用是:找出全外連線和內連線之間差異的所有行。這在資料分析中排錯中比較常用。也可以利用資料庫的集合操作來實現此功能。

四、自然連線——natural inner join

自然連線無需指定連線列,sql會檢查兩個表中是否相同名稱的列,且假設他們在連線條件中使用,並且在連線條件中僅包含乙個連線列。不允許使用on語句,不允許指定顯示列,顯示列只能用*表示(oracle環境下測試的)。對於每種連線型別(除了交叉連線外),均可指定natural

注意事項:

on後面的條件(on條件)和where條件的區別:

where條件:在有on條件的select語句中是過濾中間表的約束條件。在沒有on的單錶查詢中,是限制物理表或者中間查詢結果返回記錄的約束。

在兩表或多表連線中是限制連線形成最終中間表的返回結果的約束。

on只進行連線操作,where只過濾中間表的記錄

資料庫的集合運算(表的加減法和聯結)

先解釋一下什麼是集合運算。在資料庫中,集合運算就是對滿足同一規則的記錄進行的加減等四則運算。集合運算子包括 union 並集 intersect 交集 except 差集 集合運算子可以去除重複行。如果希望集合運算子保留重複行,就需要使用all選項。mysql不支援intersect和except。...

SQL學習筆記 集合運算 表的加減運算

集合在資料庫領域表示記錄的集合,用來進行集合運算的運算子稱為集合運算子 加法運算 select product id,product name from product1 union select product id,product name from product2 運算結果 product ...

鍊錶 一元多項式的加 減法運算

問題描述 假設2個稀疏一元多項式分別由帶頭結點的有序單鏈表a和b儲存 指數項遞增有序 現要求設計乙個演算法,實現稀疏一元多項式的加減法計算。要求使用a和b的原儲存空間 運算後b不再存在,a鍊錶中儲存結果多項式 輸入中的單鏈表的長度不得在計算演算法中利用,僅作為建表使用。注意 加 減法計算後,如某一項...