數(shù)據(jù)庫 關(guān)系連接
更新時間:2009年09月09日 09:18:25 作者:
數(shù)據(jù)庫 關(guān)系連接,多表查詢時需要用到的一些東西。
連接分類
關(guān)系間的連接分為內(nèi)連接(inner join)和外連接(outer join)。
外連接又可分為:left outer join,right outer join和full outer join。
內(nèi)連接計(jì)算方法:
如果不加條件將會產(chǎn)生笛卡爾積;
如果有連接條件,按照下一節(jié)"連接條件"的規(guī)則進(jìn)行運(yùn)算,符合條件的元組放入結(jié)果關(guān)系中。
left outer join 計(jì)算過程:
1)計(jì)算相同連接條件下的內(nèi)連接,將符合條件的元組放入結(jié)果關(guān)系中;
2)如果左關(guān)系中有元組不符合條件,將之放入結(jié)果關(guān)系中,余下的用NULL補(bǔ)足
right outer join 計(jì)算過程:
1)計(jì)算相同連接條件下的內(nèi)連接,將符合條件的元組放入結(jié)果關(guān)系中;
2)如果右關(guān)系中有元組不符合條件,將之放入結(jié)果關(guān)系中,余下的用NULL補(bǔ)足
full outer join
1)計(jì)算相同連接條件下的內(nèi)連接,將符合條件的元組放入結(jié)果關(guān)系中;
2)如果左、右關(guān)系中有元組不符合條件,將之放入結(jié)果關(guān)系中,余下的用NULL補(bǔ)足
as用來修改連接后結(jié)果關(guān)系的關(guān)系名稱以及屬性名稱。
連接條件
關(guān)系之間的連接是可以有條件的,外連接必須要加條件,內(nèi)連接如果不加條件將會產(chǎn)生笛卡爾積。
有哪些連接條件呢?
natural --
1)兩個關(guān)系(左關(guān)系和友關(guān)系)中所有具有相同的名稱的屬性的值要相等。
2)natural 總是出現(xiàn)在 join語句前面
3)natural的結(jié)果關(guān)系中,相同名稱的屬性只會出現(xiàn)一次
4)natural的結(jié)果關(guān)系中,屬性的排列順序總是按照左關(guān)系優(yōu)先的原則。
5) MySQL中,natural join不能使用on指定其他查詢條件
on--
1)on 用在join語句后面
2)on 后面采用關(guān)系1.屬性a=關(guān)系2.屬性b 的謂詞語法
using--
1)和natural類似,只是顯式指定了屬性名稱
2)如果using也指定了所有相同名稱的屬性,那么和natural相同
MySQL
MySQL中,natural join和 left outer join不能在同時使用,可以先將natural join語句做成一個view,然后再使用left outer join
join 默認(rèn)為inner join
關(guān)系間的連接分為內(nèi)連接(inner join)和外連接(outer join)。
外連接又可分為:left outer join,right outer join和full outer join。
內(nèi)連接計(jì)算方法:
如果不加條件將會產(chǎn)生笛卡爾積;
如果有連接條件,按照下一節(jié)"連接條件"的規(guī)則進(jìn)行運(yùn)算,符合條件的元組放入結(jié)果關(guān)系中。
left outer join 計(jì)算過程:
1)計(jì)算相同連接條件下的內(nèi)連接,將符合條件的元組放入結(jié)果關(guān)系中;
2)如果左關(guān)系中有元組不符合條件,將之放入結(jié)果關(guān)系中,余下的用NULL補(bǔ)足
right outer join 計(jì)算過程:
1)計(jì)算相同連接條件下的內(nèi)連接,將符合條件的元組放入結(jié)果關(guān)系中;
2)如果右關(guān)系中有元組不符合條件,將之放入結(jié)果關(guān)系中,余下的用NULL補(bǔ)足
full outer join
1)計(jì)算相同連接條件下的內(nèi)連接,將符合條件的元組放入結(jié)果關(guān)系中;
2)如果左、右關(guān)系中有元組不符合條件,將之放入結(jié)果關(guān)系中,余下的用NULL補(bǔ)足
as用來修改連接后結(jié)果關(guān)系的關(guān)系名稱以及屬性名稱。
連接條件
關(guān)系之間的連接是可以有條件的,外連接必須要加條件,內(nèi)連接如果不加條件將會產(chǎn)生笛卡爾積。
有哪些連接條件呢?
natural --
1)兩個關(guān)系(左關(guān)系和友關(guān)系)中所有具有相同的名稱的屬性的值要相等。
2)natural 總是出現(xiàn)在 join語句前面
3)natural的結(jié)果關(guān)系中,相同名稱的屬性只會出現(xiàn)一次
4)natural的結(jié)果關(guān)系中,屬性的排列順序總是按照左關(guān)系優(yōu)先的原則。
5) MySQL中,natural join不能使用on指定其他查詢條件
on--
1)on 用在join語句后面
2)on 后面采用關(guān)系1.屬性a=關(guān)系2.屬性b 的謂詞語法
using--
1)和natural類似,只是顯式指定了屬性名稱
2)如果using也指定了所有相同名稱的屬性,那么和natural相同
MySQL
MySQL中,natural join和 left outer join不能在同時使用,可以先將natural join語句做成一個view,然后再使用left outer join
join 默認(rèn)為inner join
相關(guān)文章
使用Bucardo5實(shí)現(xiàn)PostgreSQL的主數(shù)據(jù)庫復(fù)制
這篇文章主要介紹了使用Bucardo5實(shí)現(xiàn)PostgreSQL的主數(shù)據(jù)庫復(fù)制,作者基于AWS給出演示,需要的朋友可以參考下2015-04-04
關(guān)于Rsa Public Key not Find的問題及解決
這篇文章主要介紹了關(guān)于Rsa Public Key not Find的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
復(fù)雜系統(tǒng)中的用戶權(quán)限數(shù)據(jù)庫設(shè)計(jì)解決方案
這篇文章主要介紹了復(fù)雜系統(tǒng)中的用戶權(quán)限數(shù)據(jù)庫設(shè)計(jì)解決方案,針對大型、復(fù)雜的B/S系統(tǒng),需要的朋友可以參考下2014-06-06
ADO,OLEDB,ODBC,DAO,RDO的區(qū)別說明
ADO,OLEDB,ODBC,DAO,RDO的區(qū)別說明,因?yàn)槲覀冇贸绦蜷_發(fā)的時候經(jīng)常會用到OLEDB,ODBC鏈接數(shù)據(jù)庫等2012-09-09

