一、两张表
Student表
SID SNAME CLASSID
-------------------- -------------------- --------------------
001 小明 1 002 小红 2 003 小张 4Class表
ID NAME -------------------- -------------------- 1 一班 2 二班 3 三班 二、自连接只返回两张表连接列的匹配项。以下三种效果相同 select * from student s inner join class c on s.classid = c.id; select * from student s join class c on s.classid = c.id; select * from student s,class c where s.classid = c.id;SID SNAME CLASSID ID NAME
-------------------- -------------------- -------------------- -------------------- -------------- 001 小明 1 1 一班 002 小红 2 2 二班
三、笛卡儿乘积连接即不加任何条件,达到 M*N 的结果集。以下两种查询结果一样。 select * from student s cross join class c; select * from student,class;
SID SNAME CLASSID ID NAME
-------------------- -------------------- -------------------- -------------------- -------------- 001 小明 1 1 一班 001 小明 1 2 二班 001 小明 1 3 三班 002 小红 2 1 一班 002 小红 2 2 二班 002 小红 2 3 三班 003 小张 4 1 一班 003 小张 4 2 二班 003 小张 4 3 三班除了cross join不可以加on外,其它join连接都必须加上on关键字,后都可加where条件。加上条件,产生跟自连接一样的结果。 select * from student s cross join class c where s.classid = c.id;
四、左连接列出左边表全部的,及右边表符合条件的,不符合条件的以空值代替。在(+)计算时,哪个带(+)哪个需要条件符合的,另一个全部的。即放左即右连接,放右即左连接。以下结果集相同。select * from student s left join class c on s.classid = c.id; select * from student s,class c where s.classid = c.id(+);
SID SNAME CLASSID ID NAME
-------------------- -------------------- -------------------- -------------------- -------------- 001 小明 1 1 一班 002 小红 2 2 二班 003 小张 4
五、右连接与左连接一样,列出右边表全部的,及左边表符合条件的,不符合条件的用空值替代。(+)一样,它的位置与连接相反。 select * from student s right join class c on s.classid = c.id; select * from student s,class c where s.classid(+) = c.id;
SID SNAME CLASSID ID NAME
-------------------- -------------------- -------------------- -------------------- -------------- 001 小明 1 1 一班 002 小红 2 2 二班 3 三班六、全连接产生M+N的结果集,列出两表全部的,不符合条件的,以空值代替。 select * from student s full join class c on s.classid = c.id;
SID SNAME CLASSID ID NAME
-------------------- -------------------- -------------------- -------------------- -------------- 001 小明 1 1 一班 002 小红 2 2 二班 003 小张 43 三班
七、总结
(+)连接符只能Oracl中应用,join等语句其他数据库也适用。
原帖地址: