Oracle PL/SQL以內聯接、外聯接、交叉鏈接

Oracle PL/SQL以內聯接、外聯接、交叉鏈接
oracle的聯接分以下幾種:
  內聯接(inner join)。
  外聯接(outer join):全聯接(full join)、左聯接(left join)、右聯接(right join)。
  交叉聯接(cross join)。
  外聯接與內聯接不同,外鏈接返回到查詢結果中的不只包含符合條件的行,還包括左表(左外鏈接),右表(右外鏈接)或者兩個鏈接表(全外鏈接)中的全部不符合條件的數據行。
 
  0.內聯接 ([inner] join)
內聯結就是將左表的全部數據分別於右表的每條數據進行鏈接組合,返回的結果爲同時知足左右表聯接條件的數據。
SQL語句以下:
select * from mt_pb_org o [inner] join mt_pb_orgframe f on (o.PB_ORGFRAMEID = f.PB_ORGFRAMEID);
等價語句:
select * from mt_pb_org o,mt_pb_orgframe f where o.pb_orgframeid = f.pb_orgframeid;
   1.左聯接 (left [outer] join)
左外聯結就是將左表的全部數據分別於右表的每條數據進行鏈接組合,返回的結果除內鏈接的數據外,還有左表中不符合條件的數據,並在右表的相應列中填上null值。
SQL語句以下:
select * from mt_pb_org o left join mt_pb_orgframe f on o.PB_ORGFRAMEID = f.PB_ORGFRAMEID;
等價語句:
select * from mt_pb_org o,mt_pb_orgframe f where o.pb_orgframeid = f.pb_orgframeid(+);
   2.右聯接 (right [outer] join)
右外聯結就是將右表中的全部數據分別與左表的每條數據進行鏈接組合,返回的結果除了內鏈接的數據外,還有右表中不符合條件的數據,並在左表相應的列中填上null值。
SQL語句以下:
select * from mt_pb_org o right join mt_pb_orgframe on o.pb_orgframeid = f.pb_orgframeid;
等價語句:
select * from mt_pb_org o,mt_pb_orgframe f where o.pb_orgframeid(+) = f.pb_orgframeid;
   3.全外聯接 (full [outer] join)
全外聯接就是將左表的全部數據分別與右表的每條數據進行鏈接組合,返回的結果除了內鏈接的數據外,還有兩個表中不符合條件的數據,並在左表或者右表的相應列中填上null值。
SQL語句以下:
select * from mt_pb_org o full join mt_pb_orgframe o.pb_orgframeid = f.pb_orgframeid;
   4.交叉鏈接(cross join)
交叉鏈接不帶WHERE 子句,它返回被鏈接的兩個表全部數據行的笛卡爾積,返回到結果集合中的數據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。
SQL語句以下:
select * from mt_pb_org o cross join mt_pb_orgframe f;
等價語句:
select * from mt_pb_org o , mt_pb_orgframe f;
相關文章
相關標籤/搜索