MySQL中使用串連查詢

來源:互聯網
上載者:User

標籤:文法   多個   mysql   笛卡爾   logs   表名   順序   注意   out   

串連查詢: 將多張表(可以大於2張)進行記錄的串連(按照某個指定的條件進行資料拼接);

最終結果是: 記錄數有可能變化, 欄位數一定會增加(至少兩張表的合并)!

串連查詢的意義: 在使用者查看資料的時候,需要顯示的資料來自多張表.

SQL中將串連查詢分成四類:交叉串連,內串連,外串連和自然串連。

在介紹之前先建立兩張表作為聯絡(my_stu,my_class)

1.交叉串連

 cross join, 從一張表中迴圈取出每一條記錄, 每條記錄都去另外一張表進行匹配: 匹配一定保留(沒有條件匹配), 而串連本身欄位就會增加(保留),最終形成的結果叫做: 笛卡爾積.

select * from my_stu cross join my_class;

 

注意:

笛卡爾積沒有意義: 應該盡量避免(交叉串連沒用)。交叉串連存在的價值: 保證串連這種結構的完整性

2.內串連

 [inner] join, 從左表中取出每一條記錄,去右表中與所有的記錄進行匹配: 匹配必須是某個條件在左表中與右表中相同最終才會保留結果,否則不保留!

基本文法

左表 [inner] join 右表 on 左表.欄位 = 右表.欄位; on表示串連條件: 條件欄位就是代表相同的業務含義(如my_stu.c_id和my_class.id)。

select * from my_stu inner join my_class on c_id = my_class.id;

注意:

內串連可以沒有串連條件: 沒有on之後的內容,這個時候系統會保留所有結果(笛卡爾積)!

內串連還可以使用where代替on關鍵字(where沒有on效率高)!

3.外串連

outer join, 以某張表為主,取出裡面的所有記錄, 然後每條與另外一張表進行串連: 不管能不能匹配上條件,最終都會保留:能匹配正確保留; 不能匹配,其他表的欄位都置空NULL.

外串連分為兩種: 是以某張表為主: 有主表

Left join: 左外串連(左串連), 以左表為主表

Right join: 右外串連(右串連), 以右表為主表

基本文法:

左表 left/right join 右表 on 左表.欄位 = 右表.欄位;

3.1左串連

select *, my_class.c_name, my_class.room from my_stu left join my_class on my_stu.c_id=my_class.id;

3.2右串連

select s.*, c.c_name as c_name, c.room from my_stu as s right join my_class as c on s.c_id = c.id;

注意:

雖然左串連和右串連有主表差異, 但是顯示的結果: 左表的資料在左邊,右表資料在右邊.

欄位別名以及表別名的使用: 在查詢資料的時候,不同表有同名欄位,這個時候需要加上表名才能區分, 而表名太長, 通常可以使用別名.

4.自然串連

自然串連: natural join, 自然串連, 就是自動匹配串連條件: 系統以欄位名字作為匹配模式(同名欄位就作為條件, 多個同名欄位都作為條件,串連之後會合并同名欄位).

自然串連: 可以分為自然內串連和自然外串連.

4.1自然內串連:

左表 natural join 右表;

select * from my_stu natural join my_class;

4.2自然外串連

左表 natural left/right join 右表

select * from my_stu natural left join my_class;

 

多表串連: A表 inner join B表 on 條件 left join C表 on條件 ...

執行順序: A表內串連B表,得到一個二維表, 左串連C表形成二維表...

MySQL中使用串連查詢

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.