执行以下查询:
Sql代码
1.SELECTemp.ename,emp.deptno,dept.dnameFROMemp,dept
WHEREemp.deptno=dept.deptno;
执行结果如下:
Sql代码
1. ENAME DEPTNO DNAME
------------- ------------------------ - ----------SMITH 20 RESEARCHALLEN 30 SALES
说明:相等连接语句的格式要求是,在FROM从句中依次列出两个表的名称,在表的每个列前需要添加表名,用“.”分隔,表示列属于不同的表。在WHERE条件中要指明进行相等连接的列。
以上训练中,不在两个表中同时出现的列,前面的表名前缀可以省略。所以以上例子可以简化为如下的表示:
SELECT ename,emp.deptno,dname FROM emp,dept
WHERE emp.deptno=dept.deptno;
2.外连接
在以上的例子中,相等连接有一个问题:如果某个雇员的部门还没有填写,即保留为空,那么该雇员在查询中就不会出现;或者某个部门还没有雇员,该部门在查询中也不会出现。
为了解决这个问题可以用外连,即除了显示满足相等连接条件的记录外,还显示那些不满足连接条件的行,不满足连接条件的行将显示在最后。外连操作符为(+),它可以出现在相等连接条件的左侧或右侧。出现在左侧或右侧的含义不同,这里用如下的例子予以说明。
使用外连显示不满足相等条件的记录。
步骤1:显示雇员的名称、工资和所在的部门名称及没有任何雇员的部门。
执行以下查询:
Sql代码
1.SELECTename,sal,dnameFROMemp,dept
WHEREemp.deptno(+)=dept.deptno;
执行结果为:
Sql代码
1. ENAME SAL DNAME
------------------- -------------- ------------------------
3. CLARK 2450 ACCOUNTING
KING 5000 ACCOUNTINGMILLER 1300 ACCOUNTI