11.25 如何跨多個數據庫查詢——Navicat

Navicat Premium是一個可連接多種數據庫的管理工具,它可以讓你以單一程序同時連接到MySQL、Oracle及PostgreSQL數據庫,讓管理不同類型的數據庫更加的方便。

隨著Master-Slave拓撲和數據庫分片等現代實踐的日益普及,數據庫管理員(DBA)和開發人員比以往任何時候都更多地使用多個數據庫。通過可以容納多個數據庫連接的軟件,這樣做變得更加容易。

這就到了Navicat Premium的用武之地。它是一個數據庫開發、管理和管理工具,允許您同時連接到MySQL,MariaDB,MongoDB,SQL Server,Oracle,PostgreSQL和SQLite數據庫。Navicat還兼容大多數雲數據庫,包括Amazon RDS,Amazon Aurora,Amazon Redshift,Microsoft Azure,Oracle Cloud,Google Cloud,阿里雲,騰訊雲,MongoDB Atlas和華為雲。

在這篇文章中,我們將學習如何構建和執行SELECT查詢,該查詢將使用navicat Premium的SQL編輯器從多個數據庫中獲取數據。

建立環境

我們需要幾個表,每個表都在自己的數據庫中。碰巧的是,我們有一些Sakila示例數據庫的副本。已創建了actors表的副本並將其內容拆分為中間,因此以A到L開頭的名稱在第一個數據庫中,以M到Z開頭的名稱在另一箇中。這將允許我們將兩組名稱組合成一個結果集。以下是Navicat對象窗格中的佈局:

如何跨多個數據庫查詢——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;

使用表連接

您可以像往常一樣加入表格;只需確保通過預先添加數據庫名稱來完全限定表名:

SELECT *
FROM database1.table1 T1
JOIN database2.table1 AS T2 ON T1.id = T2.id

如果您不需要在公共字段上加入表,則可以使用UNION運算符組合多個SELECT:

SELECT *
FROM database1.table1 T1
WHERE T1.age > 12
UNION
SELECT *
FROM database2.table1 T2
WHERE T2.age > 12;

現在我們知道如何一次查詢兩個表,讓我們在actors表上嘗試類似的查詢。我們將選擇ID在特定範圍之間的actor:

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

在這篇文章中,我們學習瞭如何構建和執行SELECT查詢,以使用Navicat Premium的SQL編輯器從多個數據庫中獲取數據。Navicat通過獲取關鍵字的建議並從編碼中刪除重複,幫助您快速編寫代碼完成和可自定義的代碼片段。


分享到:


相關文章: