MySQL多表查詢的語句 多表連接查詢
MySQL多表查詢的語句
本篇文章給大家帶來的內容是介紹MySQL如何實現多表查詢?MySQL多表查詢的語句。有一定的參考價值,有需要的朋友可以參考一下,希望對你們有所幫助。
創建表:
1 |
# 創建表 create table department(id int,name varchar(20)); create table employee1( id int primary key auto_increment, name varchar(20), sex enum('male','female') not null default 'male', age int, dep_id int ); # 插入數據 insert into department values(200,'技術'),(201,'人力資源'),(202,'銷售'),(203,'運營'); insert into employee1(name,sex,age,dep_id) values('egon','male',18,200),('alex','female',48,201),('tom','male',38,201),('yuanhao','female',28,202),('lidawei','male',18,200),('jinkezhou','female',18,204); # 查看錶 mysql> select * from employee1; +----+-----------+--------+------+--------+ | id | name | sex | age | dep_id | +----+-----------+--------+------+--------+ | 1 | egon | male | 18 | 200 | | 2 | alex | female | 48 | 201 | | 3 | tom | male | 38 | 201 | | 4 | yuanhao | female | 28 | 202 | | 5 | lidawei | male | 18 | 200 | | 6 | jinkezhou | female | 18 | 204 | +----+-----------+--------+------+--------+ 6 rows in set (0.00 sec) mysql> select * from department; +------+--------------+ | id | name | +------+--------------+ | 200 | 技術 | | 201 | 人力資源 | | 202 | 銷售 | | 203 | 運營 | +------+--------------+ 4 rows in set (0.00 sec) |
多表連接查詢
交叉連接
交叉連接:不適用任何匹配條件。生成笛卡爾積
1 |
mysql> select * from employee1 ,department; |
內連接
內連接:找兩張表共有的部分,相當於利用條件從笛卡爾積結果中篩選出了正確的結果。(只連接匹配的行)
1 |
# 找兩張表共有的部分,相當於利用條件從笛卡爾積結果中篩選出了正確的結果 #department沒有204這個部門,因而employee表中關於204這條員工信息沒有匹配出來 mysql> select * from employee1,department where employee1.dep_id=department.id; #上面用where表示的可以用下面的內連接表示,建議使用下面的那種方法 mysql> select * from employee1 inner join department on employee1.dep_id=department.id; # 也可以這樣表示哈 mysql> select employee1.id,employee1.name,employee1.age,employee1.sex,department.name from employee1,department where employee1.dep_id=department.id; |
左連接left
優先顯示左表全部記錄。
1 |
#左鏈接:在按照on的條件取到兩張表共同部分的基礎上,保留左表的記錄 mysql> select * from employee1 left join department on department.id=employee1.dep_id; mysql> select * from department left join employee1 on department.id=employee1.dep_id; |
右連接right
優先顯示右表全部記錄。
1 |
#右鏈接:在按照on的條件取到兩張表共同部分的基礎上,保留右表的記錄 mysql> select * from employee1 right join department on department.id=employee1.dep_id; mysql> select * from department right join employee1 on department.id=employee1.dep_id; |
全部連接join
1 |
mysql> select * from department full join employee1; |
符合條件多表查詢
示例1:以內連接的方式查詢employee和department表,並且employee表中的age欄位值必須大於25,
即找出公司所有部門中年齡大於25歲的員工
1 |
mysql> select * from employee1 inner join department on employee1.dep_id=department.id and age>25; |
示例2:以內連接的方式查詢employee和department表,並且以age欄位的升序方式顯示
1 |
mysql> select * from employee1 inner join department on employee1.dep_id=department.id and age>25 and age>25 order by age asc; |
子查詢
1 2 |
#1:子查詢是將一個查詢語句嵌套在另一個查詢語句中。 #2:內層查詢語句的查詢結果,可以為外層查詢語句提供查詢條件。 #3:子查詢中可以包含:IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS等關鍵字 #4:還可以包含比較運算符:= 、 !=、> 、<等</code><code class="null"> |
事例
1 |
# 查詢平均年齡在25歲以上的部門名 mysql> select name from department where id in ( select dep_id from employee1 group by dep_id having avg(age) > 25 ); # 查看技術部員工姓名 mysql> select name from employee1 where dep_id = (select id from department where name='技術'); # 查看小於2人的部門名 mysql> select name from department where id in (select dep_id from employee1 group by dep_id having count(id) < 2) union select name from department where id not in (select distinct dep_id from employee1); # 提取空部門 #有人的部門 mysql> select * from department where id not in (select distinct dep_id from employee1); |
由於網站搬家,部分鏈接失效,如無法下載,請聯繫站長!謝謝支持!
1. 帶 [親測] 說明源碼已經被站長親測過!
2. 下載後的源碼請在24小時內刪除,僅供學慣用途!
3. 分享目的僅供大家學習和交流,請不要用於商業用途!
4. 本站資源售價只是贊助,收取費用僅維持本站的日常運營所需!
5. 本站所有資源來源於站長上傳和網路,如有侵權請郵件聯繫站長!
6. 沒帶 [親測] 代表站長時間緊促,站長會保持每天更新 [親測] 源碼 !
7. 盜版ripro用戶購買ripro美化無擔保,若設置不成功/不生效我們不支持退款!
8. 本站提供的源碼、模板、插件等等其他資源,都不包含技術服務請大家諒解!
9. 如果你也有好源碼或者教程,可以到審核區發布,分享有金幣獎勵和額外收入!
10.如果您購買了某個產品,而我們還沒來得及更新,請聯繫站長或留言催更,謝謝理解 !
GG資源網 » MySQL多表查詢的語句 多表連接查詢
1. 帶 [親測] 說明源碼已經被站長親測過!
2. 下載後的源碼請在24小時內刪除,僅供學慣用途!
3. 分享目的僅供大家學習和交流,請不要用於商業用途!
4. 本站資源售價只是贊助,收取費用僅維持本站的日常運營所需!
5. 本站所有資源來源於站長上傳和網路,如有侵權請郵件聯繫站長!
6. 沒帶 [親測] 代表站長時間緊促,站長會保持每天更新 [親測] 源碼 !
7. 盜版ripro用戶購買ripro美化無擔保,若設置不成功/不生效我們不支持退款!
8. 本站提供的源碼、模板、插件等等其他資源,都不包含技術服務請大家諒解!
9. 如果你也有好源碼或者教程,可以到審核區發布,分享有金幣獎勵和額外收入!
10.如果您購買了某個產品,而我們還沒來得及更新,請聯繫站長或留言催更,謝謝理解 !
GG資源網 » MySQL多表查詢的語句 多表連接查詢