Oracle中表的四种衔接形式解说
Oracle数据库 中 表 的 衔接 是指在一个SQL语句中经过表与表之间的关连,从一个或多个表中检索相关的数据,大体上表与表之间的衔接重要可分四种,区分为相等衔接,外衔接,不等衔接和自衔接,本文将重要从以下几个典型的例子来剖析Oracle表的四种不同衔接形式,宿愿下文中讲到的对大家能够有所协助。
1. 相等衔接
经过两个表具备相反意义的列,可以建设相等衔接条件。
只要衔接列上在两个表中都发生且值相等的行才会出如今查问结果中。
例 查问员工消息以及对应的员工所在的部门消息;
SELECT * FROM EMP,DEPT;
SELECT * FROM EMP,DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO;
REM 显示工资超越2000的员工消息以及对应的员工的部门称号。
2. 外衔接
关于外衔接,Oracle中可以经常使用“(+)”来示意,9i可以经常使用LEFT/RIGHT/FULL OUTER JOIN,上方将配合实例逐一引见。除了显示婚配相等衔接条件的消息之外,还显示不可婚配相等衔接条件的某个表的消息。
外衔接驳回(+)来识别。
A) 左条件(+) = 右条件;
代表除了显示婚配相等衔接条件的消息之外,还显示右条件所在的表中不可婚配相等衔接条件的消息。
此时也称为"右外衔接".另一种示意方法是:
SELECT ... FROM 表1 RIGHT OUTER JOIN 表2 ON 衔接条件
B) 左条件 = 右条件(+);
代表除了显示婚配相等衔接条件的消息之外,还显示左条件所在的表中不可婚配相等衔接条件的消息。
此时也称为"左外衔接".
SELECT ... FROM 表1 LEFT OUTER JOIN 表2 ON 衔接条件
例 显示员工消息以及所对应的部门消息
不可显示没有部门的员工消息
不可显示没有员工的部门消息
SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO;
间接做相等衔接:
SELECT * FROM EMP JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;
REM 显示员工消息以及所对应的部门消息,显示没有员工的部门消息
SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO(+) = DEPT.DEPTNO;
SELECT * FROM EMP RIGHT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;
REM 显示员工消息以及所对应的部门消息,显示没有部门的员工消息
SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO(+);
SELECT * FROM EMP LEFT OUTER JOIN DEPT ON EMP.DEPTNO = DEPT.DEPTNO;
3. 不等衔接
两个表中的相关的两列启动不等衔接,比拟符号普通为>,<,...,BETWEEN.. AND..
REM SALGRADE
DESC SALGRADE;
SELECT * FROM SALGRADE;
REM 显示员工的编号,姓名,工资,以及工资所对应的级别。
SELECT EMPNO,ENAME,SAL,SALGRADE.* FROM SALGRADE,EMP
WHERE EMP.SAL BETWEEN LOSAL AND HISAL;
REM 显示雇员的编号,姓名,工资,工资级别,所在部门的称号;
SELECT EMPNO,ENAME,SAL,GRADE,DNAME FROM EMP,DEPT,SALGRADE
WHERE EMP.DEPTNO = DEPT.DEPTNO AND EMP.SAL BETWEEN LOSAL AND HISAL;
4. 自衔接
自衔接是数据库中经常要用的衔接形式,经常使用自衔接可以将自身表的一个镜像当作另一个表来看待,从而能够获取一些不凡的数据。上方引见一下自衔接的方法:
将原表复制一份作为另一个表,两表做笛卡儿相等衔接。
例 显示雇员的编号,称号,以及该雇员的经理称号
SELECT WORKER.ENAME,WORKER.MGR,MANAGER.EMPNO,MANAGER.ENAME FROM EMP WORKER,EMP MANAGER
WHERE WORKER.MGR = MANAGER.EMPNO;
Oracle数据库中表的衔接形式就分为上文中引见的四种,把握好Oracle数据库中表的衔接形式是大家学好Oracle数据库的基础常识,也是大家肯定要把握的,宿愿大家都能够从上文中触及到的内容中有所收获。