以下的文章主要介紹的是Oracle中join用法,如果你是其方面的新手,對Oracle中oin的實際用法很感興趣,但是卻找不到一些資料去對其進行更深入的了解的話,你不妨浏覽以下的文章對其進行了解。
Oracle中join的用法
8i:
- create table dali.test1(a int,b int);
- create table dali.test2(a int,b int);
- insert into dali.test1 values(1,456);
- insert into dali.test1 values(2,427);
- insert into dali.test2 values(1,45456);
- insert into dali.test2 values(3,45656);
內連接
- select * from dali.test1 a, dali.test2 b where a.a=b.a;
左連接
- select * from dali.test1 a, dali.test2 b where a.a=b.a(+);
右連接
- select * from dali.test1 a, dali.test2 b where a.a(+)=b.a;
完全連接
- select * from dali.test1 a, dali.test2 b where a.a=b.a(+)
- union
- select * from dali.test1 a, dali.test2 b where a.a(+)=b.a;
迪卡爾
- select * from dali.test1, dali.test2;
9i和sqlserver一樣 left join,right join,full join
分為1. INNER JOIN 2. LEFT JOIN 3. RIGHT JOIN 4.LEFT OUTER JOIN
在實現Oracle中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