下面一起來了解下MySQL實(shí)現(xiàn)多表查詢語句介紹,相信大家看完肯定會受益匪淺,文字在精不在多,希望MySQL實(shí)現(xiàn)多表查詢語句介紹這篇短內(nèi)容是你想要的。
創(chuàng)新互聯(lián)建站始終堅(jiān)持【策劃先行,效果至上】的經(jīng)營理念,通過多達(dá)10年累計(jì)超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的網(wǎng)絡(luò)營銷推廣解決方案,現(xiàn)已廣泛運(yùn)用于各行各業(yè)的客戶,其中包括:宴會酒店設(shè)計(jì)等企業(yè),備受客戶贊揚(yáng)。
創(chuàng)建表
# 創(chuàng)建表 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 ); # 插入數(shù)據(jù) insert into department values(200,'技術(shù)'),(201,'人力資源'),(202,'銷售'),(203,'運(yùn)營'); 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 | 技術(shù) | | 201 | 人力資源 | | 202 | 銷售 | | 203 | 運(yùn)營 | +------+--------------+ 4 rows in set (0.00 sec)
多表連接查詢
交叉連接
交叉連接:不適用任何匹配條件。生成笛卡爾積
mysql> select * from employee1 ,department;
內(nèi)連接
內(nèi)連接:找兩張表共有的部分,相當(dāng)于利用條件從笛卡爾積結(jié)果中篩選出了正確的結(jié)果。(只連接匹配的行)
# 找兩張表共有的部分,相當(dāng)于利用條件從笛卡爾積結(jié)果中篩選出了正確的結(jié)果 #department沒有204這個部門,因而employee表中關(guān)于204這條員工信息沒有匹配出來 mysql> select * from employee1,department where employee1.dep_id=department.id; #上面用where表示的可以用下面的內(nèi)連接表示,建議使用下面的那種方法 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
優(yōu)先顯示左表全部記錄。
#左鏈接:在按照on的條件取到兩張表共同部分的基礎(chǔ)上,保留左表的記錄 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
優(yōu)先顯示右表全部記錄。
#右鏈接:在按照on的條件取到兩張表共同部分的基礎(chǔ)上,保留右表的記錄 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
mysql> select * from department full join employee1;
符合條件多表查詢
示例1:以內(nèi)連接的方式查詢employee和department表,并且employee表中的age字段值必須大于25,
即找出公司所有部門中年齡大于25歲的員工
mysql> select * from employee1 inner join department on employee1.dep_id=department.id and age>25;
示例2:以內(nèi)連接的方式查詢employee和department表,并且以age字段的升序方式顯示
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:內(nèi)層查詢語句的查詢結(jié)果,可以為外層查詢語句提供查詢條件。 #3:子查詢中可以包含:IN、NOT IN、ANY、ALL、EXISTS 和 NOT EXISTS等關(guān)鍵字 #4:還可以包含比較運(yùn)算符:= 、 !=、> 、<等
示例:
# 查詢平均年齡在25歲以上的部門名 mysql> select name from department where id in ( select dep_id from employee1 group by dep_id having avg(age) > 25 ); # 查看技術(shù)部員工姓名 mysql> select name from employee1 where dep_id = (select id from department where name='技術(shù)'); # 查看小于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);
看完MySQL實(shí)現(xiàn)多表查詢語句介紹這篇文章后,很多讀者朋友肯定會想要了解更多的相關(guān)內(nèi)容,如需獲取更多的行業(yè)信息,可以關(guān)注我們的行業(yè)資訊欄目。
文章標(biāo)題:MySQL實(shí)現(xiàn)多表查詢語句介紹
文章地址:http://aaarwkj.com/article18/gooegp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站內(nèi)鏈、網(wǎng)站維護(hù)、外貿(mào)建站、靜態(tài)網(wǎng)站、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)