共計 1028 個字符,預計需要花費 3 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
MySQL 中怎么實現跨庫查詢,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
一、同服務的跨庫查詢
同服務的跨庫查詢只需要在關聯查詢的時候帶上數據名,SQL 的寫法是這樣的:SELECT * FROM 數據庫 1.table1 x JOIN 數據庫 2.table2 y ON x.field1=y.field2; 例如:

二、不同服務的跨庫查詢
不同服務的跨庫查詢,直接通過數據名加表明是無法進行關聯的,這里需要用到 MySQL 數據庫中的 federated 引擎。具體過程如下:
需求:服務 A 上的數據庫 X 的表 A 需要關聯服務 B 上的數據庫 Y 中的表 B,查詢需要的數據;
1、先查看 MySQL 數據庫是否安裝了 FEDERATED 引擎,通過命令 show engines; 如下圖:

如上圖所示,MySQL 安裝了 FEDERATED 引擎,但 Support 是 No, 表示沒有啟用,去 my.cnf 文件末加上 1 行 FEDERATED,重啟 MySQL 即可。若沒有找到 FEDERATED 引擎,則需要去安裝了。
2、在服務 A 上的數據庫 X 中創建一個表 B,語句如下:CREATE TABLE table_name(hellip; hellip;)ENGINE=FEDERATED CONNECTION= mysql://[username]:
此處含有隱藏內容,需要正確輸入密碼后可見!
@[localtion]:[port]/[db-name]/[table-name]
說明:通過 FEDERATED 引擎創建的表只是在本地有表定義文件,數據文件則存在于遠程數據庫中,通過這個引擎可以實現遠程數據訪問功能。換句話說,這種建表方式會在服務 A 上的數據庫 X 中創建了一個表結構文件 (即服務 B 上的數據庫 Y 的 B 表的表結構文件),表的索引、數據等文件還在服務 B 上的數據庫 Y 中,相當于一種快捷方式,方便關聯。

3、在服務 A 上的數據庫 X 中直接進行 A 表與 B 表關聯,就可以查詢出需要的數據了。
這種方式有以下幾點是需要注意的:1)、該跨庫查詢方式不支持事務,最好別使用事務。2)、不能修改表結構。3)、MySQL 使用這種跨庫查詢方式,遠程數據庫目前僅支持 MySQL,其他數據庫不支持。4)、表結構必須和目標數據庫表完全一致。
關于 MySQL 中怎么實現跨庫查詢問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注丸趣 TV 行業資訊頻道了解更多相關知識。
向 AI 問一下細節