連接查詢是將兩個或兩個以上的表按某個條件連接起來,從中選取需要的數(shù)據(jù)
當(dāng)不同的表中存在表示相同意義的字段時,可以通過該字段來連接這幾張表
參考表:employee

參考表:department

可以看到,上面兩張表都有同一個字段d_id
當(dāng)兩張表含有相同意義的字段(可以不同名)時就可以進行連接查詢
內(nèi)連接查詢復(fù)制代碼 代碼如下:
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 | 男   | 科技部    | 研發(fā)產(chǎn)品|
|    2 | 李四   | 1001 | 女   | 科技部    | 研發(fā)產(chǎn)品|
|    3 | 王五   | 1002 | 男   | 生產(chǎn)部    | 生產(chǎn)產(chǎn)品|
+------+--------+------+------+-----------+--------------+
 rows in set (0.00 sec)
下面的表中也同樣使用這一字段
外連接查詢
外查詢也需要通過指定字段來進行連接,當(dāng)該字段取值相等時,可以查詢出該記錄
而且,該字段取值不相等的記錄也可以查詢出來
外連接查詢包括左連接查詢和右連接查詢
左連接查詢
復(fù)制代碼 代碼如下:
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 | 科技部    | 研發(fā)產(chǎn)品|
|    2 | 李四   | 1001 | 科技部    | 研發(fā)產(chǎn)品|
|    3 | 王五   | 1002 | 生產(chǎn)部    | 生產(chǎn)產(chǎn)品|
|    4 | Aric   | 1004 | NULL| NULL|
+------+--------+------+-----------+--------------+
 rows in set (0.00 sec)
并且通過LEFT JOIN查詢出了employee表中所有指定字段的信息
由于Aric沒有對應(yīng)d_name和function信息,所以顯示null
右連接查詢
復(fù)制代碼 代碼如下:
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 | 科技部    | 研發(fā)產(chǎn)品|
|    2 | 李四   | 1001 | 科技部    | 研發(fā)產(chǎn)品|
|    3 | 王五   | 1002 | 生產(chǎn)部    | 生產(chǎn)產(chǎn)品|
| NULL | NULL   | NULL | 銷售部    | 策劃銷售|
+------+--------+------+-----------+--------------+
 rows in set (0.00 sec)
但是由于employee表中部分字段沒有對應(yīng),因此最后一行記錄有顯示NULL
復(fù)合條件連接查詢
復(fù)制代碼 代碼如下:
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)
通常情況下,限制條件越多,查詢越精確,限制條件可用AND累加
此外,還可以用復(fù)合條件進行ORDER BY 排序
tips:連接查詢中使用最多的是內(nèi)連接查詢,而外連接查詢使用頻率較低
新聞熱點
疑難解答
圖片精選