Oracle基础:连接查询怎么用
Oracle基础:连接查询怎么用?在SQL Server中已经学习过内联接(inner join)、外联接(outer join),外联接又分为左外联接(left outer join)和右外联接(right outer join)。Oracle中对两个表或者若干表之间的外联接用(+)表示。
案例7:请查询出工资大于2000元的,员工姓名,部门,工作,工资。
由于部门名称在dept中,其他的信息在emp表中,需要内联接才能完成。
代码演示:内联接
SQL> SELECT e.ENAME,e.JOB,e.SAL,d.DNAME 2 FROM emp e,dept d 3 WHERE e.deptno=d.deptno 4 AND e.SAL>2000;
6 rows selected |
也可以使用SQL/92标准中的内联接:
代码演示:内联接
SELECT e.ENAME,e.JOB,e.SAL,d.DNAME FROM EMP e INNER JOIN DEPT d ON e.DEPTNO=d.DEPTNO WHERE e.SAL>2000 |
这里INNER JOIN中,关键字INNER可以省略。
案例8:请查询出每个部门下的员工姓名,工资。
案例分析:
Emp表用外键deptno引用Dept表中的deptno,在Dept表中如果有某些部门没有员工,那么用内联接,没有员工的部门将无法显示,因此必须以Dept表为基准的外联接。
代码演示:外联接
SQL> SELECT e.ENAME,e.JOB,e.SAL,d.DNAME 2 FROM EMP e ,DEPT d 3 WHERE e.DEPTNO(+)=d.DEPTNO ① 4 /
18 rows selected |
代码解析:
① (+):Oracle专用的联接符,在条件中出现在左边指右外联接,出现在右边指左外联接。
也可以使用SQL/92标准的写法:
代码演示:外联接
SELECT e.ENAME,e.JOB,e.SAL,d.DNAME FROM EMP e RIGHT OUTER JOIN DEPT d ON e.DEPTNO=d.DEPTNO |
这里RIGHT OUTER JOIN中,关键字OUTER可以省略。
提示:虽然Oracle自身的联接查询语法比较好写,同时容易理解,但是为了程序便于移植,推荐使用SQL/92表中的联接查询。同时也可以与SQL Server获得一致。
-
标签错误:<!-- #Label#
labelId=20160707140604
moduleId=1
classId=12231768634
orderby=2
fields=url,title,u_info
attribute=
datatypeId=22192428132
recordCount=3
pageSize=
<htmlTemplate><dt><img src="/images/index_26${index}.jpg" width="100" height="62" /><a href="$url" title="${title}">${title}</a><span>${api.left(u_info,60)}</span></dt></htmlTemplate>
-->
- 我要参加技术沙龙