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