學(xué)生student表:
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、名山網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、電子商務(wù)商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為名山等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
課程course表:
交叉連接:
結(jié)果為兩張表的笛卡爾積:
內(nèi)連接(inner join ,inner 可以省略)
顯示內(nèi)連接和隱示內(nèi)連接獲得的查詢結(jié)果是一樣的,都是A表和B表的交集(例:A.id = B.id),但是只能查到有關(guān)系的信息,如果A表的一條數(shù)據(jù)的與B表關(guān)聯(lián)的字段沒有對應(yīng)的信息(如:A.id = null),即:這條數(shù)據(jù)在B表中沒有對應(yīng)的信息,則無法獲得。
外連接(outer join,outer可以省略)
左外連接獲得的查詢結(jié)果是左邊的表A的全部信息和A,B兩張表的交集,左邊A表的全部包含A表中在B表中沒有對應(yīng)關(guān)系的信息。
右外連接獲得的查詢結(jié)果是右邊的表B的全部信息和A,B兩張表的交集,右邊B表的全部包含B表中在A表中沒有對應(yīng)關(guān)系的信息。
1.INNER JOIN 產(chǎn)生的結(jié)果是AB的交集
SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name
2.LEFT [OUTER] JOIN 產(chǎn)生表A的完全集,而B表中匹配的則有值,沒有匹配的則以null值取代。
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name
3.RIGHT [OUTER] JOIN 產(chǎn)生表B的完全集,而A表中匹配的則有值,沒有匹配的則以null值取代。
SELECT * FROM TableA RIGHT OUTER JOIN TableB ON TableA.name = TableB.name
圖標(biāo)如left join類似。
4.FULL [OUTER] JOIN 產(chǎn)生A和B的并集。對于沒有匹配的記錄,則會以null做為值。
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
你可以通過is NULL將沒有匹配的值找出來:
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
WHERE TableA.id IS null OR TableB.id IS null
5. CROSS JOIN 把表A和表B的數(shù)據(jù)進(jìn)行一個N*M的組合,即笛卡爾積。如本例會產(chǎn)生4*4=16條記錄,在開發(fā)過程中我們肯定是要過濾數(shù)據(jù),所以這種很少用。
SELECT * FROM TableA CROSS JOIN TableB
相信大家對inner join、outer join和cross join的區(qū)別一目了然了。
UNION 用于把來自許多SELECT語句的結(jié)果組合到一個結(jié)果集合中。 (如果你要將多個表的查詢結(jié)果進(jìn)行合并輸出比如說 群組消息跟個人消息表是分離的但是想一起提取出來并顯示的話就可以如此處理。通過MySQLUNION聯(lián)合查詢出來即可;
你要union兩個表,就必須滿足這兩個表的字段名字都是一樣的才行。首先,你的B表字段只有x,y兩個,(select (*,z) from b) 這樣寫就已經(jīng)不對了,因為Z字段不存在,應(yīng)該是(select (*,'' as z) from b)。
SQL中的 join 可以根據(jù)相應(yīng)條件把指定的表給結(jié)合起來并將數(shù)據(jù)返回。
內(nèi)連接是基于連接謂詞將倆張表(如A和B)的列組合到一起產(chǎn)生新的結(jié)果表,在表中存在至少一個匹配時,INNER JOIN 關(guān)鍵字返回行
左外連接Left join關(guān)鍵字會從左表那里返回所有的行,即使是在右表中沒有匹配到的行?
右外連接關(guān)鍵字Right join會從右表那里返回所有的行,即使是在左表中沒有匹配到的行?
全連接的關(guān)鍵字Full join,只要其中某個表中存在匹配,F(xiàn)ull join 就會返回行
交叉連接一般使用的比較少,交叉連接又稱笛卡爾連接或者叉乘連接,如果,A和B是倆個集合,他們的交叉連接就是A*B?