《MYSQL教程MySQL筆記之連接查詢詳解》要點(diǎn):
本文介紹了MYSQL教程MySQL筆記之連接查詢詳解,希望對您有用。如果有疑問,可以聯(lián)系我們。
MYSQL學(xué)習(xí)連接查詢是將兩個(gè)或兩個(gè)以上的表按某個(gè)條件連接起來,從中選取需要的數(shù)據(jù)
MYSQL學(xué)習(xí)當(dāng)不同的表中存在表示相同意義的字段時(shí),可以通過該字段來連接這幾張表
MYSQL學(xué)習(xí)參考表:employee
MYSQL學(xué)習(xí)
MYSQL學(xué)習(xí)參考表:department
MYSQL學(xué)習(xí)
?
MYSQL學(xué)習(xí)可以看到,上面兩張表都有同一個(gè)字段d_id
MYSQL學(xué)習(xí)當(dāng)兩張表含有相同意義的字段(可以不同名)時(shí)就可以進(jìn)行連接查詢
內(nèi)連接查詢
代碼如下:
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)
內(nèi)連接查詢只會查詢完全匹配的結(jié)果,此處使用d_id字段進(jìn)行連接
MYSQL學(xué)習(xí)下面的表中也同樣使用這一字段
MYSQL學(xué)習(xí)
外連接查詢
MYSQL學(xué)習(xí)外查詢也需要通過指定字段來進(jìn)行連接,當(dāng)該字段取值相等時(shí),可以查詢出該記錄
MYSQL學(xué)習(xí)而且,該字段取值不相等的記錄也可以查詢出來
MYSQL學(xué)習(xí)外連接查詢包括左連接查詢和右連接查詢
MYSQL學(xué)習(xí)
左連接查詢
代碼如下:
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)
此處不僅查詢出了兩表中d_id字段相匹配的信息
MYSQL學(xué)習(xí)并且通過LEFT JOIN查詢出了employee表中所有指定字段的信息
MYSQL學(xué)習(xí)由于Aric沒有對應(yīng)d_name和function信息,所以顯示null
MYSQL學(xué)習(xí)
右連接查詢
代碼如下:
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)
與上面相反,這里查詢出了匹配的信息和department表中的所有指定字段的信息
MYSQL學(xué)習(xí)但是由于employee表中部分字段沒有對應(yīng),因此最后一行記錄有顯示NULL
MYSQL學(xué)習(xí)
復(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)
復(fù)合條件連接查詢是在進(jìn)行連接查詢的時(shí)候加入限制條件,此處的age>=25便是
MYSQL學(xué)習(xí)通常情況下,限制條件越多,查詢越精確,限制條件可用AND累加
MYSQL學(xué)習(xí)此外,還可以用復(fù)合條件進(jìn)行ORDER BY 排序
MYSQL學(xué)習(xí)tips:連接查詢中使用最多的是內(nèi)連接查詢,而外連接查詢使用頻率較低
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/3461.html