作者:桃Z夭夭 | 来源:互联网 | 2023-05-18 04:49
2.4几种类型的Join句法2.4.1CrossJoins:该类型的Join句法不需要连接条件,一个表中的所有行分别都会连接另一个表的所有行,得到的结果被称为一个笛
2.4 几种类型的Join 句法
2.4.1 Cross Joins : 该类型的Join句法不需要连接条件,一个表中的所有行分别都会连接另一个表的所有行,得到的结果被称为一个笛卡尔积: 的employee 表中有14行,在department表中有4行,14*4这56行
SELECT e.lname, d.name
FROM employee e CROSS JOIN department d;
LNAME NAME
---------- --------------
SMITH ACCOUNTING
ALLEN ACCOUNTING
WARD ACCOUNTING
JONES ACCOUNTING
MARTIN ACCOUNTING
BLAKE ACCOUNTING
. . .
. . .
. . .
SCOTT OPERATIONS
KING OPERATIONS
TURNER OPERATIONS
ADAMS OPERATIONS
JAMES OPERATIONS
FORD OPERATIONS
MILLER OPERATIONS
56 rows selected.
注意,Join句法中若没有ON关键字是错误的,使用Cross Join句法时不要用ON关键字,否则也是错误的:1)SELECT e.lname, d.name
FROM employee e JOIN department d;
FROM employee e JOIN department d
ERROR at line 2:
ORA-00905: missing keyword。
2)SELECT e.lname, d.name
FROM employee e CROSS JOIN department d
ON e.dept_id = d.dept_id;
ON e.dept_id = d.dept_id
*
ERROR at line 3:
ORA-00933: SQL command not properly ended
2.4.2 Inner Join :inner join 其实就是常规的join 前面介绍过了,这里就不哆嗦了!2.4.3 Outer Join : 有时候你想把一个表中的所有行全都取出来,即使在另一个表中没有数据与该表中的某些行对应。那么你可以用outer join.Outer Join 的句法:FROM table1 { LEFT | RIGHT | FULL } [OUTER] JOIN table2
LEFT:
取出table1中的所有行,如果在table2中没有数据与之对应,则为null;
例:SELECT d.dept_id, d.name, l.regional_group
FROM department d LEFT OUTER JOIN location l
ON d.location_id = l.location_id;
DEPT_ID NAME REGIONAL_GROUP
---------- -------------------- --------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES
40 OPERATIONS BOSTON
RIGHT:
取出table2中的所有行,如果在table1中没有数据与之对应,则为null;
例:SELECT d.dept_id, d.name, l.regional_group
FROM department d RIGHT OUTER JOIN location l
ON d.location_id = l.location_id;
DEPT_ID NAME REGIONAL_GROUP
---------- -------------------- ---------------
10 ACCOUNTING NEW YORK
CHICAGO
20 RESEARCH DALLAS
SAN FRANCISCO
40 OPERATIONS BOSTON
FULL:
取出table1中的所有行又要取出table2中的所有行,同时table1与table2关联,table1与table2 相互之间无数据关联的列为null;
例: SELECT d.dept_id, d.name, l.regional_group
FROM department d FULL OUTER JOIN location l
ON d.location_id = l.location_id;
DEPT_ID NAME REGIONAL_GROUP
---------- -------------------- ----------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES
40 OPERATIONS BOSTON
CHICAGO
SAN FRANCISCO
6 rows selected.本文出自 “感性V理性” 博客,请务必保留此出处http://longsoft.blog.51cto.com/378540/82037