這篇文章給大家分享的是有關(guān)mysql如何實現(xiàn)多表連接查詢的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站制作、成都網(wǎng)站設(shè)計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元海林做網(wǎng)站,已為上家服務(wù),為海林各地企業(yè)和個人服務(wù),聯(lián)系電話:13518219792實際的項目,存在多張表的關(guān)聯(lián)關(guān)系。不可能在一張表里面就能檢索出所有數(shù)據(jù)。如果沒有表連接的話,那么我們就需要非常多的操作。比如需要從A表找出限制性的條件來從B表中檢索數(shù)據(jù)。不但需要分多表來操作,而且效率也不高。比如書中的例子:
代碼如下:
SELECT FId FROM T_Customer WHERE FName='MIKE'
這個SQL語句返回2,也就是姓名為MIKE 的客戶的FId值為2,這樣就可以到T_Order中檢索FCustomerId等于2 的記錄:
代碼如下:
SELECT FNumber,FPrice FROM T_Order WHERE FCustomerId=2
下面我們詳細(xì)來看看表連接。表連接有多種不同的類型,有交叉連接(CROSS JOIN)、內(nèi)連接(INNER JOIN)、外連接(OUTTER JOIN)。
(1)內(nèi)連接(INNER JOIN):內(nèi)連接組合兩張表,并且只獲取滿足兩表連接條件的數(shù)據(jù)。
代碼如下:
SELECT o.FId,o.FNumber,o.FPrice, c.FId,c.FName,c .FAge FROM T_Order o JOIN T_Customer c ON o.FCustomerId= c.FId
注:在大多數(shù)數(shù)據(jù)庫系統(tǒng)中,INNER JOIN中的INNER是可選的,INNER JOIN 是默認(rèn)的連接方式。
在使用表連接的時候可以不局限于只連接兩張表,因為有很多情況下需要聯(lián)系許多表。例如,T_Order表同時還需要連接T_Customer和T_OrderType兩張表才能檢索到所需要的信息,編寫如下SQL語句即可:
代碼如下:
SELECT o.FId,o.FNumber,o.FPrice, c.FId,c.FName,c .FAge FROM T_Order o JOIN T_Customer c ON o.FCustomerId= c.FId INNER JOIN T_OrderType ON T_Order.FTypeId= T_OrderType.FId
(2)交叉連接(CROSS JOIN):交叉連接所有涉及的表中的所有記錄都包含在結(jié)果集中??梢圆捎脙煞N方式來定義交叉連接,分別是隱式和顯式的連接。
下面看看隱式的例子:
代碼如下:
SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge, T_Order.FId, T_Order.FNumber, T_Order.FPrice FROM T_Customer, T_Order
使用顯式的連接則需要使用CROSS JOIN,例子如下:
代碼如下:
SELECT T_Customer.FId, T_Customer.FName, T_Customer.FAge, T_Order.FId, T_Order.FNumber, T_Order.FPrice FROM T_Customer CROSS JOIN T_Order
(3)外連接(OUTTER JOIN):內(nèi)部連接只獲取滿足連接條件的數(shù)據(jù),而對于外部連接來說,主要是解決這樣的一種場景。滿足條件的數(shù)據(jù)檢索出來,這個沒有疑問,外部連接還會檢索另一部分?jǐn)?shù)據(jù),那就是將不滿足條件的數(shù)據(jù)以NULL來填充。先來看一下外連接的分類:左外部連接(LEFT OUTER JOIN)、右外部連接(RIGHT OUTER JOIN)和全外部連接(FULLOUTER JOIN)。
I、左外部連接(LEFT OUTER JOIN):前頭也說了,將不滿足條件的數(shù)據(jù)以NULL來填充。那么具體是哪些需要以NULL來填充呢,對于左外連接來說的話,連接條件當(dāng)中,如果出現(xiàn)滿足條件的左表的數(shù)據(jù)在右表中沒有相應(yīng)匹配時,需要把相應(yīng)的右表字段填充NULL值。也就是說左外部連接的主體是左表,右表來配合。
代碼如下:
SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o LEFT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId
注:如果使用左外部連接的話,通過where語句能過濾其中不符合的數(shù)據(jù)
代碼如下:
SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o LEFT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId WHERE o.FPrice>=150
II、右外部連接(RIGHT OUTER JOIN):右外部連接與左外連部接相反,將會被填充NULL值的是左表的字段。也就是說右外部連接的主體是右表,左表來配合。
代碼如下:
SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o RIGHT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId
注:同左外連接一樣,可以使用where語句進(jìn)行過濾
III、全外部連接(FULLOUTER JOIN):全外部連接是左外部連接和右外部連接的合集。也就是既包括左外部連接的結(jié)果集,也包括右外部連接的結(jié)果集。
代碼如下:
SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o FULL OUTER JOIN T_Customer c ON o.FCustomerId=c.FId
其結(jié)果相當(dāng)于:
SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o LEFT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId UNION SELECT o.FNumber,o.FPrice,o.FCustomerId, c.FName,c.FAge FROM T_Order o RIGHT OUTER JOIN T_Customer c ON o.FCustomerId=c.FId
=======================================================================================
多表查詢的多種sql寫法:(下面是從兩個表里查詢<也可以看成從三個表里查詢>,顯示表v_goods里的所有字段,顯示admin2表里的name字段作為添加人,顯示表admin2表的name字段作為操作人) 多個表的查詢都可按照下面三個例句進(jìn)行編寫sql
SELECT v.*,(SELECT a.name FROM admin2 a WHERE a.adminId=v.loadInId) AS aname,(SELECT a.name FROM admin2 a WHERE a.adminId=v.operatorId) AS uname FROM v_goods v where 1=1; SELECT v.*,a.name aname,b.name uname FROM v_goods v,admin2 a,admin2 b WHERE a.adminId=v.loadInId AND b.adminId=v.operatorId ; SELECT v.*,a.name aname,b.name uname FROM v_goods v LEFT JOIN admin2 a ON a.adminId=v.loadInId LEFT JOIN admin2 b ON b.adminId=v.operatorId ;
感謝各位的閱讀!關(guān)于“mysql如何實現(xiàn)多表連接查詢”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
網(wǎng)頁題目:mysql如何實現(xiàn)多表連接查詢-創(chuàng)新互聯(lián)
當(dāng)前URL:http://www.rwnh.cn/article32/hsjpc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、關(guān)鍵詞優(yōu)化、App設(shè)計、Google、App開發(fā)、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容