多表连接函数
分类:等值连接 左外连接 右外链接 全连接 笛卡尔积
前提条件,创建两张表,stu和address 展示如下:
SNO SNAME SNO ZZ
…………….. …………………..
1 A 1 a
2 B 2 b
4 D 3 c
[ stu ] [ address ]
(1)等值连接 按照给定条件找出相等的行并进行连接
select …… from 表A 别名 , 表B 别名 where……
select s.sno ,s.sname,a.sno, a.zz from stu s ,address a where s.sno=a.sno;
select …… from 表A 别名 inner join 表B 别名 on ……
select s.sno ,s.sname,a.sno, a.zz from stu s inner join address a on s.sno=a.sno;
SNO SNAME SNO &ZZ
……………………………………
1 A 1 a
2 B 2 b
(2)左外连接 左表内容全部显示,右表只显示匹配内容
select …… from 表A 别名 , 表B 别名 where……(+)
select s.sno , s.sname , a.sno, a.zz from stu s ,address a where s.sno=a.sno(+);
select …… from 表A 别名 left outer join 表B 别名 on……
select s.sno ,s.sname ,a.sno, a.zz from stu s left outer join address a on s.sno=a.sno;
SNO SNAME SNO ZZ
…………………………………….
1 A 1 a
2 B 2 b
4 D
(3)右外连接 右表内容全部显示,左表只显示匹配内容
select …… from 表A 别名 , 表B 别名 where (+)… …
select s.sno ,s.sname,a.sno, a.zz from stu s ,address a where s.sno(+)=a.sno;
select …… from 表A 别名 right outer join 表B 别名 on……
select s.sno ,s.sname,a.sno, a.zz from stu s right outer join address a on s.sno=a.sno;
SNO SNAME SNO ZZ
…………………………………….
1 A 1 a
2 B 2 b
3 c
(4)全连接 左 右两表内容全部显示,无匹配处写空
select …… from 表A 别名 right outer join 表B 别名 on……
select s.sno ,s.sname,a.sno, a.zz from stu s full outer join address a on s.sno=a.sno;
SNO SNAME SNO ZZ
…………………………………….
1 A 1 a
2 B 2 b
3 c
4 D
(5)笛卡尔积 前一个表的每一行均与后一个表的所有行连接并汇总。
select s.sno ,s.sname,a.sno, a.zz from stu s ,address a ;
SNO SNAME SNO ZZ
…………………………………………….
1 A 1 a
1 A 2 b
1 A 3 c
2 B 1 a
2 B 2 b
2 B 3 c
4 D 1 a
4 D 2 b
4 D 3 c