oracle自连接和自然连接,SQL语言之自然连接

纯自然连接(NATUAL JOIN):

纯自然连接:当源表和目标表共享相同名称的列时,就可以在它们之间执行自然连接,而无需指定连接列。

语法:(SQL:1999)SELECTtable1.column, table2.columnFROMtable1NATURAL JOINtable2;

(传统oracle)SELECTtable1.column, table2.columnFROMtable1, table2;

例:

select region_name

from regions natural join countries

where country_name='Canada';

REGION_NAME

-------------------------

Americas

在使用纯自然连接时,如没有相同的列时,会产生交叉连接(笛卡尔乘积)。

自然JOIN USING连接:

当源表和目标表中有多个相同的列名,而您不希望它们作为连接列时,可以使用JOIN…USING格式。

语法:(SQL:1999)SELECTtable1.column, table2.columnFROMtable1JOINtable2USING(join_column1, join_column2,…);

(传统oracle)SELECTtable1.column, table2.columnFROMtable1, table2WHEREtable1.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)SELECTtable1.column, table2.columnFROMtable1JOINtable2ON(table1.column=table2.column);

(传统oracle)SELECTtable1.column, table2.columnFROMtable1, table2WHEREtable1.column=table2.column;

关键字ON与NATURAL不能同时出现。

例:

select region_name

from regionsRjoin countriesC

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)

Whered.department_name like 'P%';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值