MySQL筆記之連接查詢詳解
連接查詢是將兩個或兩個以上的表按某個條件連接起來,從中選取需要的數(shù)據(jù)
當不同的表中存在表示相同意義的字段時,可以通過該字段來連接這幾張表
參考表:employee
參考表:department
可以看到,上面兩張表都有同一個字段d_id
當兩張表含有相同意義的字段(可以不同名)時就可以進行連接查詢
內(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)連接查詢只會查詢完全匹配的結果,此處使用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 | 科技部 | 研發(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字段相匹配的信息
并且通過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 | 科技部 | 研發(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表中的所有指定字段的信息
但是由于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:連接查詢中使用最多的是內(nèi)連接查詢,而外連接查詢使用頻率較低
相關文章
Linux7.6二進制安裝Mysql8.0.27詳細操作步驟
大家好,本篇文章主要講的是Linux7.6二進制安裝Mysql8.0.27詳細操作步驟,感興趣的同學快來看一看吧,希望對你起到幫助2021-11-11淺談MyISAM 和 InnoDB 的區(qū)別與優(yōu)化
InnoDB和MyISAM是在使用MySQL最常用的兩個表類型,各有優(yōu)缺點,視具體應用而定。下面我們就來具體探討下吧2015-07-07MySQL下使用Inplace和Online方式創(chuàng)建索引的教程
這篇文章主要介紹了MySQL下使用Inplace和Online方式創(chuàng)建索引的教程,針對InnoDB為存儲引擎的情況,需要的朋友可以參考下2015-11-11mysql判斷當前時間是否在開始與結束時間之間且開始與結束時間允許為空
這篇文章主要介紹了mysql判斷當前時間是否在開始與結束時間之間且開始與結束時間允許為空,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09MySQL數(shù)據(jù)庫學習之排序與單行處理函數(shù)詳解
這篇文章主要為大家詳細介紹一下MySQL數(shù)據(jù)庫中排序與單行處理函數(shù)的使用,文中的示例代碼講解詳細,對我們學習MySQL有一定幫助,需要的可以參考一下2022-07-07Mysql 5.7.19 winx64 ZIP Archive 安裝及使用過程問題小結
本篇文章給大家介紹了mysql 5.7.19 winx64 ZIP Archive 安裝及使用過程問題小結,需要的朋友可以參考下2017-07-07