MySQL是世界上最流行的開源關係資料庫管理系統,它提供了多種連接類型,包括左連接、右連接和內連接。在本文中,我們將會對這些連接類型進行詳細的闡述,以及它們的應用場景。
一、左連接
左連接(LEFT JOIN)將返回左表中的所有記錄,同時匹配右表中符合條件的記錄,如果右表沒有符合條件的記錄,則返回NULL。
我們使用經典的學生表和成績表來演示左連接的使用。學生表中包括學生的ID和姓名,成績表中包括學生的ID和對應的成績:
CREATE TABLE students (id INT, name VARCHAR(50)); CREATE TABLE scores (id INT, score INT); INSERT INTO students VALUES (1, '張三'), (2, '李四'), (3, '王五'); INSERT INTO scores VALUES (1, 80), (2, 90);
使用左連接查詢每個學生的成績:
SELECT students.name, scores.score FROM students LEFT JOIN scores ON students.id = scores.id;
上述查詢的結果為:
+--------+-------+ | name | score | +--------+-------+ | 張三 | 80 | | 李四 | 90 | | 王五 | NULL | +--------+-------+
可以看到,由於王五在成績表中沒有對應的記錄,所以其成績為NULL。
二、右連接
右連接(RIGHT JOIN)與左連接類似,不同的是它返回的是右表中的所有記錄,同時匹配左表中符合條件的記錄,如果左表沒有符合條件的記錄,則返回NULL。
下面是使用右連接查詢每個學生的成績:
SELECT students.name, scores.score FROM students RIGHT JOIN scores ON students.id = scores.id;
上述查詢的結果為:
+--------+-------+ | name | score | +--------+-------+ | 張三 | 80 | | 李四 | 90 | | NULL | NULL | +--------+-------+
可以看到,由於學生表中沒有對應的記錄,所以姓名為NULL。
三、內連接
內連接(INNER JOIN)只返回左右表中都有匹配的記錄。
使用內連接查詢學生和對應成績:
SELECT students.name, scores.score FROM students INNER JOIN scores ON students.id = scores.id;
上述查詢的結果為:
+--------+-------+ | name | score | +--------+-------+ | 張三 | 80 | | 李四 | 90 | +--------+-------+
可以看到,只返回左右表都有匹配記錄的結果。
四、叉連接
叉連接(CROSS JOIN)也稱為笛卡爾積連接,對於每個左表中的記錄,都會與右表中的每個記錄進行匹配。
使用叉連接查詢學生和對應成績:
SELECT students.name, scores.score FROM students CROSS JOIN scores;
上述查詢的結果為:
+--------+-------+ | name | score | +--------+-------+ | 張三 | 80 | | 李四 | 80 | | 王五 | 80 | | 張三 | 90 | | 李四 | 90 | | 王五 | 90 | +--------+-------+
可以看到,對於每個學生記錄,都與成績表中的每個記錄進行了匹配。
五、總結
在MySQL中,連接類型是非常重要的概念,它們可以用於查詢多個表之間的關聯數據。使用左連接和右連接可以返回未匹配的記錄,使用內連接可以返回匹配的記錄,使用叉連接可以返回笛卡爾積。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/312815.html