oracle多表关联查询和子查询
一、多表关联查询
例子:
sql> create table student1
(
sid varchar(3),
sname varchar(6),
sage number(3));
table created.
sql> create table course1
(
sid varchar(3),
cname varchar(8),
cno number(3));
table created.
student1表
sql> select * from student1;
sid sname sage
--- ------ ----------
01 李逍遥 21
02 林月如 20
03 拜月 100
course1表
sql> select * from course1;
sid cname cno
--- -------- ----------
01 历史 12
02 化学 11
22 德语 18
1、内连接(inner join……on/join on):只连接匹配的行
sql> select * from student1 inner join course1 on student1.sid=course1.sid;
sid sname sage sid cname cno
--- ------ ---------- --- -------- ----------
01 李逍遥 21 01 历史 12
02 林月如 20 02 化学 11
2、左连接(left join……on):包含左边表的全部行,不管右边表的是否存在与它们匹配的行
sql> select * from student1 left join course1 on student1.sid=course1.sid;
sid sname sage sid cname cno
--- ------ ---------- --- -------- ----------
01 李逍遥 21 01 历史 12
02 林月如 20 02 化学 11
03 拜月 100
3、右连接(right join……on):包含右边表的全部行,不管左边表是否存在与它们匹配的行
sql> select * from student1 right join course1 on student1.sid=course1.sid;
sid sname sage sid cname cno
--- ------ ---------- --- -------- ----------
01 李逍遥 21 01 历史 12
02 林月如 20 02 化学 11
22 德语 18
4、全外连接(full outer join…