首頁 > 軟體

mysql遠端跨庫聯合查詢的範例

2022-03-01 13:04:31

注意:myemployees庫和shoppingCart庫在同一臺物理主機,如果不在同一臺物理主機該怎麼辦呢?下面我會介紹到。

情況一2個庫在同一臺物理主機

聯合查詢(不同的2個庫,myemployees庫和shoppingCart庫),這2個庫在同一臺物理主機上,都在我本機。

#聯合查詢(不同的2個庫,myemployees庫和shoppingCart庫)
SELECT emp01.`employee_id`, emp01.`first_name` FROM myemployees.employees AS emp01 LIMIT 0, 5
UNION
SELECT emp02.`employee_id`, emp02.`first_name` FROM shoppingCart.`employees2` AS emp02;
#
SELECT emp01.`employee_id`, emp01.`first_name` FROM myemployees.employees AS emp01 LIMIT 0, 5
UNION ALL
SELECT emp02.`employee_id`, emp02.`first_name` FROM shoppingCart.`employees2` AS emp02;

情況二2個庫不在同一臺物理主機(即2個庫分別在不同的物理主機)

為了演示效果,我這裡使用我的虛擬機器器,我虛擬機器器裡安裝了Linux系統(centos),Linux系統中已經安裝了MySql資料庫,MySql資料庫服務已經啟動了,所有的環境已經全部弄好了。

我的Linux系統(centos)的ip是192.168.117.66。

我打算我原生的author表和遠端的user表進行聯合查詢。

在linux中輸入SHOW CREATE TABLE `user`;這句話得到的結果後,我們把

CREATE TABLE IF NOT EXISTS `user` (
  `id` INT(11) DEFAULT NULL,
  `name` VARCHAR(20) DEFAULT NULL
)

這段程式碼拷貝到我原生的資料庫中,並且在末尾加上

ENGINE =FEDERATED CONNECTION='mysql://root:root@192.168.117.66:3306/testDB/user';這句話。

CREATE TABLE IF NOT EXISTS `user` (
  `id` INT(11) DEFAULT NULL,
  `name` VARCHAR(20) DEFAULT NULL
)ENGINE =FEDERATED CONNECTION='mysql://root:root@192.168.117.66:3306/testDB/user';

其實上面的那段語句,說白了,就是在我原生的資料庫中建了一個遠端資料庫的連線的快捷方式(遠端資料庫的連線快捷方式),類似於什麼呢?就類似於我們window作業系統中的桌面上的桌面快捷方式,我們雙擊一下桌面上的某個軟體圖示就能開啟該軟體,一樣的道理嘛。

執行上面的語句即可。

對了,還有一點要注意:

你要查一下,你原生的mysql資料庫的FEDERATED引擎有沒有開啟。

SHOW ENGINES;

如果FEDERATED是NO的話,說明沒有開啟,需要你去修改一下mysql資料庫的組態檔。

修改本地mysql資料庫的組態檔,在組態檔末尾加上federated,如下圖:

如果你是windows系統的話,就修改my.ini檔案,如果你用的是Linux系統的話,就修改my.cnf檔案。

修改完組態檔後記得重啟一下mysql的服務。

linux重啟mysql服務,service mysqld restart

windows重啟mysql服務,在dos視窗中,輸入net stop mysql服務名,然後再輸入net start mysql服務名

OK,全部搞定後,執行如下sql語句,即可看到跨庫查詢的查詢結果。

#
SELECT id, aname FROM author
UNION
SELECT id, `name` FROM `user`;

SELECT * FROM author INNER JOIN  `user`;

以上這種跨伺服器跨庫的查詢,需要注意如下幾點: 

1.該跨庫查詢方式不支援事務,最好別使用事務。

2.不能修改表結構。

3.MySQL使用這種跨庫查詢方式,遠端資料庫目前僅支援MySQL,其他資料庫不支援。

4.表結構必須和目標資料庫表完全一致。

到此這篇關於mysql遠端跨庫聯合查詢的範例的文章就介紹到這了,更多相關mysql遠端跨庫查詢內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com