3.自然連接
自然連接(Natural join)是一種特殊的等值連接,它要求兩個關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉。而等值連接并不去掉重復(fù)的屬性列。
自然連接的語法如下:
- SELECT * FROM 表1 別名1 NATURAL JOIN 表2 別名2
(1)將emp表中的deptno列名修改為dp,如圖1-4所示:
圖1-4 修改列名
(2)查詢每個員工的信息及所在部門信息,使用自然連接查詢,對應(yīng)的sql語句是:select * from emp e NATURAL JOIN dept d,查詢結(jié)果如圖1-5所示:
圖1-5 自然連接
自然連接查詢的步驟:
- 第一步:做笛卡爾積;
- 第二步:做等值判斷,例如emp.某個列名=dept.某個列名,要求兩個表進(jìn)行比較的列名相同;
- 第三步:去掉重復(fù)的的屬性列。
圖1-5中,查詢結(jié)果的列數(shù)是11,emp表的總列數(shù)是8,dept表的總列數(shù)是3,也就是說查詢結(jié)果包含兩個表的所有列。并且查詢結(jié)果的記錄數(shù)是60,出現(xiàn)這種情況的原因是emp表中沒有與dept表相同的列,我們將emp表中的deptno列名修改為dp,因此在進(jìn)行自然連接時,查詢的第二步與第三步就無法進(jìn)行,只做了第一步,因此結(jié)果就是兩個表的笛卡爾積。
(3)將emp表的列名dp修改為deptno,然后再進(jìn)行自然連接,查詢每個員工的姓名、工資以及所在部門的名稱,查詢結(jié)果如圖1-6所示:
圖1-6 自然連接
圖1-6中,查詢結(jié)果的總記錄數(shù)是14,每個員工的相關(guān)信息都正確的查詢出來了。
本文版權(quán)歸傳智播客Java培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:傳智播客Java培訓(xùn)學(xué)院
首發(fā):http://xamj520.com/javaee