oracle使用using关键字

前端之家收集整理的这篇文章主要介绍了oracle使用using关键字前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

转载自:http://www.2cto.com/database/201503/384694.html


@H_502_14@oracle使用using关键字

sql/92标准可以使用using关键字来简化连接查询,但是只是在查询满足下面两个条件时,才能使

用using关键字进行简化。
1.查询必须是等值连接。
2.等值连接中的列必须具有相同的名称和数据类型。

例如:使用using关键字,如下:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
select emptno,ename,sal,deptno,dname from emp e inner join dept d using(deptno);@H_502_93@
sql> select e.empno,e.ename,e.sal,d.dname from@H_502_93@
2@H_502_93@ emp e inner join dept d using(deptno);@H_502_93@
EMPNO ENAME SAL DEPTNO DNAME@H_502_93@
---------- ---------- ---------- ---------- --------------@H_502_93@
7369@H_502_93@ SMITH @H_502_93@ 800@H_502_93@ 20@H_502_93@ RESEARCH@H_502_93@
7499@H_502_93@ ALLEN @H_502_93@ 1600@H_502_93@ 30@H_502_93@ SALES@H_502_93@
7521@H_502_93@ WARD @H_502_93@ 1250@H_502_93@ SALES@H_502_93@
7566@H_502_93@ JONES @H_502_93@ 2975@H_502_93@ RESEARCH@H_502_93@
7654@H_502_93@ MARTIN @H_502_93@ SALES@H_502_93@
7698@H_502_93@ BLAKE @H_502_93@ 2850@H_502_93@ SALES@H_502_93@
7782@H_502_93@ CLARK @H_502_93@ 2450@H_502_93@ 10@H_502_93@ ACCOUNTING@H_502_93@
7788@H_502_93@ SCOTT @H_502_93@ 3000@H_502_93@ RESEARCH@H_502_93@
7839@H_502_93@ KING @H_502_93@ 5000@H_502_93@ ACCOUNTING@H_502_93@
7844@H_502_93@ TURNER @H_502_93@ 1500@H_502_93@ SALES@H_502_93@
7876@H_502_93@ ADAMS @H_502_93@ 1100@H_502_93@ RESEARCH@H_502_93@
7900@H_502_93@ JAMES @H_502_93@ 1800@H_502_93@ SALES@H_502_93@
7902@H_502_93@ FORD @H_502_93@ RESEARCH@H_502_93@
7934@H_502_93@ MILLER @H_502_93@ 1300@H_502_93@ ACCOUNTING@H_502_93@
7935@H_502_93@ XIAOXUE @H_502_93@ RESEARCH@H_502_93@

已选择 15 行。
如上述的结果与自然连接的结果相同。
使用using关键字简化连接时,需要注意以下几点:
1.使用emp表和dept表中的deptno列进行连接时,在using子句和select子句中,都 不能为deptno列指定表名或表别 名
2.如果在连接查询时使用了两个表中相同的多个列,那么就可以在using子句中指定多个列名,形式如下:
?
2
select... from table1 inner join table2@H_502_93@
using(column1,column2)@H_502_93@

上述的语句相当于下面的语句:
3
on table1.column1=table2.column2@H_502_93@
and table1.column2=table2.column2;@H_502_93@

如果对多个表进行检索,就 必须多次使用using关键字 进行指定,形式如下:
select... from table1@H_502_93@
inner join table2 using(column1)@H_502_93@
inner join table3 using(column2);@H_502_93@

上述的语句相当于下面的语句:

select... from table1,table2,table3@H_502_93@
where table1.column1=table2.column1@H_502_93@
and table2.column2=table3.table2;@H_502_93@

猜你在找的Oracle相关文章