串連查詢是將兩個或兩個以上的表按某個條件串連起來,從中選取需要的資料
當不同的表中存在表示相同意義的欄位時,可以通過該欄位來串連這幾張表
參考表:employee
參考表:department
可以看到,上面兩張表都有同一個欄位d_id
當兩張表含有相同意義的欄位(可以不同名)時就可以進行串連查詢
內串連查詢
複製代碼 代碼如下:mysql> SELECT num, name, employee.d_id, sex, d_name, function
-> FROM employee, department
-> WHERE employee.d_id=department.d_id;
+------+--------+------+------+-----------+--------------+
| num | name | d_id | sex | d_name | function |
+------+--------+------+------+-----------+--------------+
| 1 | 張三 | 1001 | 男 | 科技部 | 研發產品 |
| 2 | 李四 | 1001 | 女 | 科技部 | 研發產品 |
| 3 | 王五 | 1002 | 男 | 生產部 | 生產產品 |
+------+--------+------+------+-----------+--------------+
rows in set (0.00 sec)
內串連查詢只會查詢完全符合的結果,此處使用d_id欄位進行串連
下面的表中也同樣使用這一欄位
外串連查詢
外查詢也需要通過指定欄位來進行串連,當該欄位取值相等時,可以查詢出該記錄
而且,該欄位取值不相等的記錄也可以查詢出來
外串連查詢包括左串連查詢和右串連查詢
左串連查詢
複製代碼 代碼如下:mysql> SELECT num, name, employee.d_id, d_name, function
-> FROM employee LEFT JOIN department
-> ON employee.d_id=department.d_id;
+------+--------+------+-----------+--------------+
| num | name | d_id | d_name | function |
+------+--------+------+-----------+--------------+
| 1 | 張三 | 1001 | 科技部 | 研發產品 |
| 2 | 李四 | 1001 | 科技部 | 研發產品 |
| 3 | 王五 | 1002 | 生產部 | 生產產品 |
| 4 | Aric | 1004 | NULL | NULL |
+------+--------+------+-----------+--------------+
rows in set (0.00 sec)
此處不僅查詢出了兩表中d_id欄位相匹配的資訊
並且通過LEFT JOIN查詢出了employee表中所有指定欄位的資訊
由於Aric沒有對應d_name和function資訊,所以顯示null
右串連查詢
複製代碼 代碼如下:mysql> SELECT num, name, employee.d_id, d_name, function
-> FROM employee RIGHT JOIN department
-> ON employee.d_id=department.d_id;
+------+--------+------+-----------+--------------+
| num | name | d_id | d_name | function |
+------+--------+------+-----------+--------------+
| 1 | 張三 | 1001 | 科技部 | 研發產品 |
| 2 | 李四 | 1001 | 科技部 | 研發產品 |
| 3 | 王五 | 1002 | 生產部 | 生產產品 |
| NULL | NULL | NULL | 銷售部 | 策劃銷售 |
+------+--------+------+-----------+--------------+
rows in set (0.00 sec)
與上面相反,這裡查詢出了匹配的資訊和department表中的所有指定欄位的資訊
但是由於employee表中部分欄位沒有對應,因此最後一行記錄有顯示NULL
複合條件串連查詢
複製代碼 代碼如下:mysql> SELECT num, name, employee.d_id, sex, age, address
-> FROM employee, department
-> WHERE employee.d_id=department.d_id
-> AND age>=25;
+------+--------+------+------+------+-------------+
| num | name | d_id | sex | age | address |
+------+--------+------+------+------+-------------+
| 1 | 張三 | 1001 | 男 | 26 | 3號樓5層 |
| 3 | 王五 | 1002 | 男 | 25 | 5號樓1層 |
+------+--------+------+------+------+-------------+
rows in set (0.00 sec)
複合條件串連查詢是在進行串連查詢的時候加入限制條件,此處的age>=25便是
通常情況下,限制條件越多,查詢越精確,限制條件可用AND累加
此外,還可以用複合條件進行ORDER BY 排序
tips:串連查詢中使用最多的是內串連查詢,而外串連查詢使用頻率較低