亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SQL中的left join right join

 更新時(shí)間:2009年06月29日 00:17:34   作者:  
數(shù)據(jù)庫(kù)常見(jiàn)的join方式有三種:inner join, left outter join, right outter join(還有一種full join,因不常用,本文不討論)。這三種連接方式都是將兩個(gè)以上的表通過(guò)on條件語(yǔ)句,拼成一個(gè)大表。
以下是它們的共同點(diǎn):
1. 關(guān)于左右表的概念。左表指的是在SQL語(yǔ)句中排在left join左邊的表,右表指的是排在left join右邊的表。
2. 在拼成的大表中,左表排在左邊,右表排在右邊。
3. on條件語(yǔ)句最好用=號(hào)對(duì)兩表相應(yīng)的主外鍵進(jìn)行連接。當(dāng)然,也可以用其他操作符,如>, <, 來(lái)連接兩表的任一字段,此時(shí)的關(guān)系將非常復(fù)雜,連接后的記錄數(shù)也隨之而變得不確定。如果在一些特殊的場(chǎng)合中需要用到這種方式,必須通過(guò)簡(jiǎn)單的實(shí)例加以確認(rèn),否則,連接結(jié)果很可能不是我們所想要的!
4. on條件語(yǔ)句不能省略。
5. 可以連鎖使用join,每次使用join都令另一表與當(dāng)前的表或連接的結(jié)果相連接。
在下文中,用到了兩個(gè)表,"部門"表與"組織"表,其中,"部門"表有一名為"組織編號(hào)"的外鍵,指向"組織"表中的主鍵"編號(hào)"。
inner join
格式:select * from 部門 inner join 組織 on 部門.組織編號(hào) = 組織.編號(hào)
目的:將兩表中符合on條件的所有記錄都找出來(lái)。
規(guī)律:
1. 拼出的大表記錄不會(huì)增加。
2. 如果左邊與右表的關(guān)系是一對(duì)多的關(guān)系,在選出的任一記錄中,假若右表有多個(gè)記錄與其對(duì)應(yīng),那么,連接后的左表,主鍵將不再唯一。
典型應(yīng)用:將存在多關(guān)系的引用表放在左表,將存在一關(guān)系的被引用表放在右表,通過(guò)=號(hào)將主外鍵進(jìn)行連接,通過(guò)對(duì)右表設(shè)定過(guò)濾條件,選出相應(yīng)的且主鍵唯一的左表記錄。
備注:inner join 是默認(rèn)的連接方式,可縮寫為join。
轉(zhuǎn)化為where子句:
select * from 部門, 組織 where 部門.組織編號(hào) = 組織.編號(hào)
left outter join
格式: select * from 部門 left join 組織 on 部門.組織編號(hào) = 組織.編號(hào)
格式: select * from 組織 left join 部門 on 組織.編號(hào) = 部門.組織編號(hào)
目的:將左表的所有記錄列出,右表中只要符合on條件的,與左表記錄相拼合,不符合條件的,填以null值。
規(guī)律:
1. 選出所有符合條件的左表,如果左邊與右表的關(guān)系是一對(duì)一的關(guān)系,則拼成的大表記錄不會(huì)改變。
如果左邊與右表的關(guān)系是多對(duì)一的關(guān)系,則拼成的大表記錄也不會(huì)改變。
如果左邊與右表的關(guān)系是一對(duì)多的關(guān)系,則拼成的大表記錄會(huì)增加。對(duì)于每一具有一對(duì)多關(guān)系的左表記錄,如果左表1:N與右表對(duì)應(yīng),那么會(huì)多出N-1條記錄。例如,如果左表第一條記錄1:3對(duì)應(yīng)于右表,多出2條記錄。如果左表第二條記錄1:2對(duì)應(yīng)于右表,則再多出1條記錄。這樣,總共多出3條記錄。其他類推。
2. 如果左邊與右表的關(guān)系是一對(duì)多的關(guān)系,在選出的任一記錄中,假若右表有多個(gè)記錄與其對(duì)應(yīng),那么,連接后的左表,主鍵將不再唯一。
3. 如果左邊與右表的關(guān)系是一對(duì)多的關(guān)系,對(duì)于左表任一記錄,如果右表沒(méi)有記錄與其相對(duì)應(yīng),則全部填以null值。
典型應(yīng)用:將存在多關(guān)系的引用表放在左表,將存在一關(guān)系的被引用表放在右表,通過(guò)對(duì)右表設(shè)定過(guò)濾條件,選出相應(yīng)的且主鍵唯一的左表記錄。
備注:left outter join可用left join代替。在有些數(shù)據(jù)庫(kù)中,如HSqlDb, 只能使用left join而不能使用left outter join。
轉(zhuǎn)化為where子句:
select * from 部門, 組織 where 部門.組織編號(hào) = 組織.編號(hào)
right outter join
格式: select * from 部門 right join 組織 on 部門.組織編號(hào) = 組織.編號(hào)
格式: select * from 組織 right join 部門 on 部門.組織編號(hào) = 組織.編號(hào)
目的:將右表的所有記錄列出,左表中只要符合on條件的,與右表記錄相拼合,不符合條件的,填以null值。
規(guī)律:(與left outter join相反)
典型應(yīng)用:可轉(zhuǎn)化成left outter join。例如
select * from 組織 right join 部門 on 部門.組織編號(hào) = 組織.編號(hào)

