連接
摘要
內(nèi)連接, 相等連接, 自然連接, 交叉連接,外連接,左外連接, 右外連接, 全連接, 自連接
概述
sql的連接join, 將數(shù)據(jù)庫中的兩個(gè)或多個(gè)表組合起來,連接生成的集合,可以被保存為表,或者當(dāng)做表使用
join語句的含義是把兩張表的屬性通過值組合在一起,
基于ANSI標(biāo)準(zhǔn)的sql列出了5種join方式,inner, full outer, left outer, right outer, cross(交叉連接)
在特定的情況下,一張表(基本表,視圖,連接表)可以和自身進(jìn)行連接,成為自連接self-join
程序員使用join表示得到連接后的集合,如果 evaluated predicate 為真, 組合后的記錄會(huì)按照預(yù)期的方式生成,
例如一個(gè)記錄集,一張臨時(shí)表
正文
一 內(nèi)連接 inner join
內(nèi)連接是應(yīng)用程序中普遍的連接操作,一般是默認(rèn)的連接類型
內(nèi)連接基于連接謂詞將兩張表A,B的列組合在一起,產(chǎn)生新的結(jié)果表,
查詢會(huì)將A表中的每一行和B表中的每一行進(jìn)行比較,找出滿足連接謂詞的組合
當(dāng)連接謂詞被滿足,兩表中匹配的行會(huì)按列組合(并排組合)成結(jié)果集中的一行
連接產(chǎn)生的結(jié)果集,可以定義為首先對兩張表做笛卡爾積(交叉連接)--將A中每一行和B中每一行組合
實(shí)際上SQL產(chǎn)品會(huì)盡可能用其他方式實(shí)現(xiàn)連接,笛卡爾積運(yùn)算效率極低
二 外連接 outer join
外連接并不要求連接的兩表的每一條記錄在對方表中都有一條匹配的記錄
要保留所有的記錄(甚至這條記錄沒有匹配的記錄的記錄也需要保留)的表稱為保留表
外連接可依據(jù)連接表保留左表,右表,或全部表的行,進(jìn)一步分為左外連接,右外連接,全連接
在標(biāo)準(zhǔn)的SQL語言中,外連接沒有隱式的連接符號(hào)