1. 程式人生 > >Oracle表的內連線與外連線的操作實現

Oracle表的內連線與外連線的操作實現

對於兩張資料表進行資料查詢時,對於消除笛卡爾積主要是依靠連線模式處理的,而對於資料庫的定義有兩種:內連線和外連線

內連線:使用WHERE子句消除笛卡爾積,這就屬於內連線,只有滿足條件的資料才會顯示

外連線:分為三種,左外連線,右外連線,全外連線

為了更好的觀察到連線的區別,現在已經在部門表中提供了

內連線實現效果

對於資料表的連線操作,從實際使用來講,各個資料庫都是有所支援的,所以對於所有的資料庫,進行表連線最好的做法是利用以下的語法完成:

使用左連線,希望所有的僱員資訊都顯示出來,即便他沒有對應的部門

觀察三:使用右外連線,將所有的部門資訊都顯示出來

內連線就是所有滿足關聯條件的資料出現,不滿足的不出現,外連線就是指定一張資料表中的全部內容都顯示,但是沒有對應關係的其他表則不顯示

第二步:加入領導資訊,需要引入自身關聯,而後消除笛卡爾積

第三步:發現EMP表(資料不完整),因為資料不滿足於等值關聯判斷,所以想讓資訊顯示完整,則必須使用外連線控制,

範例:實現自然連線(內連線)

3、使用自然連線是要求兩張表的欄位名稱相同,但如果某一天兩張表不相同了,或者兩張表中有兩組欄位都是重名的,所以這種利用on子句指定關聯條件,而利用USING子句設定關聯欄位,

範例:使用USING子句設定關聯欄位實現自然連線

4、外連線,語法:

範例:觀察左外連線

範例:觀察右外連線

觀察全外連線

資料集合操作

資料集合:交集,差集,並集,補集。

每一次查詢實際上都會返回資料集合,所以返回的結果上可以使用UNION  UNION ALL   MINUS   INTSECT實現集合操作。

此時的語法為以下形式:

驗證UNION

此時的查詢結果已經連線在一起了,但是UNION的處理過程是取消重複元素

UNION ALL 操作(將所有結果合併)

例:驗證INTERSECT操作(交集)

例:MINUS返回差集

需要注意的是,由於集合的操作最終是需要將若干個查詢合併成一個查詢,所以要求這若干個查詢結果所返回的資料結構必須相同

例:INTERSECT求交集失敗例項