自然連接(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。

 

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
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



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM