left join 临时表_表连接

论坛 期权论坛 脚本     
匿名技术用户   2021-1-5 02:33   50   0

2cb8923723edf548c3e5fb034290dcbd.png

为什么要连表?

因为要查的数据在两张表,但是又想显示在一个结果集中。

50cebc1bb6d013c1b6ca0b52ce5fdf3b.png

表连接语法

表连接分为两种语法,

1)一种为1992;

2)另一种为1999;

1.1992语法

1)笛卡尔积(无过滤条件)

select * from emp,dept;

23551470c4a600ef6f3c7915f5d546f4.png

2)等值连接

select * from emp,dept where emp.deptno=dept.deptno;

35c11c34bb4e303547d93cf447985c9d.png

3)非等值连接

select * from emp e,salgrade s where e.sal between s.losal and s.hisal;

53393abe7de3621965316c7d1bdcb549.png

4)自连接:(特殊的等值连接) 列来自于同一张表,不同角度看待表

select e1.ename ||'的上级领导是''||e2.ename from emp e1,emp e2 where e1.mgr=e2.empno;

4cbb3eaeae6aefcad9a3de68cf6d744f.png

5)外连接: 在等值基础上,确保一张表(主表)的记录都存在 从表满足则匹配,不满足补充null

--1、左外:(+)放等号左边表示左外连接(左外则表示左边表格全显示,右边没有的补空)

select * from emp e,dept d where d.deptno = e.deptno(+);

--2、右外:(+)放等号左边表示右外连接

select * from emp e,dept d where d.deptno(+) = e.deptno;

2.1999语法

1).cross join 交叉连接(交叉连接就是笛卡尔积)

select * from emp cross join dept

2).natural join 自然连接 子句基于两个表中列名完全相同的列产生连接

/*

特点:两个表有相同名字的列

数据类型相同

从两个表中选出连接列的值相等的所有行

*/

select * from emp natural join dept;

3).[inner] join 内连接 == 等值连接 如果不加inner关键字,那么默认就是内连接 ,内连接必须有on关键字

--on关键字表示连接条件

select * from emp e inner join dept d on e.deptno = d.deptno;

4).left/right [outer] join 左/右外连接 外链接也需要on关键字 left左边的表多数据 right右边的表多数据

select * from emp e left join dept d on e.deptno = d.deptno;

select * from dept d left join emp e on e.deptno = d.deptno;

select * from emp e right join dept d on e.deptno = d.deptno;

select * from dept d right join emp e on e.deptno = d.deptno;

5).full [outer] join 全外连接 左右两张表都补null

select * from dept d full outer join emp e on e.deptno = d.deptno;

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP