第一:內(nèi)聯(lián)(inner join)
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、虛擬主機(jī)、營(yíng)銷軟件、網(wǎng)站建設(shè)、碭山網(wǎng)站維護(hù)、網(wǎng)站推廣。
如果想把用戶信息、積分、等級(jí)都列出來,那么一般會(huì)這樣寫:
select * from T1, T3 where T1.userid = T3.userid
(其實(shí)這樣的結(jié)果等同于select * from T1 inner join T3 on T1.userid=T3.userid )。
把兩個(gè)表中都存在userid的行拼成一行(即內(nèi)聯(lián)),但后者的效率會(huì)比前者高很多,建議用后者(內(nèi)聯(lián))的寫法。
SQL語(yǔ)句:
select * from T1 inner join T2 on T1.userid = T2.userid
運(yùn)行結(jié)果
T1.userid username password T2.userid jifen dengji
1 jack jackpwd 1 20 3
第二:左聯(lián)(left outer join)
顯示左表T1中的所有行,并把右表T2中符合條件加到左表T1中;
右表T2中不符合條件,就不用加入結(jié)果表中,并且NULL表示。
SQL語(yǔ)句:
select * from T1 left outer join T2 on T1.userid = T2.userid
運(yùn)行結(jié)果
T1.userid username password T2.userid jifen dengji
1 jack jackpwd 1 20 3
2 owen owenpwd NULL NULL NULL
第三:右聯(lián)(right outer join)。
顯示右表T2中的所有行,并把左表T1中符合條件加到右表T2中;
左表T1中不符合條件,就不用加入結(jié)果表中,并且NULL表示。
SQL語(yǔ)句:
select * from T1 right outer join T2 on T1.userid = T2.userid
運(yùn)行結(jié)果
T1.userid username password T2.userid jifen dengji
1 jack jackpwd 1 20 3
NULL NULL NULL 3 50 6
第四:全聯(lián)(full outer join)
顯示左表T1、右表T2兩邊中的所有行,即把左聯(lián)結(jié)果表 + 右聯(lián)結(jié)果表組合在一起,然后過濾掉重復(fù)的。
SQL語(yǔ)句:
select * from T1 full outer join T2 on T1.userid = T2.userid
創(chuàng)建一個(gè)用戶表和配置表的關(guān)聯(lián)表,里面只需存用戶id和配置表id即可,通過中間表實(shí)現(xiàn)不同用戶配置不同
方法和操作步驟如下:
1、首先,創(chuàng)建一個(gè)測(cè)試表,如下圖所示,然后進(jìn)入下一步。
2、其次,插入測(cè)試數(shù)據(jù),如下圖所示,然后進(jìn)入下一步。
3、接著,完成上述步驟后,查詢表中的數(shù)據(jù),“select t.* from test_tbl2 t?”,如下圖所示,然后進(jìn)入下一步。
4、最后,完成上述步驟后,編寫sql,兩個(gè)表通過pid與id關(guān)聯(lián), “select t1.*, t2.* from test_tbl1 t1 join test_tbl2 t2 on t1.p_id = t2.id;”,如下圖所示。這樣,問題就解決了。