MySQL培訓(xùn)教程:MySQL多個表怎么連接查詢
最新學(xué)訊:近期OCP認(rèn)證正在報名中,因考試人員較多請盡快報名獲取最近考試時間,報名費用請聯(lián)系在線老師,甲骨文官方認(rèn)證,報名從速!
我要咨詢mysql多個表怎么連接查詢,連接查詢是將兩個或兩個以上的表按某個條件連接起來,從中選取需要的數(shù)據(jù),當(dāng)不同的表中存在表示相同意義的字段時,可以通過該字段來連接這幾張表
參考員工表:employee

參考部門表:department

可以看到,上面兩張表都有同一個字段d_id
當(dāng)兩張表含有相同意義的字段(可以不同名)時就可以進(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)品 | +------+--------+------+------+-----------+--------------+ 3 rows in set (0.00 sec)
內(nèi)連接查詢只會查詢完全匹配的結(jié)果,此處使用d_id字段進(jìn)行連接
下面的表中也同樣使用這一字段
外連接查詢
外查詢也需要通過指定字段來進(jìn)行連接,當(dāng)該字段取值相等時,可以查詢出該記錄
而且,該字段取值不相等的記錄也可以查詢出來
外連接查詢包括左連接查詢和右連接查詢
左連接查詢
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 | +------+--------+------+-----------+--------------+ 4 rows in set (0.00 sec)
此處不僅查詢出了兩表中d_id字段相匹配的信息
并且通過LEFT JOIN查詢出了employee表中所有指定字段的信息
由于Aric沒有對應(yīng)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 | 科技部 | 研發(fā)產(chǎn)品 | | 2 | 李四 | 1001 | 科技部 | 研發(fā)產(chǎn)品 | | 3 | 王五 | 1002 | 生產(chǎn)部 | 生產(chǎn)產(chǎn)品 | | NULL | NULL | NULL | 銷售部 | 策劃銷售 | +------+--------+------+-----------+--------------+ 4 rows in set (0.00 sec)
與上面相反,這里查詢出了匹配的信息和department表中的所有指定字段的信息
但是由于employee表中部分字段沒有對應(yīng),因此最后一行記錄有顯示NULL
復(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層 | +------+--------+------+------+------+-------------+ 2 rows in set (0.00 sec)
復(fù)合條件連接查詢是在進(jìn)行連接查詢的時候加入限制條件,此處的age>=25便是
通常情況下,限制條件越多,查詢越精確,限制條件可用AND累加
此外,還可以用復(fù)合條件進(jìn)行ORDER BY 排序
- 冉乃綱-老師CUUG金牌講師
- 冉老師 CUUG金牌講師 Oracle及RedHat高級講師、Unix/Linux 資深專家...[詳細(xì)了解老師]

- 陳衛(wèi)星-老師CUUG金牌講師
- 陳老師 CUUG金牌講師 精通Oracle管理、備份恢復(fù)、性能優(yōu)化 11年Ora...[詳細(xì)了解老師]
