CREATE TABLE new_table SELECT * FROM old_table;
⚠️ 缺點:新表不會保留主鍵、AUTO_INCREMENT 等屬性,需手動 ALTER TABLE 補充,易出錯。
-- 方法 1:WHERE 條件永假 CREATE TABLE new_table SELECT * FROM old_table WHERE 1=2; -- 方法 2:LIKE 子句(推薦,保留索引/主鍵/預設值等) CREATE TABLE new_table LIKE old_table;
INSERT INTO new_table SELECT * FROM old_table;
INSERT INTO new_table (col1, col2, ...) SELECT col1, col2, ... FROM old_table;
-- MySQL 不支援此語法,僅供參考 SELECT * INTO table2 FROM table1 WHERE 1=2;
SELECT * INTO table2 FROM table1;
SHOW CREATE TABLE old_table;
複製輸出的 CREATE TABLE 陳述式,修改表名後執行,可建立完全相同的表(含索引、主鍵、引擎、字符集等)。
# 導出表結構與資料 mysqldump -u root -p db_name old_table > dump.sql # 修改 dump.sql 中的表名,再導入 mysql -u root -p db_name < dump.sql
mysql -u root -p -e "CREATE DATABASE new_db;" mysqldump old_db -u root -p --skip-extended-insert --add-drop-table | mysql new_db -u root -p
-- 完全複製 INSERT INTO db1.table1 SELECT * FROM db2.table2; -- 去重複製 INSERT INTO db1.table1 SELECT DISTINCT * FROM db2.table2; -- 僅前 5 筆(MySQL 語法) INSERT INTO db1.table1 SELECT * FROM db2.table2 LIMIT 5;
CREATE TABLE ... LIKE ... + INSERT ... SELECTCREATE TABLE ... SELECT ...mysqldump 管道流式傳輸