最近公司在招人,同事問了幾個自認為資料庫可以的應聘者關於庫連線的問題,回答不盡理想~
現在在這寫寫關於它們的作用
假設有如下表:
乙個為投票主表,乙個為投票者資訊表~記錄投票人ip及對應投票型別,左右連線實際說是我們聯合查詢的結果以哪個表為準~
1:如右接連 right join 或 right outer join:
我們以右邊voter表為準,則左表(votemaster)中的記錄只有當其id在右邊(voter)中存在時才會顯示出來,如上圖,左邊中id為3.4.5.6因為這些id右表中沒有相應記錄,所以沒有顯示!
2:因此我們自然能理解左連線 left join 或者 left outer join
可見,現在右邊中id在中存在時才會顯示,當右邊中沒有相應資料時則用null代替!
3:全連線 full join 或者 full outer join,為二個表中的資料都出來,這裡演示效果與上一樣!
4:內連線 inner join 或者 join;它為返回欄位id同時存在於表votemaster 和 voter中的記錄
5:交叉連線(完全連線)cross join 不帶 where 條件的
沒有 where 子句的交叉聯接將產生聯接所涉及的表的笛卡爾積。第乙個表的行數乘以第二個表的行數等於笛卡爾積結果集的大小。(table1和table2交叉連線產生6*3=18條記錄)
等價 select vm.id,vm.votetitle,vt.ip
from votemaster
as vm,voter
as vt
6:自連線。在這裡我用我前段時間乙個電力專案中的例子(改造過)
如下表:
這是乙個部門表,裡面存放了部門及其上級部門,但都放在同一張表中,我們假設現在需要用sql查詢出各部門及其上級部門!就如何做,
當然,不用自連線也一樣,可以如下:
我們達到預期目的!在這個查詢中使用了乙個子查詢完成對上級部門名的查詢,如果使用自連線,那麼結構上感覺會清晰很多。
是不是也同樣完成了功能呢,這裡除了使用自連線外,還使用了左連線,因為省電力沒有上級部門,他是老大,如果使用內連線,就會把這條記錄過濾掉,因為沒有和他匹配的上級部門。
自連線用的比較多的就是對權形結構的查詢!類似上表!
SQL 內連線,外連線
假設一堆男女在教堂,有夫婦有單身的,假設男為左表,女為右表 教父說 結了婚的人請出去,結了婚的人請手拉手,於是結了婚的男女站了起來,這就是inner 內連 教父說 男的並且和這些男的結婚的女的請出去,結了婚的人請手拉手,於是,結了婚的夫婦手拉手出去,單身的男的也出去了。這就是 left 左連 教父說...
SQL 內連線 外連線
通過where 或者 inner join保留表中的一部分,最直觀就是說 表在選擇投影後,得到的各個元組內的元素都不會是空的。inner join 表中至少乙個匹配時,返回行。左連線 即使右表中沒有匹配,也從左表中返回所有行。因次,元組中的元素若有來自右表,則該元素為空。右連線 即使左表中沒有匹配,...
SQL 左連線,右連線
現在在這寫寫關於它們的作用 假設有如下表 乙個為投票主表,乙個為投票者資訊表 記錄投票人ip及對應投票型別,左右連線實際說是我們聯合查詢的結果以哪個表為準 1 如右接連 right join 或 right outer join 我們以右邊voter表為準,則左表 votemaster 中的記錄只有...