更新時間:2022-08-03 10:40:05 來源:動力節點 瀏覽2131次
大家在學習MySQL教程的時候會遇到多表查詢的問題,那么,MySQL多表查詢語句是什么?動力節點小編來告訴大家。在實際開發中多表查詢是經常遇到的,也是編寫sql的一個難點,所以多表查詢是必須掌握的。其實單一的多表查詢是比較簡單的,困難的sql編寫一般會是多表查詢結合其他的一些關鍵字甚至函數。想要掌握好,除了了解關鍵字的用法,數據的存儲位置,就是多練習了。為方便舉例,用t_user和t_role這張表來舉例,t_user字段及數據如下:
t_role表數據如下:
接下來是多表連接查詢:關鍵字join,將兩張表依據某個條件進行數據拼接。就是通過字段拼接,將兩張表的記錄變成 一條記錄,字段數量增加。效率比單表查詢低。下面就來看看它的幾種用法:
cross join,不需要連接條件的連接。其結果就是笛卡爾積;
沒有實際數據價值,只是豐富了連接查詢的完整性;我們要避免出現這種sql。
inner join,將兩張表根據指定的條件連接起來,嚴格連接。就是將一張表中的數據與另一張表中的數據根據條件匹配:配皮成功:保留連接的數據;不成功:都不保留。
語法:左表 inner join 右表 on 連接條件
這里我們就來查詢id都為1的數據:
outer join,是一種不嚴格的連接。分兩種,有主表之分:
左連接:left join ,左表為主表
右連接:right join ,右表為主表
就是用主表的記錄去匹配從表的記錄:成功保留;不成功,也保留,只是從表數據設為null。
這就是與內連接的區別,即在數據匹配失敗時,外連接始終都會保留一條記錄,只是從表設為null。
值得注意的是,不論是左連接還是右連接,字段顯示順序不受影響,都是先顯示左表的。
這里先以t_user為主表:
以t_role為主表:
natural join,是一種自動尋找連接條件的連接查詢。
包含自然內連接和自然外連接:
自然內連接:natural join
自然外連接:natural left/right join
條件匹配模式:
自動尋找相同字段名作為連接條件。
會將同名字段合并為一個字段。
select * from m2 natural left join m1 ;
連接查詢時如果是同名字段作為連接條件,using可以代替on出現(比on更好)。
針對同名字段;
會自動合并對應字段為一個;
可以同時使用多個字段作為條件。
select * from m2 left join m1 using(id,sfz) ;
select * from m2 left join m1 using(sfz) ;
通過上述介紹,相信大家對MySQL多表查詢語句已經有所了解,大家如果想了解更多相關知識,可以關注一下動力節點的Java在線學習,里面的課程內容從入門到精通,細致全面,很適合零基礎的小伙伴學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習