--内连接是左边匹配右边表,有对应的则显示
--左连接是已左边表作为基准匹配右边表,如果右边表没有对应的则为null
--右连接是已右边表作为基准匹配左边表,如果左边表没有对应的则为null
--完全连接是左边表匹配右边表,如果有则显示没有则显示为null
--交叉连接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉连接也称作笛卡尔积。
--1)内连接
select a.*,b.* from ATABLE a inner join BTABLE b on a.id=b.parent_id ;
--2)左连接
select a.*,b.* from ATABLE a left join BTABLE b on a.id=b.parent_id;
--3) 右连接
select a.*,b.* from ATABLE a right join BTABLE b on a.id=b.parent_id;
--4)完全连接
select a.*,b.* from ATABLE a full join BTABLE b on a.id=b.parent_id;
--交叉联接
SELECT a.*,b.* FROM ATABLE a CROSS JOIN BTABLE b ;
--自联接
SELECT a.*,b.* FROM ATABLE a,BTABLE b WHERE a.id=b.parent_id;
--2)左外连接
select a.*,b.* from ATABLE a left OUTER join BTABLE b on a.id=b.parent_id;
--3) 右外连接
select a.*,b.* from ATABLE a right OUTER join BTABLE b on a.id=b.parent_id;
--4)完全外连接
select a.*,b.* from ATABLE a full OUTER join BTABLE b on a.id=b.parent_id;
a表 id name
b表 id job parent_id
a.id同parent_id 存在关系
===============================================================================================
SQL脚本:
===============================================================================================
create table ATABLE
(
id VARCHAR2(10),
name VARCHAR2(100)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
commit;
insert into A (id, name)
values ('1', 'qq');
insert into A (id, name)
values ('2', 'bb');
commit;
===========================================================================
create table BTABLE
(
id VARCHAR2(10),
job VARCHAR2(100),
parent_id VARCHAR2(100)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
insert into B (id, job, parent_id)
values ('1', '工作一', '1');
insert into B (id, job, parent_id)
values ('2', '工作二', '1');
commit;