oracle多表关联查询和子查询
一、多表关联查询
例子:
SQL> create tablestudent1
(
sidvarchar(3),
snamevarchar(6),
sagenumber(3));Tablecreated.
SQL> create tablecourse1
(
sidvarchar(3),
cnamevarchar(8),
cnonumber(3));Table created.
student1表
SQL> select * fromstudent1;
SID SNAME SAGE--- ------ ----------
01 李逍遥 21
02 林月如 20
03 拜月 100
course1表
SQL> select * fromcourse1;
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