mysql多个数据库查询_如何跨多个数据库查询
2019 年 6 月 4 日,由 Robert Gravelle 撰寫
隨著主從(Master-Slave)拓?fù)浜蛿?shù)據(jù)庫分片等現(xiàn)代實踐變得越來越普遍,數(shù)據(jù)庫管理員(DBA)和開發(fā)人員比以往更常同時訪問多個數(shù)據(jù)庫。通過使用可以容納多個數(shù)據(jù)庫連接的軟件,令這些工作變得更加容易。
Navicat Premium就是專為這工作而設(shè)。它是一套數(shù)據(jù)庫開發(fā)工具,讓你同時連接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 數(shù)據(jù)庫。它亦與 Amazon RDS、Amazon Aurora、Amazon Redshift、Microsoft Azure、Oracle Cloud、MongoDB Atlas、阿里云、騰訊云和華為云等云數(shù)據(jù)庫兼容。
在今天的文章中,我們將學(xué)習(xí)如何構(gòu)建和運行 SELECT 查詢。該查詢將使用 Navicat Premium 的 SQL 編輯器從多個數(shù)據(jù)庫中獲取數(shù)據(jù)。
設(shè)置環(huán)境
我們需要幾個表,每個表都在自己的數(shù)據(jù)庫中。碰巧的是,我有一些 Sakila 示例數(shù)據(jù)庫的副本。我已創(chuàng)建了 actors 表的副本并將其內(nèi)容在中間拆分為兩組,以 A 到 L 開頭的名稱在第一個數(shù)據(jù)庫中,以 M 到 Z 開頭的名稱在另一個數(shù)據(jù)庫中。我們將會將兩組名稱組合成一個結(jié)果集。以下是 Navicat 對象窗格中的布局:
多個數(shù)據(jù)庫 SELECT 語法
正如你可以在 SELECT 語句中將默認(rèn)數(shù)據(jù)庫中的表引用為 tbl_name 一樣,你也可以在表名前加上數(shù)據(jù)庫名用于顯式指定數(shù)據(jù)庫,例如:db_name.tbl_name。數(shù)據(jù)庫前綴也可用于在一個SELECT語句的表列表中組合不同數(shù)據(jù)庫,如 FROM 關(guān)鍵字后面指定的那樣。因此,以下是有效的SQL:
SELECT database1.table1.field1,
database2.table1.field1
FROM database1.table1,
database.table1
WHERE database1.table1.age > 12;
使用 JOIN
你可以像往常一樣聯(lián)接(JOIN)表。只需通過在表前添加數(shù)據(jù)庫名稱來確保完全限定表名稱:
SELECT *
FROM database1.table1 T1
JOIN database2.table1 AS T2 ON T1.id = T2.id
如果您不需要用公共字段聯(lián)接(JOIN)表,則可以使用 UNION 運算符組合多個 SELECT 語句:
SELECT *
FROM database1.table1 T1
WHERE T1.age > 12
UNION
SELECT *
FROM database2.table1 T2
WHERE T2.age > 12;
現(xiàn)在我們知道如何一次查詢兩個表,讓我們在 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 表中的演員的結(jié)果,而有些演員是來自 M-Z 表:
總結(jié)
在本篇文章中,我們學(xué)習(xí)了如何使用 Navicat Premium 構(gòu)建和運行 SELECT 查詢,從多個數(shù)據(jù)庫中獲取數(shù)據(jù)。Navicat 的自動完成代碼和自定義的代碼段功能透過關(guān)鍵字建議和減少重復(fù)輸入相同的代碼,令編碼更加快速。你可以免費試用 14 天進行評估。
總結(jié)
以上是生活随笔為你收集整理的mysql多个数据库查询_如何跨多个数据库查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文写作与学术规范课堂笔记01——4.3
- 下一篇: 常用的机械工具