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 wherea.a=
b.a;
---左連線
select * from dali.test1 a, dali.test2 b wherea.a=
b.a(+);
---右連線
select * from dali.test1 a, dali.test2 b where a.a(+)=b.a;
---完全連線
select * from dali.test1 a, dali.test2 b wherea.a=
b.a(+)
union
select * from dali.test1 a, dali.test2 b where a.a(+)=b.a;
---迪卡爾
select * from dali.test1, dali.test2;
在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 ona.id=b
.id
得表 id name class
1 ibm c1
3 bmw c3
對了 就是 兩個表的id都存在並相同 得到這兩個表的組合表
2
left join : select * from a left join b ona.id=b
.id
得表 id name class
1 ibm c1
2 sony null
3 bmw c3
在oracle join的用法中上面的相關操作可說是很複雜的。 如果還有方向感 就行 left(左) 得到的是a(left語句的左邊的表)的所有記錄 而b表對應的記錄沒有的話也要補齊
3
right join : select * from a right join b ona.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 ona.id=b
.id
得表 id name class
1 ibm c1
2 sony null
3 bmw c3
4 null c4
oracle查詢連線
select from emp select from dept 左連線 1 查詢與左邊表dept 4 相關聯的資料,如deptno 40在右邊沒有對應的資料,則顯示為空 select from dept left join emp on dept.deptno emp.deptno 查詢與左邊表相...
Oracle連線查詢
1 內連線 select e.d.dname from emp e,dept d where e.deptno d.deptno 隱式內連線查詢實際的語句可以為 select e.d.dname from emp e inner join dept d on d.deptno e.deptno 2 ...
Oracle連線查詢
交叉連線 會產生笛卡爾積 select from emp cross join dept 自然連線 可自動匹配關聯欄位並消除笛卡爾積 select from emp natural join dept join.using,using子句後跟關聯的字段 select from emp e join ...