MySQL中的連接查詢(等值連接)
1. 笛卡爾乘積
表1有m行數(shù)據(jù),表2有n行數(shù)據(jù),查詢結(jié)果有m*n行數(shù)據(jù)。
2. 分類
(1)按年代分類
sql92標(biāo)準(zhǔn):僅支持內(nèi)連接
sql99標(biāo)準(zhǔn)(推薦):支持內(nèi)連接、外連接(左外連接和右外連接)、交叉連接
(2)按功能分類
內(nèi)連接:等值連接、非等值連接、自連接
外連接:左外連接、右外連接、全外連接
交叉連接
3. 等值連接
(1)查詢女生名及其對(duì)應(yīng)的男朋友名
SELECT? ? ? girlname, ? ? boyname FROM ? ? boys, ? ? girls WHERE ? ? girls.boyfriend_id=boys.girlfriend_id;
(2)查詢員工名(last_name)和對(duì)應(yīng)的部門名(department_name)-------------(根據(jù)關(guān)聯(lián)的id查詢)
SELECT? ? ? last_name, ? ? department_name FROM ? ? JDSC, ? ? SNSC WHERE ? ? JDSC.`id`=SNSC.`id`;
(3)查詢員工名(last_name)、工種號(hào)(job_id)、工種名(job_title) (員工表:JDSC 工作表:JOBSC)------為表起別名,提升簡(jiǎn)潔度,避免歧義
#"e.job_id"是為了避免歧義 SELECT ? ? last_name, ? ? e.job_id, ? ? job_title FROM ? ? ESC e, ? ? JOBSC j WHERE ? ? e.`job_id`=j.`job_id`;
注意:
如果為表起了別名,則查詢的字段不能使用原來(lái)的表名去限定。
上述兩個(gè)表的順序可互換
(4)查詢有獎(jiǎng)金的員工名、部門名
#員工名:last_name #部門名:department_name #獎(jiǎng)金率:commissiom_pct SELECT ? ? last_name, ? ? department_name, ? ? commissiom_pct FROM ? ? employees e, ? ? department d WHERE ? ? e.`department_id`=d.`department_id` AND ? ? e.`commissiom_pct` IS NOT NULL;
(5)分組查詢——查詢每個(gè)城市的部門個(gè)數(shù)
#城市分組表名:city #部門分組表名:departments? SELECT ? ? COUNT(*) 個(gè)數(shù), ? ? city FROM ? ? departments d, ? ? locations l WHERE ? ? d.`location_id`=l.`location_id` GROUP BY ? ? city;
(6)排序——查詢每個(gè)工種的工種名和員工個(gè)數(shù),并按員工個(gè)數(shù)降序
SELECT? ? ? job_title, ? ? COUNT(*) FROM ? ? emloyees e, ? ? jobs j WHERE ? ? e.`job_id`=j.`job_id` GROUP BY ? ? job_title ORDER BY ? ? COUNT(*) DESC;
(7)三表連接——查詢員工名、部門名和所在的城市
SELECT ?? ?last_name, ?? ?department_name, ?? ?city FROM ?? ?employees e, ?? ?departments d, ?? ?locations l WHERE ?? ?e.`department_id`=d.`department_id` AND ?? ?d.`location_id`=l.`location_id` AND? ? ? city LIKE 's%';
4. 總結(jié)
1)多表等值連接的結(jié)果為多表的交集部分
2)m表連接,至少需要n-1個(gè)連接條件
3)多表的順序沒(méi)有要求
4)一般需要為表起別名
5)可以搭配所有子句使用,例如排序、分組、篩選
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL服務(wù)啟動(dòng)與關(guān)閉如何操作圖文詳解
這篇文章主要為大家介紹了MySQL服務(wù)啟動(dòng)與關(guān)閉如何操作圖文詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>2023-10-10MySQL日期時(shí)間類型與字符串互相轉(zhuǎn)換的方法
這篇文章主要介紹了MySQL日期時(shí)間類型與字符串互相轉(zhuǎn)換的方法,文中通過(guò)代碼示例和圖文結(jié)合的方式給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07在Windows環(huán)境下安裝MySQL 的教程圖解
這篇文章主要介紹了在Windows環(huán)境下安裝MySQL 的教程圖解,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07SQL update多表關(guān)聯(lián)更新方法解讀
這篇文章主要介紹了SQL update 多表關(guān)聯(lián)更新方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08Mysql中關(guān)于on,in,as,where的區(qū)別
這篇文章主要介紹了Mysql中關(guān)于on,in,as,where的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03MySQL死鎖問(wèn)題分析及解決方法實(shí)例詳解
這篇文章主要介紹了MySQL死鎖問(wèn)題分析及解決方法,需要的朋友可以參考下2014-06-06mysql執(zhí)行時(shí)間為負(fù)數(shù)的原因分析
今天看到有人把phpmyadmin中的執(zhí)行時(shí)間出現(xiàn)負(fù)數(shù)的情況視為phpmyadmin的bug, 其實(shí)這種情況的本質(zhì)是php中浮點(diǎn)數(shù)(float)的精度問(wèn)題。2010-08-08