Maison > base de données > tutoriel mysql > le corps du texte

Oracle 内连接和外连接

WBOY
Libérer: 2016-06-07 15:20:35
original
1172 Les gens l'ont consulté

内连接用于返回满足连接条件的记录;而外连接则是内连接的扩展,它不仅会返回满足连接条件的所有记录,而且还会返回满足不满足连接条件的记录!从Oracle9i开始,可以在From 子句中指定连接语法。语法如下: SELECT table.column,table.column2 FROM table1 [

内连接用于返回满足连接条件的记录;而外连接则是内连接的扩展,它不仅会返回满足连接条件的所有记录,而且还会返回满足不满足连接条件的记录!从Oracle9i开始,可以在From 子句中指定连接语法。语法如下:

 SELECT table.column,table.column2 FROM table1 [INNER|LEFT|RIGHT|FULL] JOIN table2 ON table.column1=table.column2;
Copier après la connexion

INNER JOIN表示内连接,LEFT JOIN 表示左外连接,RIGHT JOIN表示右外连接,FULL JOIN表示完全外连接;ON 子句用于指定连接条件!

下面我们来看下这些所谓的连接吧!

1.内连接

   内连接用于返回满足连接条件的所有记录。默认情况下,在执行连接查询时如果没有指定任何连接操作符,那么这些连接查询属于内连接。 下面以显示部门10的部门名及其雇员名为例,说明使用内连接的方法。示例如下:

SQL> select a.dname ,b.ename from dept a ,emp b where a.deptno=b.deptno and a.deptno=10;
 
DNAME          ENAME
-------------- ----------
ACCOUNTING     CLARK
ACCOUNTING     KING
ACCOUNTING     MILLER
Copier après la connexion

工作中用这种连接查询很多,其实我一直不知道这就是内连接,在我的印象里面,用INNER JOIN连接语法的才是内连接,想想都可笑啊!

所以在执行连接查询时,通过在FROM子句中指定INNER JOIN选项,也可以指定内连接,这是一种显示表示内连接的方式。示例如下:

SQL> select a.dname,b.ename from dept a inner join emp b on a.deptno=b.deptno and a.deptno=10;
 
DNAME          ENAME
-------------- ----------
ACCOUNTING     CLARK
ACCOUNTING     KING
ACCOUNTING     MILLER
Copier après la connexion


 还有一种方式的内连接,不过我到现在也不怎么用到,这是从Oracle 9i开始执行的,如果主表的主键列和从表的外部键列名称相同,那么还可以使用NATURAL JOIN关键字自动执行内连接操作,示例如下:

SQL> select dname ,ename from dept natural join emp;
 
DNAME          ENAME
-------------- ----------
RESEARCH       SMITH
SALES          ALLEN
SALES          WARD
RESEARCH       JONES
SALES          MARTIN
SALES          BLAKE
ACCOUNTING     CLARK
RESEARCH       SCOTT
ACCOUNTING     KING
SALES          TURNER
RESEARCH       ADAMS
SALES          JAMES
RESEARCH       FORD
ACCOUNTING     MILLER
 
14 rows selected
Copier après la connexion


2.左外连接

左外连接是通过指定 LEFT [OUTER] JOIN选项来实现的.当使用左外连接时,不仅会返回满足连接条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行。下面以显示部门10的部门名、雇员名,以及其他部门名为例:

SQL> select a.dname,b.ename from dept a left join emp b on a.deptno=b.deptno and a.deptno=10;
 
DNAME          ENAME
-------------- ----------
SALES          
ACCOUNTING     CLARK
ACCOUNTING     KING
ACCOUNTING     MILLER
RESEARCH       
SALES          
OPERATIONS  
Copier après la connexion

 

右外连接、全外连接和左外连接很相似,就不多说了!
 

 

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal