Oracle表的內連線與外連線的操作實現
對於兩張資料表進行資料查詢時,對於消除笛卡爾積主要是依靠連線模式處理的,而對於資料庫的定義有兩種:內連線和外連線
內連線:使用WHERE子句消除笛卡爾積,這就屬於內連線,只有滿足條件的資料才會顯示
外連線:分為三種,左外連線,右外連線,全外連線
為了更好的觀察到連線的區別,現在已經在部門表中提供了
內連線實現效果
對於資料表的連線操作,從實際使用來講,各個資料庫都是有所支援的,所以對於所有的資料庫,進行表連線最好的做法是利用以下的語法完成:
使用左連線,希望所有的僱員資訊都顯示出來,即便他沒有對應的部門
觀察三:使用右外連線,將所有的部門資訊都顯示出來
內連線就是所有滿足關聯條件的資料出現,不滿足的不出現,外連線就是指定一張資料表中的全部內容都顯示,但是沒有對應關係的其他表則不顯示
第二步:加入領導資訊,需要引入自身關聯,而後消除笛卡爾積
第三步:發現EMP表(資料不完整),因為資料不滿足於等值關聯判斷,所以想讓資訊顯示完整,則必須使用外連線控制,
範例:實現自然連線(內連線)
3、使用自然連線是要求兩張表的欄位名稱相同,但如果某一天兩張表不相同了,或者兩張表中有兩組欄位都是重名的,所以這種利用on子句指定關聯條件,而利用USING子句設定關聯欄位,
範例:使用USING子句設定關聯欄位實現自然連線
4、外連線,語法:
範例:觀察左外連線
範例:觀察右外連線
觀察全外連線
資料集合操作
資料集合:交集,差集,並集,補集。
每一次查詢實際上都會返回資料集合,所以返回的結果上可以使用UNION UNION ALL MINUS INTSECT實現集合操作。
此時的語法為以下形式:
驗證UNION
此時的查詢結果已經連線在一起了,但是UNION的處理過程是取消重複元素
UNION ALL 操作(將所有結果合併)
例:驗證INTERSECT操作(交集)
例:MINUS返回差集
需要注意的是,由於集合的操作最終是需要將若干個查詢合併成一個查詢,所以要求這若干個查詢結果所返回的資料結構必須相同
例:INTERSECT求交集失敗例項