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,当找不到相应的数据项的时候就置空。因此这种组合右表中的数据会全部显示,左表中的数据只显示与右表中可以匹配的.上面的查询语句可以理解为,查看所有部门的员工分布情况.
没有不努力的天才