這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)MySQL中如何實(shí)現(xiàn)跨庫(kù)查詢,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、仁和網(wǎng)站維護(hù)、網(wǎng)站推廣。
一、同服務(wù)的跨庫(kù)查詢
同服務(wù)的跨庫(kù)查詢只需要在關(guān)聯(lián)查詢的時(shí)候帶上數(shù)據(jù)名,SQL的寫(xiě)法是這樣的:SELECT * FROM 數(shù)據(jù)庫(kù)1.table1 x JOIN 數(shù)據(jù)庫(kù)2.table2 y ON x.field1=y.field2;例如:
二、不同服務(wù)的跨庫(kù)查詢
不同服務(wù)的跨庫(kù)查詢,直接通過(guò)數(shù)據(jù)名加表明是無(wú)法進(jìn)行關(guān)聯(lián)的,這里需要用到MySQL數(shù)據(jù)庫(kù)中的federated引擎。具體過(guò)程如下:
需求:服務(wù)A上的數(shù)據(jù)庫(kù)X的表A需要關(guān)聯(lián)服務(wù)B上的數(shù)據(jù)庫(kù)Y中的表B,查詢需要的數(shù)據(jù);
1、先查看MySQL數(shù)據(jù)庫(kù)是否安裝了FEDERATED引擎,通過(guò) 命令show engines;如下圖:
如上圖所示,MySQL安裝了FEDERATED引擎,但Support是No,表示沒(méi)有啟用,去my.cnf文件末加上1行FEDERATED,重啟MySQL即可。若沒(méi)有找到FEDERATED引擎,則需要去安裝了。
2、在服務(wù)A上的數(shù)據(jù)庫(kù)X中創(chuàng)建一個(gè)表B,語(yǔ)句如下:CREATE TABLE table_name(……)ENGINE=FEDERATED CONNECTION='mysql://[username]:[password]@[localtion]:[port]/[db-name]/[table-name]'
說(shuō)明:通過(guò)FEDERATED引擎創(chuàng)建的表只是在本地有表定義文件,數(shù)據(jù)文件則存在于遠(yuǎn)程數(shù)據(jù)庫(kù)中,通過(guò)這個(gè)引擎可以實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)訪問(wèn)功能。換句話說(shuō),這種建表方式會(huì)在服務(wù)A上的數(shù)據(jù)庫(kù)X中創(chuàng)建了一個(gè)表結(jié)構(gòu)文件(即服務(wù)B上的數(shù)據(jù)庫(kù)Y的B表的表結(jié)構(gòu)文件),表的索引、數(shù)據(jù)等文件還在服務(wù)B上的數(shù)據(jù)庫(kù)Y中,相當(dāng)于一種快捷方式,方便關(guān)聯(lián)。
3、在服務(wù)A上的數(shù)據(jù)庫(kù)X中直接進(jìn)行A表與B表關(guān)聯(lián),就可以查詢出需要的數(shù)據(jù)了。
這種方式有以下幾點(diǎn)是需要注意的:
1)、該跨庫(kù)查詢方式不支持事務(wù),最好別使用事務(wù)。
2)、不能修改表結(jié)構(gòu)。
3)、MySQL使用這種跨庫(kù)查詢方式,遠(yuǎn)程數(shù)據(jù)庫(kù)目前僅支持MySQL,其他數(shù)據(jù)庫(kù)不支持。
4)、表結(jié)構(gòu)必須和目標(biāo)數(shù)據(jù)庫(kù)表完全一致。
上述就是小編為大家分享的MySQL中如何實(shí)現(xiàn)跨庫(kù)查詢了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。