⾃然连接(naturaljoin)
⾃然连接:
⾃然连接是在两张表中寻那些数据类型和列名都相同的字段,然后⾃动地将他们连接起来,并返回所有符合条件按的结果。
来看⼀下⾃然连接的例⼦。
ame,dept.dname
From emp natural join dept;
这⾥我们并没有指定连接的条件,实际上oracle为我们⾃作主张的将,emp中的deptno和dept中的deptno做了连接。
也就是实际上相当于
ame,dept.dname
From emp join dept on emp.deptno = dept.deptno;
因为这两张表的这两个字段deptno的类型个名称完全相同。所以使⽤natural join时被⾃然的连接在⼀起了。
另外:
1.如果做⾃然连接的两个表的有多个字段都满⾜有相同名称个类型,那么他们会被作为⾃然连接的条件。
2.如果⾃然连接的两个表仅是字段名称相同,但数据类型不同,那么将会返回⼀个错误。
3.由于oracle中可以进⾏这种⾮常简单的natural join,我们在设计表时,应该尽量在不同表中具有相同含义的字段使⽤相同的名字和数据类型。以⽅便以后使⽤natural join。
sh@TEST0910> 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
列⽤于⾃然连接不能有限定符。
去掉限定符后:
sh@TEST0910> 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
join on是什么连接
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
列不⽤于⾃然连接,可以使⽤限定符。
sh@TEST0910> 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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。