轉帖|使用教程|編輯:鮑佳佳|2020-08-25 09:47:04.810|閱讀 1224 次
概述:在今天的文章中,我們將學習如何構建和運行 SELECT 查詢。該查詢將使用 Navicat Premium 的 SQL 編輯器從多個數據庫中獲取數據。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
如何跨多個數據庫查詢
隨著主從(Master-Slave)拓撲和數據庫分片等現代實踐變得越來越普遍,數據庫管理員(DBA)和開發人員比以往更頻繁同時訪問多個數據庫。通過使用可以容納多個數據庫連接的軟件,令這些工作變得更加容易。
Navicat Premium就是專為這工作而設。它是一套數據庫開發工具,讓你同時連接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 數據庫。它亦與 Amazon RDS、Amazon Aurora、Amazon Redshift、Microsoft Azure、Oracle Cloud、MongoDB Atlas、阿里云、騰訊云和華為云等云數據庫兼容。
在今天的文章中,我們將學習如何構建和運行 SELECT 查詢。該查詢將使用 Navicat Premium 的 SQL 編輯器從多個數據庫中獲取數據。
設置環境我們需要幾個表,每個表都在自己的數據庫中。碰巧的是,我有一些 Sakila 示例數據庫的副本。我已創建了 actors 表的副本并將其內容在中間拆分為兩組,以 A 到 L 開頭的名稱在第一個數據庫中,以 M 到 Z 開頭的名稱在另一個數據庫中。我們將會將兩組名稱組合成一個結果集。以下是 Navicat 對象窗格中的布局:
多個數據庫 SELECT 語法
正如你可以在 SELECT 語句中將默認數據庫中的表引用為 tbl_name 一樣,你也可以在表名前加上數據庫名用于顯式指定數據庫,例如:db_name.tbl_name。數據庫前綴也可用于在一個SELECT語句的表列表中組合不同數據庫,如 FROM 關鍵字后面指定的那樣。因此,以下是有效的SQL:
SELECT database1.table1.field1, database2.table1.field1 FROM database1.table1, database.table1 WHERE database1.table1.age > 12;使用 JOIN
你可以像往常一樣聯接(JOIN)表。只需通過在表前添加數據庫名稱來確保完全限定表名稱:
SELECT *
FROM database1.table1 T1
JOIN database2.table1 AS T2 ON T1.id = T2.id
如果您不需要用公共字段聯接(JOIN)表,則可以使用 UNION 運算符組合多個 SELECT 語句:
SELECT * FROM database1.table1 T1 WHERE T1.age > 12 UNION SELECT * FROM database2.table1 T2 WHERE T2.age > 12;
現在我們知道如何一次查詢兩個表,讓我們在 actors 表上嘗試類似的查詢。 我們將選擇(SELECT) ID 在特定范圍之間的演員:
SELECT T1.actor_id, T1.first_name, T1.last_name FROM sakila.`actor_a-l` T1 WHERE T1.actor_id BETWEEN 30 AND 50 UNION SELECT T2.actor_id, T2.first_name, T2.last_name FROM sakila2.`actor_m-z` T2 WHERE T2.actor_id BETWEEN 30 AND 50 ORDER BY last_name;
你可以得到保存在于 A-L 表中的演員的結果,而有些演員是來自 M-Z 表:
總結
在本篇文章中,我們學習了如何使用 Navicat Premium 構建和運行 SELECT 查詢,從多個數據庫中獲取數據。Navicat 的自動完成代碼和自定義的代碼段功能透過關鍵字建議和減少重復輸入相同的代碼,令編碼更加快速。你可以免費試用 14 天進行評估?;鄱甲鳛镻remiumSoft授權合作商現Navicat Premium正版授權立減500,低至5004元!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: