MySql連接查詢(xún)方式詳解
1. 什么是連接查詢(xún)
從一張表中單獨(dú)查詢(xún),稱(chēng)為單表查詢(xún)。
跨表查詢(xún),多張表聯(lián)合其來(lái)查詢(xún),稱(chēng)為連接查詢(xún)。
2. 連接查詢(xún)的方式
內(nèi)連接:
- 等值連接
- 非等值連接
- 自連接
外連接:
- 左外連接(左連接)
- 右外連接(右連接)
當(dāng)對(duì)多張表進(jìn)行查詢(xún),沒(méi)有任何限制的時(shí)候,返回的值是笛卡爾積
3. 內(nèi)連接
1. 等值連接
查詢(xún)每個(gè)員工所在部門(mén)名稱(chēng),顯示員工名和部門(mén)名?
emp e 和 dept d 表進(jìn)行連接,條件是:e. deptno = d.deptno
SQL92語(yǔ)法
mysql> select e.ename, d.dname from emp e, dept d where e.deptno = d.deptno;
SQL99語(yǔ)法
mysql> select e.ename, d.dname from emp e join dept d on e.deptno = d.deptno;
SQL92的缺點(diǎn):結(jié)構(gòu)不清晰,表的連接條件,和后期進(jìn)一步篩選的條件,都放到了where后面。
SQL99的優(yōu)點(diǎn):表連接的條件是獨(dú)立的,連接之后,如果還需要進(jìn)一步篩選,再往后繼續(xù)添加where語(yǔ)句。
2. 非等值連接
找出每個(gè)員工的薪資等級(jí),要求顯示員工名、薪資、薪資等級(jí)?
mysql> select e.ename, e.sal, s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal;
3. 自連接
查詢(xún)員工的上級(jí)領(lǐng)導(dǎo),要求顯示員工名對(duì)應(yīng)的領(lǐng)導(dǎo)名?
一張表看成兩張表
emp a 員工表
emp b 領(lǐng)導(dǎo)表
mysql> select a.ename as '員工名', b.ename as '領(lǐng)導(dǎo)名' from emp a join emp b on a.mgr = b. empno;
4. 外連接
與內(nèi)連接不同的地方在于,內(nèi)連接對(duì)于沒(méi)有匹配的值,就不在查詢(xún)結(jié)果中;而外連接對(duì)于沒(méi)有匹配的值,依舊存在與查詢(xún)結(jié)果中。
right:將 join 關(guān)鍵字右邊的表看為主表
left:將 join 關(guān)鍵字左邊的表看為主表
1. 右外連接
mysql> select e.ename, d.dname from emp e right join dept d on e.deptno = d.deptno;
2. 左外連接
mysql> select e.ename, d.dname from dept d left join emp e on e.deptno = d.deptno;
查詢(xún)每個(gè)員工的上級(jí)領(lǐng)導(dǎo),要求顯示所有員工的姓名和領(lǐng)導(dǎo)姓名?
mysql> select a.ename as '員工名', b.ename as '領(lǐng)導(dǎo)名' from emp a left join emp b on a.mgr = b.empno;
5. 多張表(兩張以上)連接
找出每個(gè)員工的部門(mén)名稱(chēng)以及工資等級(jí),要求顯示員工名、薪資、薪資等級(jí)?
select e.ename, e.sal, d.dname, s.grade from emp e join dept d on e.deptno = d.deptno join salgrade s on e.sal between s.losal and s.hisal;
到此這篇關(guān)于MySql連接查詢(xún)方式詳解的文章就介紹到這了,更多相關(guān)MySql連接查詢(xún)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL自連接與子查詢(xún)方式
- MySQL之多表查詢(xún)自連接方式
- MySQL如何查詢(xún)客戶(hù)端連接情況
- MySQL兩個(gè)表的親密接觸-連接查詢(xún)的原理分析
- Mysql樹(shù)形表的2種查詢(xún)解決方案(遞歸與自連接)
- Mysql查詢(xún)數(shù)據(jù)庫(kù)連接狀態(tài)以及連接信息詳解
- MySql中的連接查詢(xún)問(wèn)題
- MySQL查詢(xún)進(jìn)階操作從函數(shù)到表連接的使用
- MySQL數(shù)據(jù)庫(kù)學(xué)習(xí)之去重與連接查詢(xún)?cè)斀?/a>
- MySQL中的連接查詢(xún)(等值連接)
- MySQL實(shí)現(xiàn)自然連接查詢(xún)的示例
相關(guān)文章
mysql數(shù)據(jù)遷移到Oracle的正確方法
這篇文章主要為大家詳細(xì)介紹了mysql數(shù)據(jù)遷移到Oracle的正確方法,文中步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02MySQL進(jìn)行g(shù)roup by字段返回大量異常結(jié)果的問(wèn)題解決
本文主要介紹了MySQL進(jìn)行g(shù)roup by字段返回大量異常結(jié)果的問(wèn)題解決,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05MySQL刪除表數(shù)據(jù)、清空表命令詳解(truncate、drop、delete區(qū)別)
介紹了MySQL中清空或刪除表數(shù)據(jù)的三種方法:truncate、delete和drop,以及它們的特點(diǎn)、使用場(chǎng)景和注意事項(xiàng),Truncate用于快速刪除表中所有數(shù)據(jù)并釋放空間,但不保留表結(jié)構(gòu);delete用于刪除表中特定行或所有數(shù)據(jù),保留表結(jié)構(gòu)且操作可回滾2024-10-10簡(jiǎn)單講解sql語(yǔ)句中的group by的使用方法
掌握sql語(yǔ)句中g(shù)roup by的使用方法會(huì)對(duì)我們的工作效率有很大的提升,下面小編來(lái)和大家一起簡(jiǎn)單學(xué)習(xí)一下2019-05-05MySQL中LIKE子句相關(guān)使用的學(xué)習(xí)教程
這篇文章主要介紹了MySQL中LIKE子句相關(guān)使用的學(xué)習(xí)教程,LIKE子句一般用于WHERE語(yǔ)句中,需要的朋友可以參考下2015-12-12