天天看點

oracle中的四種連接配接

1.       連接配接 : 将兩個表 ( 或多個表 ) 中的行按照給定的條件進行拼接而形成的新表 . 連接配接和子查詢都要操作兩個類或多個表 , 他們的差別是 : 連接配接可以合并兩個表或多個表的資料 , 而帶子查詢的 SELECT 語句的結果隻能來自一個表 , 子查詢的結果僅僅是用作篩選結果的參照 . 因為在三種子查詢中 , 均是針對某個表中的某一列值來判斷的 . 在查詢中使用子查詢可以使查詢邏輯更為清晰 , 明了 . 而使用連接配接則具有更快的執行速度 .

通常連接配接可以分為以下幾類 :

1). 等值連接配接 : 不去除重複字段

運算類型 : 雙目運算

運算條件 : 兩個表的某些字段值相同 ( 字段名可以不同 )

2) 自然連接配接 : 其結果是在共同屬性上進行等值連接配接後再去除重複字段名後所得到的新表 .

運算類型 : 雙目運算

運算條件 : 兩個表具有共同屬性 ( 列名相同 )

JOIN 連接配接 :( 建立于等值連接配接基礎之上 )

<table_source><join_type><table_source>ON<search_condition>

|<table_source>CORSS JOIN<table_source>

|<joined_table>

Table_source 為連接配接的表 ,join_type 為連接配接的類型 ,ON 用于指定連接配接條件 ,join_type 的格式為 :

[INNER]{LEFT|RIGHT|FULL}[OUTER][join_hint]JOIN

  3) 内連接配接 : 内連接配接按照 ON 所指定的連接配接條件合并兩個表 ( 使用内連接配接後仍可以使用 WHERE), 不去除重複字段 . 内連接配接可操作多個表 .

運算類型 : 雙目運算

4) 外連接配接 : 其運作結果不但包含滿足連接配接條件的行 , 還包括相應表中的所有行 . 外連接配接隻能操作兩個表 .

運算類型 : 雙目運算

外連接配接分類 :

* 左外連接配接 : 結果表中除了包含滿足連接配接條件的行外 , 還包括左邊的所有行 .

* 右邊連接配接 : 結果表中除了包含滿足連接配接條件的行外 , 還包括右邊的所有行 .

* 完全外連接配接 : 結果表中除了包含滿足連接配接條件的行外 , 還包含兩個表中的所有行 .

5) 交叉連接配接 : 交叉連接配接是兩個表的笛卡爾積 . 交叉表不能有條件 , 且不能帶 WHERE 字句 .