標籤:
資料庫的操作分開增刪改查,其中查詢操作基本占系統的90%,大家所說的最佳化SQL語句基本是最佳化查詢語句。接下來將學習JOIN的用法,JOIN包括:INNER JOIN(內串連)、LEFT JOIN(左外串連)、RIGHT JOIN(右外串連)、FULL JOIN(全外串連)、CROSS JOIN(交叉串連)。在說明之前,先建立user、schoolMap、school三個表以便實驗需要。
1、INNER JOIN
1)、INNER JOIN返回兩個表中連接欄位相等的行,即兩個表中連接欄位都存在並且相等。
2)、INNER 串連二個資料表的文法:
SELECT * FROM 表A INNER JOIN 表B ON 表A.欄位 = 表B.欄位;
3)、樣本:
4)、INNER JOIN 串連三個資料表的用法:
SELECT * FROM (表1 INNER JOIN 表2 ON 表1.欄位號=表2.欄位號) INNER JOIN 表3 ON 表1.欄位號=表3.欄位號
串連多個表以此類推
5)、INNER JOIN使用的時候若不加ON條件等價於FULL JOIN不不加ON條件 、CROSS JOIN
6、INNER INTO 後面的查詢的條件加在ON後面和WHERE效果是一樣的
2、LEFT JOIN(左外串連)
1)、LEFT JOIN返回包括左表中的所有記錄和右表中連接欄位相等的記錄。
2)、LEFT JOIN串連二個資料表的文法:
SELECT * FROM 表A LEFT JOIN 表B ON 表A.欄位 = 表B.欄位;
3)、LEFT JOIN樣本:
4)、LEFT JOIN 串連三個資料表的用法:
SELECT * FROM (表1 LEFT JOIN 表2 ON 表1.欄位號=表2.欄位號) LEFT JOIN 表3 ON 表1.欄位號=表3.欄位號
串連多個表以此類推
3、RIGHT JOIN(右外串連)
1)、RIGHT JOIN返回包括右表中的所有記錄和左邊表中連接欄位相等的記錄。
2)、RIGHT JOIN串連二個資料表的文法:
SELECT * FROM 表A RIGHT JOIN 表B ON 表A.欄位 = 表B.欄位;
3)、RIGHT JOIN樣本:
4)、RIGHT JOIN 串連三個資料表的用法:
SELECT * FROM (表1 RIGHT JOIN 表2 ON 表1.欄位號=表2.欄位號) RIGHT JOIN 表3 ON 表1.欄位號=表3.欄位號
串連多個表以此類推
4、FULL JOIN
MYSQL 不支援FULL JOIN 通過LEFT JOIN 與 RIGHT JOIN 來實現
用法:
select * from A left join B on A.id = B.id (where 條件)
union
select * from A right join B on A.id = B.id (where條件);
MYSQL學習筆記 (三)JOIN用法