Oracle左連線,右連線
資料表的連線有:
1、內連線(自然連線): 只有兩個表相匹配的行才能在結果集中出現 2、外連線: 包括 (1)左外連線 (左邊的表不加限制) (2)右外連線(右邊的表不加限制) (3)全外連線(左右兩表都不加限制) 3、自連線(連線發生在一 張基表內) sql標準語法: select table1.column,table2.column from table1 [inner | left | right | full ] join table2 on table1.column1 = table2.column2; inner join 表示內連線;left join表示左外連線;right join表示右外連線;full join表示完全外連線; on子句用於指定連線條件。注意,如果使用from子句指定內、外連線,則必須要使用on子句指定連線條件; 如果使用(+)操作符指定外連線,則必須使用where子句指定連線條件。 如果主表的主鍵列和從表的外部鍵列名稱相同,那麼可以使用 natural join 關鍵字自動執行內連線操作。 select dname,ename from dept natural join emp; select a.studentno, a.studentname, b.classname from students a, classes b where a.classid(+) = b.classid; STUDENTNO STUDENTNAM CLASSNAME ---------- ---------- ------------------------------ 1 周虎 一年級一班 2 周林 一年級二班 一年級三班 以上語句是右連線: 即"(+)"所在位置的另一側為連線的方向,右連線說明 等號右側的所有 記錄均會被顯示,無論其在左側是否得到匹配。也就是說上例中,無 論會不會出現某個班級沒有一個學生的情況,這個班級的 名字都會在 查詢結構中出現。 反之: select a.studentno, a.studentname, b.classname from students a, classes b where a.classid = b.classid(+); STUDENTNO STUDENTNAM CLASSNAME ---------- ---------- ------------------------------ 1 周虎 一年級一班 2 周林 一年級二班 3 鍾林達 則是左連線,無論這個學生有沒有一個能在一個班級中得到匹配的部門號, 這 個學生的記錄都會被顯示。 select a.studentno, a.studentname, b.classname from students a, classes b where a.classid = b.classid; 這個則是通常 用到的內連線,顯示兩表都符合條件的記錄 總之, 左連線顯示左邊全部的和右邊與左邊相同的 右連線顯示右邊全部的和左邊與右邊 相同的 內連線是隻顯示滿足條件的! ...... ---------------------------------------------------------------- 補充: 使用(+)的注意事項: 1.(+)操作符只能出現在where子句中,並且不能與outer join語法同時使用。 2.當使用(+)操作符執行外連線時,如果在where子句中包含有多個條件,則必須在所有條件中都包含(+)操作符。 3.(+)操作符只適用於列,而不能用在表示式上。 4.(+)操作符不能與or和in操作符一起使用。 5.(+)操作符只能用於實現左外連線和右外連線,而不能用於實現完全外連線。 for example: select a.dname,b.ename from dept a,emp b where a.deptno = b.deptno(+) and b.deptno(+) = 10; ===============================
以下的文章主要是通過程式碼的方式來引出Oracle join的正確用法,其在實際中的應用比例還是佔為多數的,如果你對這一新開發的技術,心存好奇的話,以下的文章將會揭開它的神祕面紗。希望你在瀏覽完之後會有所收穫。
內連線
左連線
右連線
完全連線
迪卡爾
9i和sqlserver一樣 left join,right join,full join 分為1. INNER JOIN 2. LEFT JOIN 3. RIGHT JOIN 4.LEFT OUTER JOIN 首先設定一個我們要用的兩個表 表A 表B ID NAME ID CLASS 1 IBM 1 C1 2 SONY 3 C3 3 BMW 4 C4 1 INNER JOIN: SELECT * FROM A INNER JOIN B ON A.ID=B.ID 得表 ID NAME CLASS 1 IBM C1 3 BMW C3 對了 就是 兩個表的ID都存在並相同 得到這兩個表的組合表 2 LEFT JOIN : SELECT * FROM A LEFT JOIN B ON A.ID=B.ID 得表 ID NAME CLASS 1 IBM C1 2 SONY null 3 BMW C3 沒暈吧 如果還有方向感 就行 LEFT(左) 得到的是A(left語句的左邊的表)的所有記錄 而B表對應的記錄沒有的話也要補齊 (真霸道! 呵呵) 3 RIGHT JOIN : SELECT * FROM A RIGHT JOIN B ON A.ID=B.ID 得表 ID NAME CLASS 1 IBM C1 3 BMW C3 4 null C4 對了RIGHT(右) 得到的是B(right語句的右邊的表)的所有記錄 而A表對應的記錄沒有的話也要補齊 (我也翻身了! 呵呵) 4 FULL OUTER JOIN: SELECT * FROM A FULL OUTER JOIN B ON A.ID=B.ID 得表 ID NAME CLASS 1 IBM C1 2 SONY null 3 BMW C3 4 null C4 上述的相關內容就是對Oracle join的用法的描述,希望會給你帶來一些幫助在此方面。 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11320622/viewspace-675434/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 左連線,右連線
- Oracle的左連線和右連線Oracle
- 內連線、左連線、右連線
- 左連線與右連線
- 左連線和右連線
- Oracle左外連線、右外連線、完全外連線以及(+)號用法Oracle
- Oracle 左外連線、右外連線、全外連線小總結Oracle
- 【SQL】Oracle的內連線、左外連線、右外連線及全外連線SQLOracle
- SQL中的左連線和右連線SQL
- oracle sql內連線_左(右)連線_全外連線_幾種寫法OracleSQL
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- mysql 左連線,右連線,內連結,exists等MySql
- SQL的四種連線:內連線 左外連線 右外連線 全連線SQL
- mysql INNER JOIN、LEFT JOIN、RIGHT JOIN;內連線(等值連線)、左連線、右連線MySql
- 深入理解SQL的四種連線-左外連線、右外連線、內連線、全連線SQL
- pl/sql裡的左連線和右連線符號“+”SQL符號
- Oracle內連線、外連線、右外連線、全外連線小總結Oracle
- sql和hql中join語句區別,以及hibernate中內連線,迫切內連線,左外連線,迫切左外連線,右外連線的區別(合集)...SQL
- 內聯,左外聯,右外聯,全連線,交叉連線 的區別
- mysql左外連線MySql
- 深入淺出SQL之左連線、右連線和全連線SQL
- InfoSet中左外連線
- Oracle(+)連線與Join連線Oracle
- ORACLE 半連線與反連線Oracle
- Oracle 表連線方式詳解(外連結、內連線、自連線)Oracle
- PHP 連線 OraclePHPOracle
- Servlet連線OracleServletOracle
- PHP 連線oraclePHPOracle
- jdbc連線oracleJDBCOracle
- sqlserver連線oracleSQLServerOracle
- mysql 連線oracleMySqlOracle
- navicat 連線 oracleOracle
- Oracle 表連線Oracle
- SQLSERVER 連線 ORACLESQLServerOracle
- ruby連線OracleOracle
- oracle外連線Oracle
- ORACLE 連線方式Oracle
- Oracle連線方式Oracle