本篇介紹相同結構表的垂直合併(UNION)、跨資料庫合併思路,以及使用 mysqldump 進行邏輯備份與還原。
假設 person 與 father 結構相同(name, age, high, address)。
-- 1. 建立臨時表存放 UNION 結果(自動去重)
CREATE TEMPORARY TABLE tmp SELECT * FROM person UNION SELECT * FROM father;
-- 2. 建立目標表並指定主鍵
CREATE TABLE resu (
name VARCHAR(20) PRIMARY KEY,
age INT,
high INT,
address VARCHAR(20)
);
-- 3. 寫入去重後資料
INSERT INTO resu (name, age, high, address)
SELECT DISTINCT name, age, high, address FROM tmp;
-- 4. 清理臨時表
DROP TABLE tmp;
思考:
① 能否直接 CREATE TABLE tmp SELECT ... UNION ...?可行,但無法指定主鍵。
② 跨資料庫合併:SELECT * FROM db1.table UNION SELECT * FROM db2.table。
③ 水平合併(JOIN)需依關聯鍵 SELECT * FROM t1 JOIN t2 ON t1.id = t2.id。
注意:在系統 Shell 執行,非 MySQL 客戶端內部。
$ mysqldump -u root -p db_name > backup_db.sql
# 密碼可留空提示輸入,更安全
# 建議輸出 .sql 副檔名
$ mysqldump -u root -p db_name table_name > backup_table.sql
$ mysqldump -u root -p -d --add-drop-table db_name > schema_only.sql
$ mysqldump -u root -p --default-character-set=utf8mb4 db_name > backup_utf8.sql
$ mysql -u root -p db_name < backup_db.sql
# 或在 MySQL 客戶端:
mysql> SOURCE /path/backup_db.sql;
--single-transaction --master-data=2 獲取一致性快照與 binlog 位點。