SQL语言之自然连接
时间:2010-08-31 来源:jcbut2008
纯自然连接(NATUAL JOIN):
- 纯自然连接:当源表和目标表共享相同名称的列时,就可以在它们之间执行自然连接,而无需指定连接列。
- 语法:(SQL:1999)SELECT table1.column, table2.column FROM table1 NATURAL JOIN table2;
(传统oracle)SELECT table1.column, table2.column FROM table1, table2;
例:
select region_name
from regions natural join countries
where country_name='Canada';
REGION_NAME
-------------------------
Americas
- 在使用纯自然连接时,如没有相同的列时,会产生交叉连接(笛卡尔乘积)。
自然JOIN USING连接:
- 当源表和目标表中有多个相同的列名,而您不希望它们作为连接列时,可以使用JOIN…USING格式。
- 语法:(SQL:1999)SELECT table1.column, table2.column FROM table1 JOIN table2 USING (join_column1, join_column2,…);
(传统oracle)SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column=table2.column ;
- 关键字USING与NATURAL不能同时出现。
注:oracle没有强加任何规则表明两个离散表中具有相同名称的列必须彼此相关。
例:
select region_name
from regions join countries
using (region_id)
where country_name='Canada';
REGION_NAME
-------------------------
Americas
自然JOIN ON连接:
- 显示陈述连接列,可以使用JOIN...ON格式。
- 语法:(SQL:1999)SELECT table1.column, table2.column FROM table1 JOIN table2 ON (table1.column=table2.column);
(传统oracle)SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column=table2.column ;
- 关键字ON与NATURAL不能同时出现。
例:
select region_name
from regions R join countries C
on (R.region_id=C.region_id)
where country_name='Canada';
REGION_NAME
-------------------------
Americas
- JOIN...ON子句也可以用来指定一些条件,这些条件限制连接创建的结果集。
例:
Select d.department_name
from departments d join locations l
on(l.location_id=d.location_id and d.department_name like 'P%');
相当于
Select d.department_name
from departments d join locations l
on(l.location_id=d.location_id)
Where d.department_name like 'P%';