查詢語法: SELECT * FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona 注:使用ON關鍵字來設定連接條件,使用WHERE關鍵字進行結果集記錄的過濾
多表查詢主要分為三類: - INNER JOIN 內連接,取兩個表中的共有部分。 - LEFT(OUTER)JOIN 左外連接,顯示左表中的全部內容和與右表相交部分。 - RIGHT(OUTER)JOIN 右外連接,顯示右表中的全部內容和與左表相交部分。
接下來給大家一個例子: 在一個數據庫中建了兩個表: student(左表)
+----+--------+-------+------+| id | name | score | tid |+----+--------+-------+------+| 1 | 張三 | 88 | 2 || 2 | 李四 | 99 | NULL || 3 | 王五 | 67 | 1 || 4 | 李狗蛋 | 44 | 3 || 5 | 蕭炎 | 100 | 4 |+----+--------+-------+------+teacher(右表)
+----+--------+-----+| id | name | sex |+----+--------+-----+| 1 | 王老師 | 男 || 2 | 張老師 | 男 || 3 | 李老師 | 女 || 4 | 趙老師 | 女 || 5 | 嚴老師 | 男 |+----+--------+-----+```注:student.tid為外鍵和teacher中id對應。通過內連接查詢(INNER JOIN):<div class="se-命令: SELECT * FROM student INNER JOIN teacher ON student.tid=teacher.id;結果: +—-+——–+——-+—–+—-+——–+—–+ | id | name | score | tid | id | name | sex | +—-+——–+——-+—–+—-+——–+—–+ | 1 | 張三 | 88 | 2 | 2 | 張老師 | 男 | | 3 | 王五 | 67 | 1 | 1 | 王老師 | 男 | | 4 | 李狗蛋 | 44 | 3 | 3 | 李老師 | 女 | | 5 | 蕭炎 | 100 | 4 | 4 | 趙老師 | 女 | +—-+——–+——-+—–+—-+——–+—–+
通過左外連接查詢(LEFT JOIN):<div class="se-preview-section-delimiter"></div>命令: SELECT * FROM student LEFT JOIN teacher ON student.tid=teacher.id;
結果: +—-+——–+——-+——+——+——–+——+ | id | name | score | tid | id | name | sex | +—-+——–+——-+——+——+——–+——+ | 1 | 張三 | 88 | 2 | 2 | 張老師 | 男 | | 2 | 李四 | 99 | NULL | NULL | NULL | NULL | | 3 | 王五 | 67 | 1 | 1 | 王老師 | 男 | | 4 | 李狗蛋 | 44 | 3 | 3 | 李老師 | 女 | | 5 | 蕭炎 | 100 | 4 | 4 | 趙老師 | 女 | +—-+——–+——-+——+——+——–+——+
通過右外連接查詢(RIGHT JOIN):<div class="se-preview-section-delimiter"></div>命令: SELECT * FROM student RIGHT JOIN teacher ON student.tid=teacher.id;
結果: +——+——–+——-+——+—-+——–+—–+ | id | name | score | tid | id | name | sex | +——+——–+——-+——+—-+——–+—–+ | 3 | 王五 | 67 | 1 | 1 | 王老師 | 男 | | 1 | 張三 | 88 | 2 | 2 | 張老師 | 男 | | 4 | 李狗蛋 | 44 | 3 | 3 | 李老師 | 女 | | 5 | 蕭炎 | 100 | 4 | 4 | 趙老師 | 女 | | NULL | NULL | NULL | NULL | 5 | 嚴老師 | 男 | +——+——–+——-+——+—-+——–+—–+ “`注:查詢結果為右表(teacher)的全部內容和右表(teacher)左表(student)相交的部分。
總體來說,內連接顯示兩個表相交的部分。左外連接就是以左表為主,在內連接的基礎上把左表的所有內容顯示出來。右外鏈接就是以右表為主,在內連接的基礎上把右表的所有內容顯示出來。在執行命令時,那個表先寫那個表就為左表。寫在后面的表為右表。
新聞熱點
疑難解答