MySql查詢語句介紹,多表聯合查詢

來源:酷知科普網 2.57W

mysql在網站開發中,越來越多人使用了,方便部署,方便使用。我們要掌握mysql,首先要學習查詢語句。查詢單個表的資料,和多個表的聯合查詢。
上一篇寫了【MySql查詢語句介紹,單表查詢】,下面以一些例子來介紹下多表聯合查詢。

操作方法

(01)首先看下我們例子用到的資料表,一個student學生表,有id列,name列,class_id列等等。和一個Class班級表,有id列和name列,如圖

MySql查詢語句介紹,多表聯合查詢
MySql查詢語句介紹,多表聯合查詢 第2張

(02)我們要查詢學生資料,並要顯示這個學生所在的班級,則要聯合二個表的查詢了。用 inner join來聯合二個表。sql: select , , c.`name` as '班級' from student as sinner join class as c ON = s_id limit 10

MySql查詢語句介紹,多表聯合查詢 第3張

(03)講解下上面的sql語句, select裡的【as '班級'】,的‘as’是為了給這個列加一個別名,例子中的‘班級’。from student as s 裡的這個 as是為表 student加一個別名,例子中的s。為什麼要加別名呢,是為了簡化引用,如果不加別名,就要用表的全名去限制列名。, 都是指student表的列,因為用的是別名s來限制列名 是指class表的列,因為是用 別名c來限制列名。

MySql查詢語句介紹,多表聯合查詢 第4張

(04)上面說的為什麼表要加別名,那是因為二個表都有 id列和name列,直接用 select id, name這樣的語句,是會報錯的,因為這個語句不知道你需要的id, name究竟是查詢的是哪個表的id, 和name.

MySql查詢語句介紹,多表聯合查詢 第5張

(05)除了用 inner join來關聯二個表的資料,還可以用 left join來關聯,sql: select , , c.`name` as '班級' from student as sleft join class as c ON = s_id order by desc limit 10

MySql查詢語句介紹,多表聯合查詢 第6張

(06)現在的資料,看不出 inner join和 left join的區別。我們新建一個學生資料, 把class_id設定為 7, class表裡沒有的id。如圖

MySql查詢語句介紹,多表聯合查詢 第7張

(07)我們再次用上次的sql查詢資料,select , , c.`name` as '班級' from student as sleft join class as c ON = s_id order by desc limit 10結果如圖,可以看到班級為空的。

MySql查詢語句介紹,多表聯合查詢 第8張

(08)如果是用 inner join呢,select , , c.`name` as '班級' from student as sinner join class as c ON = s_id order by desc limit 10結果如圖,可以看到沒有 id=27的學生資料。

MySql查詢語句介紹,多表聯合查詢 第9張

(09)從上面的結果比較可以知道, 都是通過 class_id來聯合表,inner join是聯合二個表的資料,二個表都必須符合class_id的資料才顯示。left join是左聯合,左邊的表的資料都顯示,右邊join的表有符合class_id資料的,就顯示對應的資料,沒有符合的,比如上面的 class_id=7的,就會顯示空資料。

MySql查詢語句介紹,多表聯合查詢 第10張
熱門標籤