自然连接(natural join)

自然连接:
自然连接是在两张表中寻找那些数据类型和列名都相同的字段,然后自动地将他们连接起来,并返回所有符合条件按的结果。

来看一下自然连接的例子。
Select
emp.ename,dept.dname
From emp natural join
dept;
这里我们并没有指定连接的条件,实际上oracle为我们自作主张的将,emp中的deptno和dept中的deptno做了连接。
也就是实际上相当于
Select
emp.ename,dept.dname
From emp join dept on emp.deptno =
dept.deptno;
因为这两张表的这两个字段deptno的类型个名称完全相同。所以使用natural
join时被自然的连接在一起了。
另外:
1.如果做自然连接的两个表的有多个字段都满足有相同名称个类型,那么他们会被作为自然连接的条件。
2.如果自然连接的两个表仅是字段名称相同,但数据类型不同,那么将会返回一个错误。
3.由于oracle中可以进行这种非常简单的natural
join,我们在设计表时,应该尽量在不同表中具有相同含义的字段使用相同的名字和数据类型。以方便以后使用natural join。

[email protected]> SELECT
p.prod_id,prod_name,prod_list_price,quantity_sold,cust_last_name

2 FROM products p NATURAL JOIN sales s NATURAL JOIN customers c
3 WHERE
prod_id =148 and rownum<6;
SELECT
p.prod_id,prod_name,prod_list_price,quantity_sold,cust_last_name

*
ERROR at line 1:
ORA-25155: column used in NATURAL join cannot have
qualifier

列用于自然连接不能有限定符。

去掉限定符后:
[email protected]> SELECT
prod_id,prod_name,prod_list_price,quantity_sold,cust_last_name

2 FROM products p NATURAL JOIN sales s NATURAL JOIN customers c
3 WHERE
prod_id =148 and rownum<6;

PROD_ID PROD_NAME
PROD_LIST_PRICE QUANTITY_SOLD CUST_LAST_NAME
----------
------------------------------ --------------- -------------
------------------------------
148 Xtend Memory
20.99 1 Llyles
148 Xtend Memory
20.99 1 Lake
148 Xtend Memory
20.99 1 Koch
148 Xtend Memory
20.99 1 Skillman
148 Xtend Memory
20.99 1 Speer

列不用于自然连接,可以使用限定符。


[email protected]> SELECT
prod_id,p.prod_name,prod_list_price,quantity_sold,cust_last_name

2 FROM products p NATURAL JOIN sales s NATURAL JOIN customers c
3 WHERE
prod_id =148 and rownum<6;

PROD_ID PROD_NAME
PROD_LIST_PRICE QUANTITY_SOLD CUST_LAST_NAME
----------
------------------------------ --------------- -------------
------------------------------
148 Xtend Memory
20.99 1 Llyles
148 Xtend Memory
20.99 1 Lake
148 Xtend Memory
20.99 1 Koch
148 Xtend Memory
20.99 1 Skillman
148 Xtend Memory
20.99 1 Speer

时间: 2024-10-01 05:12:47

自然连接(natural join)的相关文章

SQL 等值连接(内连接)、自然连接(Out join,Left join,Right join)的区别

https://www.cnblogs.com/hu-yewen/p/5821645.html 首先来看自然连接的定义: 自然连接:是一种特殊的等值连接,它要求两个关系进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉. 一个简单的例子,将下列关系R和S进行自然连接: R: A    B     C a    b     c b    a     d c    d     e d    f     g S: A    C    D a    c    d d    f    g b

Oracle表与表之间的连接方式(内连接:inner join 、外连接 全连接: full outer join、左连接:left outer join 、右连接:right outer join、自然连接:natural join)

1 --内连接:INNER JOIN 它表示返回两个表或记录集连接字段的匹配记录,表示两个表中相互包含的部分 2 select * from student inner join sc on student.sno=sc.sno; 3 --外连接(全连接):包含左.右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行.不符合条件的,以空值代替. 4 --全连接:表示两个表组合在一起,左右不相匹配时使用空值替换 5 select * from student full outer join

MySQL的几种连接 join/inner join/cross join/逗号/left join/right join/natural join

转载请注明出处!! 之前数据表连接操作多使用逗号或者join,对几种连接的概念一直浑浑噩噩,最近研究了一波,把这些连接的区别搞明白了. 连接:A xjoin B(主表 操作 关联表) select过程:from->where->group by->having->order by->limit 在不使用on语法时,join.inner join.逗号.cross join结果相同,都是取2个表的笛卡尔积.逗号与其他操作符优先级不同,所以有可能产生语法错误,尽量减少用逗号 jo

java:Oracle(级联删除,左右内外交叉自然连接,子查询,all,any,in)

1.级联删除: -- 级联删除:裁员,公司倒闭 -- 级联删除(cascade),设置为null(setnull),放任不管(No action) -- cascade:(以一对多为例)如果删除多的一方,一的一方不受任何影响,但是如果删除一的一方,多的一方所有对应数据全部被删除 select * from staff s inner join department d on d.id = s.department_id; delete from staff s where s.id = 1; d

自然连接

时间:2014.05.04 地点:基地 心情:五月的天,刚诞生的夏天.5月1号和唐彬骑自行车去了岳阳,当天晚上11点抵达岳阳县毛田镇,在明明酒家投宿.次日11点低到目的地岳阳县相思乡相思园,在这里停留了大概一刻钟,然后返回坐班车去岳阳市,在再岳阳市转车回了长沙.回到学校,该是好好学习,加油! ------------------------------------------------------------------------------------- 一.概念 自然连接即通过对参与关系

oracle连接总结(内连接、外连接、自然连接,交叉连接,自连接)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! oracle连接总结(内连接.外连接.自然连接,交叉连接,自连接) 1.简述  1) 两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的.用来连接两张表的表达式组成了连接条件.当连接成功后,第二张表中的数据就同第一张表连接起来了,并形成了复合结果集 2) 有5种基本类型的的连接,inner,outer,natural,cross连接,自连接. 2.说明与例子 1)内连接 (inner join (可简写为j

“,”、“natural join”、“natural left outer join”、“natural right outer join”的用法总结

",":代表笛卡尔积: "natural join":代表自然连接,即同名列等值连接: "natural left outer join":表示左外连接: "natural right outer join":表示右外连接. 注意:以下的写法在Oracle中都是不正确的. 1.r1 join r2 2.r1 inner join r2 3.r1 left outer join r2(如果要用左外连接,需要加natural关键字

数据库连接之内连接、自然连接、外连接区分

数据库中的连接分为:内连接.自然连接.外连接:(外连接又分为:左外连接,右外连接和全外连接) 自然连接(natural join): 自然连接是一种特殊的等值连接,他要求两个关系表中进行比较的必须是相同的属性列,无须添加连接条件,并且在结果中消除重复的属性列. 内连接(inner  join): 指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件. (内连接基本与自然连接相同,不同之处在于自然连接要求是同名属性列的比较,而内连接则不要求两属性列同名,可以用on来指定某两列字段相

sql 内连接、外连接、自然连接等各种连接

1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和courses表中学生标识号相同的所有行. 2.外联接.外联接可以是左向外联接.右向外联接或完整外部联接. 在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定: 1)LEFT JOIN或LEFT OUTER JOIN 左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是