MySQL 中 USE 指令用於設定當前預設資料庫(Current Database),後續未指定資料庫前綴的表操作將針對該資料庫。本文詳細說明 USE 用法、跨庫查詢語法、會話層級生效範圍與實務應用場景。
-- 1. 查看所有資料庫
SHOW DATABASES;
-- 2. 切換到目標資料庫
USE test_db;
-- Database changed
-- 3. 後續操作預設針對 test_db
SHOW TABLES; -- 查看 test_db 下的表
SELECT * FROM users; -- 等同 SELECT * FROM test_db.users
使用 資料庫名.表名 完整限定名稱,可在同一會話中同時存取多個資料庫:
-- 當前 USE db1
USE db1;
-- 直接查詢 db2 的表
SELECT * FROM db2.users WHERE id = 1;
-- 跨庫 JOIN
SELECT a.name, b.order_no
FROM db1.users a
JOIN db2.orders b ON a.id = b.user_id;
優勢: 不需頻繁切換 USE,適合多庫聯查、ETL、報表場景。
ERROR 1044 (42000): Access denied。DELIMITER //
CREATE PROCEDURE sync_data()
BEGIN
USE source_db;
INSERT INTO target_db.logs SELECT * FROM events WHERE created_at > DATE_SUB(NOW(), INTERVAL 1 DAY);
USE target_db;
DELETE FROM logs WHERE created_at < DATE_SUB(NOW(), INTERVAL 30 DAY);
END//
DELIMITER ;
-- 應用層根據租戶 ID 動態 USE
USE tenant_1001_db;
SELECT * FROM orders WHERE ...
#!/bin/bash
# 備份所有資料庫結構
for db in $(mysql -e "SHOW DATABASES" -s --skip-column-names); do
mysqldump --no-data $db > ${db}_schema.sql
done
Database=dbname,或配置檔 [client] database=dbname,啟動時自動 USE。USE 是會話級資料庫上下文切換指令,簡單但關鍵。實務上推薦使用完整限定名稱(`db.table`)進行跨庫查詢,減少 USE 切換帶來的上下文混淆與權限問題。結合權限控制、連線池預設資料庫設定,可構建清晰、安全的多資料庫存取架構。