雖然natural join(自然連接)實(shí)際上的用的比較少,但實(shí)際上這個(gè)連接是非常有用的,若能經(jīng)常使用一下,實(shí)際上是非常方便的。
自然連接是在兩張表中尋找那些數(shù)據(jù)類型和列名都相同的字段,然后自動(dòng)地將他們連接起來(lái),并返回所有符合條件按的結(jié)果。
來(lái)看一下自然連接的例子。
Select emp.ename,dept.dname
From emp natural join dept;
這里我們并沒(méi)有指定連接的條件,實(shí)際上oracle為我們自作主張的將,emp中的deptno和dept中的deptno做了連接。
也就是實(shí)際上相當(dāng)于
Select emp.ename,dept.dname
From emp join dept on emp.deptno = dept.deptno;
因?yàn)檫@兩張表的這兩個(gè)字段deptno的類型個(gè)名稱完全相同。所以使用natural join時(shí)被自然的連接在一起了。
另外:
1.如果做自然連接的兩個(gè)表的有多個(gè)字段都滿足有相同名稱個(gè)類型,那么他們會(huì)被作為自然連接的條件。
2.如果自然連接的兩個(gè)表僅是字段名稱相同,但數(shù)據(jù)類型不同,那么將會(huì)返回一個(gè)錯(cuò)誤。
3.由于oracle中可以進(jìn)行這種非常簡(jiǎn)單的natural join,我們?cè)谠O(shè)計(jì)表時(shí),應(yīng)該盡量在不同表中具有相同含義的字段使用相同的名字和數(shù)據(jù)類型。以方便以后使用natural join
最后我們?cè)谇懊媾e的例子都得到以下的結(jié)果:
SQL> Select emp.ename,dept.dname
2 From emp natural join dept;
ENAME DNAME
——————– —————-
SMITH RESEARCH
ALLEN SALES
WARD SALES
JONES RESEARCH
MARTIN SALES
BLAKE SALES
CLARK ACCOUNTING
SCOTT RESEARCH
KING ACCOUNTING
TURNER SALES
ADAMS RESEARCH
JAMES SALES
FORD RESEARCH
MILLER ACCOUNTING