聯合查詢(不同的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;
為了示範效果,我在這裡使用我的虛擬機,我虛擬機安裝了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遠端跨庫聯合查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!