select * from 部門 left join 組織 on 部門.組織編號(hào) = 組織.編號(hào)
的效果一樣

相關(guān)文章

  • Sql Server中清空所有數(shù)據(jù)表中的記錄

    Sql Server中清空所有數(shù)據(jù)表中的記錄

    我這里介紹的是刪除數(shù)據(jù)庫(kù)的所有數(shù)據(jù),因?yàn)閿?shù)據(jù)之間可能形成相互約束關(guān)系,刪除操作可能陷入死循環(huán),二是這里使用了微軟未正式公開(kāi)的sp_MSForEachTable存儲(chǔ)過(guò)程
    2013-10-10
  • SQL Server遍歷表中記錄的2種方法(使用表變量和游標(biāo))

    SQL Server遍歷表中記錄的2種方法(使用表變量和游標(biāo))

    遍歷表一般都要用到游標(biāo)在SQL Server中可以很容易的用游標(biāo)實(shí)現(xiàn)循環(huán)實(shí)現(xiàn)遍歷表中記錄,本文將介紹使用表變量和游標(biāo)實(shí)現(xiàn)數(shù)據(jù)庫(kù)中表的遍歷,感興趣的朋友可以了解下本文,或許可以幫助到你
    2013-02-02
  • SQL語(yǔ)句執(zhí)行順序圖文介紹

    SQL語(yǔ)句執(zhí)行順序圖文介紹

    本文將詳細(xì)介紹數(shù)據(jù)庫(kù)總結(jié)--SQL語(yǔ)句執(zhí)行順序,需要了解更多的朋友可以參考下
    2012-11-11
  • sql 判斷數(shù)據(jù)庫(kù),表,存儲(chǔ)過(guò)程等是否存在的代碼

    sql 判斷數(shù)據(jù)庫(kù),表,存儲(chǔ)過(guò)程等是否存在的代碼

    sql下用了判斷各種資源是否存在的代碼,很實(shí)用。需要的朋友可以參考下。
    2009-12-12
  • SQL SERVER性能優(yōu)化綜述(很好的總結(jié),不要錯(cuò)過(guò)哦)

    SQL SERVER性能優(yōu)化綜述(很好的總結(jié),不要錯(cuò)過(guò)哦)

    一個(gè)系統(tǒng)的性能的提高,不單單是試運(yùn)行或者維護(hù)階段的性能調(diào)優(yōu)的任務(wù),也不單單是開(kāi)發(fā)階段的事情,而是在整個(gè)軟件生命周期都需要注意,進(jìn)行有效工作才能達(dá)到的。所以我希望按照軟件生命周期的不同階段來(lái)總結(jié)數(shù)據(jù)庫(kù)性能優(yōu)化相關(guān)的注意事項(xiàng)。
    2008-09-09
  • 有用的SQL語(yǔ)句(刪除重復(fù)記錄,收縮日志)

    有用的SQL語(yǔ)句(刪除重復(fù)記錄,收縮日志)

    都是一些比較有用的sql語(yǔ)句,學(xué)習(xí)的朋友可以參考下。
    2006-10-10
  • SqlDateTime溢出該怎么解決

    SqlDateTime溢出該怎么解決

    這篇文章主要介紹了SqlDateTime溢出該怎么解決的相關(guān)資料,需要的朋友可以參考下
    2015-11-11
  • 不同數(shù)據(jù)庫(kù)之間導(dǎo)入導(dǎo)出功能介紹

    不同數(shù)據(jù)庫(kù)之間導(dǎo)入導(dǎo)出功能介紹

    在SQL Server中使用最廣泛的就是通過(guò)SELECT INTO語(yǔ)句導(dǎo)出數(shù)據(jù),SELECT INTO語(yǔ)句同時(shí)具備兩個(gè)功能
    2010-12-12
  • 列出SQL Server中具有默認(rèn)值的所有字段的語(yǔ)句

    列出SQL Server中具有默認(rèn)值的所有字段的語(yǔ)句

    上個(gè)星期我在對(duì)一個(gè)供應(yīng)商開(kāi)發(fā)的數(shù)據(jù)庫(kù)按規(guī)定進(jìn)行故障排除的時(shí)候,我們需要對(duì)他們數(shù)據(jù)庫(kù)中50個(gè)表的每一個(gè)都進(jìn)行查看,以確保所有期望是默認(rèn)值的字段都被分配了默認(rèn)值。你可以想象這是一個(gè)多么令人畏懼的工作,而我立即提出了這個(gè)問(wèn)題。有沒(méi)有一個(gè)比在SQL Server管理套件中打開(kāi)每一個(gè)表來(lái)查看這個(gè)schema的更好方法嗎?
    2008-10-10
  • SQL?Server數(shù)據(jù)庫(kù)數(shù)據(jù)文件的遷移步驟

    SQL?Server數(shù)據(jù)庫(kù)數(shù)據(jù)文件的遷移步驟

    最近有朋友問(wèn)我如何將一臺(tái)電腦中的SQL Server數(shù)據(jù)庫(kù)數(shù)據(jù)文件遷移到另一臺(tái)電腦上,在這給大家分享SQL?Server數(shù)據(jù)庫(kù)數(shù)據(jù)文件的遷移步驟,感興趣的朋友一起看看吧
    2024-03-03

最新評(píng)論