新聞中心
在數(shù)據(jù)庫中,經(jīng)常需要使用多張表進(jìn)行數(shù)據(jù)查詢和處理。簡(jiǎn)單的單表查詢只能解決一部分問題,如果想要從多個(gè)表中獲取需要的數(shù)據(jù),則需要使用多表連接查詢功能。下面將介紹幾種常用的SQL多表連接查詢技巧。

網(wǎng)站制作、成都網(wǎng)站建設(shè)介紹好的網(wǎng)站是理念、設(shè)計(jì)和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)建站擁有的網(wǎng)站設(shè)計(jì)理念、多方位的設(shè)計(jì)風(fēng)格、經(jīng)驗(yàn)豐富的設(shè)計(jì)團(tuán)隊(duì)。提供PC端+手機(jī)端網(wǎng)站建設(shè),用營(yíng)銷思維進(jìn)行網(wǎng)站設(shè)計(jì)、采用先進(jìn)技術(shù)開源代碼、注重用戶體驗(yàn)與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。
1. 內(nèi)連接查詢
內(nèi)連接查詢也叫交集查詢,其語法為:SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name;
內(nèi)連接查詢的作用是根據(jù)兩個(gè)及以上表中的共同屬性進(jìn)行查詢。比如,我們需要查詢“訂單”表和“客戶”表中都包含的“客戶名”和“訂單日期”信息,可以這樣寫:
SELECT customers.customer_name, orders.order_date
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.customer_id;
上面的語句中,我們使用了INNER JOIN關(guān)鍵字來將“客戶”表和“訂單”表連接。這些表可以有多個(gè)共同屬性,但是只能有一個(gè)屬性進(jìn)行匹配,示例中我們選擇的是客戶ID(customers.customer_id = orders.customer_id)來進(jìn)行匹配的。
2. 左連接查詢
左連接查詢(LEFT JOIN)也稱為左外連接,其格式為:SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;
左連接查詢的作用是在顯示“左邊”表(即SELECT語句中寫在前面的表)的全部字段時(shí)在“右邊”表中查找相匹配的行。如果右邊表匹配不上,會(huì)自動(dòng)填充為NULL值,不會(huì)丟失任何有用信息。比如,我們需要查詢“訂單”表中的信息和處在“客戶”表和“訂單詳情”表“貨物價(jià)格”的信息,可以這樣執(zhí)行:
SELECT orders.order_date, customers.customer_name, order_detls.price
FROM ((orders
LEFT JOIN customers ON orders.customer_id=customers.customer_id)
LEFT JOIN order_detls ON orders.order_id=order_detls.order_id)
ORDER BY orders.order_date;
這里使用了兩次左連接查詢操作,將三張表連接在一起,將最終的數(shù)據(jù)結(jié)果按照訂單日期來排序。
3. 右連接查詢
右連接查詢(RIGHT JOIN)也稱為右外連接,與左連接查詢類似。其格式為:SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name;
右連接查詢的作用與左連接查詢相反,即在“右邊”表中查找全部字段,如果左邊表匹配不上,則填充為NULL值。比如,我們需要查詢“客戶”表中的信息和對(duì)應(yīng)的“訂單”表和“付款”表中包含的“付款金額”信息,可以這樣寫:
SELECT customers.customer_name, orders.order_date, payments.amount
FROM ((payments
RIGHT JOIN orders ON payments.order_id=orders.order_id)
RIGHT JOIN customers ON orders.customer_id=customers.customer_id)
ORDER BY customers.customer_name;
這里使用了兩次右連接查詢操作,將三張表連接在一起,將最終的數(shù)據(jù)結(jié)果按照顧客名字來排序。
4. 復(fù)合連接查詢
復(fù)合連接查詢指將多個(gè)連接方式組合在一起使用,以滿足用戶的具體查詢需求。常見的組合方式有以下幾種:
(1)多表內(nèi)連接查詢
SELECT A.country, C.order_id
FROM A
INNER JOIN B ON A.id = B.id
INNER JOIN C ON B.id = C.id
WHERE A.country LIKE ‘C%’
ORDER BY A.country;
(2)多表左連接查詢
SELECT A.country, C.order_id
FROM A
LEFT JOIN B ON A.id = B.id
LEFT JOIN C ON B.id = C.id
WHERE A.country LIKE ‘C%’
ORDER BY A.country;
(3)多表右連接查詢
SELECT A.country, C.order_id
FROM A
RIGHT JOIN B ON A.id = B.id
RIGHT JOIN C ON B.id = C.id
WHERE A.country LIKE ‘C%’
ORDER BY A.country;
5. 全連接查詢
全連接查詢(FULL JOIN)可以返回兩張表中所有的行,無論這些行能否匹配,然后根據(jù)條件篩選出所需的字段信息。全連接查詢的格式為:SELECT column_name(s) FROM table1 FULL JOIN table2 ON table1.column_name=table2.column_name;
全連接查詢語句的應(yīng)用范圍較窄,因?yàn)樗鼤?huì)返回兩張表中所有的信息,而且早期版本的MySQL不支持該查詢方式。如果必須使用全連接查詢,則需要先使用不同的語句將信息在內(nèi)部處理,這未免有些繁瑣。
相關(guān)問題拓展閱讀:
- 如何對(duì)兩個(gè)數(shù)據(jù)庫服務(wù)器上多個(gè)表進(jìn)行關(guān)聯(lián)查詢?
如何對(duì)兩個(gè)數(shù)據(jù)庫服務(wù)器上多個(gè)表進(jìn)行關(guān)聯(lián)查詢?
可以這樣做:比如有兩個(gè)TADODataSet組成主細(xì)表
adsMain和adsDetail,需要加上一個(gè)TDataSource對(duì)象用于連接主表的DataSet,然后設(shè)置adsDetail的DataSource為主表的DataSource,山?jīng)_最后寫各自的CommandText:棚李主表為:select
*
from
主表細(xì)表:select
*
from
細(xì)表
where
關(guān)聯(lián)字段=:關(guān)聯(lián)字段鏈唯遲
查看原帖>>
關(guān)于不同數(shù)據(jù)庫數(shù)據(jù)關(guān)聯(lián)查詢的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
文章題目:多表連接SQL查詢技巧(不同數(shù)據(jù)庫數(shù)據(jù)關(guān)聯(lián)查詢)
鏈接分享:http://fisionsoft.com.cn/article/cccjjog.html


咨詢
建站咨詢
