文档介绍:支持SQL1999的新连接标准
包括以下新的TABLE JOIN的句法结构
• CROSS JOIN——它在两个表格中创建了一个笛
卡尔积,就象是在Oracle8i中没写WHERE时一样
• NATURAL JOIN——这是一个很有用的Oracle9i的
句法,它通过从WHERE子句中自动连接标准来改
善SQL的稳定性
• USING子句——它可以通过名字来具体指定连接
支持SQL1999的新连接标准
• ON子句——这个句法允许在两个表中为连接具体
指定列名
• LEFT OUTER JOIN——它返回表格中左边的行和
右边的数值,如果没有搭配的行的话,则返回空
• RIGHT OUTER JOIN——它返回表格中右边的行
和左边的数值,如果没有搭配的行的话,则返回
空
• FULL OUTER JOIN——它返回的是两个表格中所
有的行,用空填满每一个空格。这在Oracle8i中则
没有相应的此种句法
SQL1999新连接标准语法
SELECT ,
FROM table1
[CROSS JOIN table2] |
[NATURAL JOIN table2] |
[JOIN table2 USING (column_name)] |
[JOIN table2
ON( = )] |
[LEFT|RIGHT|FULL OUTER JOIN table2
ON ( = )];
交叉连接
CROSS JOIN
• CROSS JOIN产生了一个笛卡尔积,就象是在连接
两个表格时忘记加入一个WHERE子句一样
Select last_name, department_id
from employees,departments;
•在Oracle9i中,可以使用CROSS JOIN 来达到相同
的结果
Select last_name, department_id
from employees cross join deptartments;
自然连接
NATURAL JOIN
• NATURAL JOIN 子句基于两个表中列名完全相同
的多个列产生连接
•从两个表中选出连接列的值相等的所有行
•如果两个列的名称相同,但是具有不同的数据类型,
则查询会返回一个错误
Select last_name, department_name
from departments
natural join employees;
USING子句
•如果一些列有相同的名称但是类型不匹配,自然连接将
出错,可以在自然连接的 NATURAL JOIN 子句上使用
USING 子句来设置用于等值连接的
•不要在参照列上使用表名或者别名作为前缀
Select department_name, city
from departments
JOIN locations
USING (location_id);
ON子句
•自然连接的条件是基于表中所有同名列的等值连接
•为了设置任意的连接条件或者指定连接的列,需要
使用ON子句
•连接条件与其它的查询条件分开书写
•使用ON 子句使查询语句更容易理解
Select department_name, city
from department d
JOIN location l
ON ( = );
多表连接
多表连接就是两个以上的表被连接所用的
Select emp_id, city_name, dept_name
from locations l
JOIN departments d
ON ( = )
JOIN employees e
ON ( = );
左外连接
LEFT OUTER JOIN
在LEFT OUTER JOIN中,会返回所有左边表中
的行,即使在右边的表中没有可对应的列值。
select last_name, department_id
from employees
LEFT OUTER JOIN Deptartments
ON = ;
右外连接
RI