更新時(shí)間:2022-08-03 10:40:05 來源:動力節(jié)點(diǎn) 瀏覽2176次
大家在學(xué)習(xí)MySQL教程的時(shí)候會遇到多表查詢的問題,那么,MySQL多表查詢語句是什么?動力節(jié)點(diǎn)小編來告訴大家。在實(shí)際開發(fā)中多表查詢是經(jīng)常遇到的,也是編寫sql的一個(gè)難點(diǎn),所以多表查詢是必須掌握的。其實(shí)單一的多表查詢是比較簡單的,困難的sql編寫一般會是多表查詢結(jié)合其他的一些關(guān)鍵字甚至函數(shù)。想要掌握好,除了了解關(guān)鍵字的用法,數(shù)據(jù)的存儲位置,就是多練習(xí)了。為方便舉例,用t_user和t_role這張表來舉例,t_user字段及數(shù)據(jù)如下:
t_role表數(shù)據(jù)如下:
接下來是多表連接查詢:關(guān)鍵字join,將兩張表依據(jù)某個(gè)條件進(jìn)行數(shù)據(jù)拼接。就是通過字段拼接,將兩張表的記錄變成 一條記錄,字段數(shù)量增加。效率比單表查詢低。下面就來看看它的幾種用法:
cross join,不需要連接條件的連接。其結(jié)果就是笛卡爾積;
沒有實(shí)際數(shù)據(jù)價(jià)值,只是豐富了連接查詢的完整性;我們要避免出現(xiàn)這種sql。
inner join,將兩張表根據(jù)指定的條件連接起來,嚴(yán)格連接。就是將一張表中的數(shù)據(jù)與另一張表中的數(shù)據(jù)根據(jù)條件匹配:配皮成功:保留連接的數(shù)據(jù);不成功:都不保留。
語法:左表 inner join 右表 on 連接條件
這里我們就來查詢id都為1的數(shù)據(jù):
outer join,是一種不嚴(yán)格的連接。分兩種,有主表之分:
左連接:left join ,左表為主表
右連接:right join ,右表為主表
就是用主表的記錄去匹配從表的記錄:成功保留;不成功,也保留,只是從表數(shù)據(jù)設(shè)為null。
這就是與內(nèi)連接的區(qū)別,即在數(shù)據(jù)匹配失敗時(shí),外連接始終都會保留一條記錄,只是從表設(shè)為null。
值得注意的是,不論是左連接還是右連接,字段顯示順序不受影響,都是先顯示左表的。
這里先以t_user為主表:
以t_role為主表:
natural join,是一種自動尋找連接條件的連接查詢。
包含自然內(nèi)連接和自然外連接:
自然內(nèi)連接:natural join
自然外連接:natural left/right join
條件匹配模式:
自動尋找相同字段名作為連接條件。
會將同名字段合并為一個(gè)字段。
select * from m2 natural left join m1 ;
連接查詢時(shí)如果是同名字段作為連接條件,using可以代替on出現(xiàn)(比on更好)。
針對同名字段;
會自動合并對應(yīng)字段為一個(gè);
可以同時(shí)使用多個(gè)字段作為條件。
select * from m2 left join m1 using(id,sfz) ;
select * from m2 left join m1 using(sfz) ;
通過上述介紹,相信大家對MySQL多表查詢語句已經(jīng)有所了解,大家如果想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點(diǎn)的Java在線學(xué)習(xí),里面的課程內(nèi)容從入門到精通,細(xì)致全面,很適合零基礎(chǔ)的小伙伴學(xué)習(xí),希望對大家能夠有所幫助。
初級 202925
初級 203221
初級 202629
初級 203743