Oracle中的一连接语句

首先构建场景

相应表中数据如下:

1 SELECT * FROM EMPLOYEE;

1 SELECT * FROM DEPTINFO;

连接方式:

1、 ,

1 SELECT E.EMPNAME, D.DEPNAME
2   FROM EMPLOYEE E, DEPTINFO D
3  WHERE E.DEPTID = D.DEPID
4  ORDER BY DEPNAME;

由此可见“,”连接是将两张表进行等值连接

2、join

1 SELECT E.EMPNAME, D.DEPNAME
2   FROM EMPLOYEE E
3   JOIN DEPTINFO D
4     ON E.DEPTID = D.DEPID
5  ORDER BY DEPNAME;

3、inner join

1 SELECT E.EMPNAME, D.DEPNAME
2   FROM EMPLOYEE E
3  INNER JOIN DEPTINFO D
4     ON E.DEPTID = D.DEPID
5  ORDER BY DEPNAME;

“,”,join,inner join都是等值连接,所谓等值连接是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组,如上的例子就是从EMPLOYEE和DEPTINFO两张表的公共数据项(DEPTID)相同的那些数据项

4、left join

1 SELECT E.EMPNAME, D.DEPNAME
2   FROM EMPLOYEE E
3  LEFT JOIN DEPTINFO D
4     ON E.DEPTID = D.DEPID
5  ORDER BY DEPNAME;

LEFT JOIN是左连接,就是用左表EMPLOYEE去匹配右表DEPTINFO,当找不到相应的数据项的时候就置空。因此这种组合左表中的数据会全部显示,右表中的数据只显示与左表中可以匹配的.上面的查询语句可以理解为,查找每个员工的部门.

5、right join

1 SELECT E.EMPNAME, D.DEPNAME
2   FROM EMPLOYEE E
3  RIGHT JOIN DEPTINFO D
4     ON E.DEPTID = D.DEPID
5  ORDER BY DEPNAME;

RIGHR JOIN是右连接,就是用右表DEPTINFO去匹配左表EMPLOYEE,当找不到相应的数据项的时候就置空。因此这种组合右表中的数据会全部显示,左表中的数据只显示与右表中可以匹配的.上面的查询语句可以理解为,查看所有部门的员工分布情况.

转载于:https://www.cnblogs.com/zhaowencong/p/4210615.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值