首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 複製資料表結構與資料的正確語法:CREATE TABLE ... SELECT

     編輯:MySQL 資料庫相關知識

錯誤嘗試:SELECT INTO

MySQL 不支援 `SELECT * INTO new_tbl FROM old_tbl`(這是 SQL Server/Access 語法),執行會報錯「Table 'new_tbl' doesn't exist」。

正解:CREATE TABLE ... SELECT

-- 僅複製結構(WHERE 1=2 條件永假)
CREATE TABLE new_tbl SELECT * FROM old_tbl WHERE 1=2;

-- 結構+資料完整複製
CREATE TABLE new_tbl SELECT * FROM old_tbl WHERE 1=1;
-- 或簡寫
CREATE TABLE new_tbl SELECT * FROM old_tbl;

進階用法

  • 指定欄位:`CREATE TABLE new_tbl SELECT id, name FROM old_tbl;`
  • 重新命名欄位:`CREATE TABLE new_tbl SELECT id AS user_id, name AS username FROM old_tbl;`
  • 加入運算欄位:`CREATE TABLE summary SELECT category, COUNT(*) AS cnt FROM posts GROUP BY category;`

限制提醒

  • 不會複製索引、主鍵、AUTO_INCREMENT、外鍵、觸發器等約束物件。
  • 新表引擎預設為預設儲存引擎(通常是 InnoDB)。
  • 大表複製會佔用大量臨時空間與時間,建議改用 `mysqldump` + `sed` 修改表名再匯入。

完整複製(含索引/約束)標準流程

mysqldump -u root -p db_name old_tbl | sed 's/old_tbl/new_tbl/g' | mysql -u root -p db_name
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved