SQL语言之自然连接

时间:2021-04-16

纯自然连接(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%';

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章