--建立測試資料
create table a(id number);
create table b(id number);
insert into a values(1);
insert into a values(2);
insert into a values(3);
insert into b values(1);
insert into b values(2);
insert into b values(4);
commit;
--左:
--主流資料庫通用的方法
select * from a left join b on a.id=b.id;
--oracle特有的方法
select * from a, b where a.id=b.id(+);
id id
---------- ----------
1 1
2 2
3 --右:
--主流資料庫通用的方法
select * from a right join b on a.id=b.id;
--oracle特有的方法
select * from a, b where a.id(+)=b.id;
id id
---------- ----------
1 1
2 2
4--內--主流資料庫通用的方法
select * from a join b on a.id=b.id;
--where關聯
select * from a, b where a.id=b.id;
id id
---------- ----------
1 1
2 2
--全外
--主流資料庫通用的方法
select * from a full join b on a.id=b.id;
--oracle特有的方法
select *
from a, b
where a.id = b.id(+)
union
select *
from a, b
where a.id(+) = b.id;
id id
---------- ----------
1 1
2 23 4
--完全,也叫交叉連線或者笛卡爾積
--主流資料庫通用的方法
select * from a,b;
--或者
select * from a cross join b;
id id
---------- ----------
1 1
1 2
1 4
2 1
2 2
2 4
3 1
3 2
3 4
連線無非是這幾個
--內連線和where相同
inner join
--左向外連線,返回左邊表所有符合條件的
left join
--右向外連線,返回右邊表所有符合條件的
right join
--完整外部連線,左向外連線和右向外連線的合集
full join
--交叉連線,也稱笛卡兒積。返回左表中的每一行與右表中所有行的組合
cross join
--補充:
--左向外連線,返回左邊表所有符合條件的,
--注意這裡沒有第二個加號,會直接過濾掉資料,只顯示符合條件的記錄
select *
from a, b
where a.id = b.id(+)
and b.id = 2;
id id
---------- ----------
2 2
--左向外連線,返回左邊表所有符合條件的
--注意where上第二個加號,它的作用是修改右邊表記錄的顯示,例如如果b.id(+) = 2,顯示為2,否則顯示null
select *
from a, b
where a.id = b.id(+)
and b.id(+) = 2;
id id
---------- ----------
2 2
3 1
oracle 左右連線
在oracle pl sql中,左連線和右連線以如下方式來實現 檢視如下語句 select emp name,dept name form employee,department where employee.emp deptid department.deptid此sql文使用了右連線,即 所在位...
oracle左右連線
create table test.test1 a int,b int create table test.test2 a int,b int insert into test.test1 values 1,456 insert into test.test1 values 2,427 insert...
oracle左右連線
左連線左邊的表資料應該是全的,應該是主表,有鏈結應該是右邊的表是全的是主表 因此記為 左連線左全,右連線右全。看下面的例項 create table student id number,name varchar2 20 create table score sid number,score numb...