首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 複製表結構與數據的四種姿勢:LIKE、SELECT INTO、條件過濾

     編輯:MySQL 綜合教學

MySQL 複製表結構與數據的四種姿勢:LIKE、SELECT INTO、條件過濾

日常開發中頻繁需要「複製表結構」「複製結構+數據」「僅複製結構不帶數據」。本文總結 MySQL 原生語法的四種核心模式,並說明引擎、字符集、索引、自增列等屬性的繼承行為。

場景 1:僅複製結構(含索引/約束/引擎/字符集)

CREATE TABLE new_table LIKE old_table;
-- 等效於:SHOW CREATE TABLE old_table 獲取 DDL 再執行
-- 特點:完整複製列定義、索引、主鍵、外鍵、ENGINE、CHARSET、AUTO_INCREMENT 當前值
-- 不複製:數據、TRIGGER、PARTITION 定義(5.7+ 已修復部分分區複製問題)

場景 2:複製結構 + 全量數據

CREATE TABLE new_table SELECT * FROM old_table;
-- 特點:列類型從 SELECT 列表推導,主鍵/索引/約束/自增屬性/ENGINE/CHARSET 均不複製
-- 適合:快速建立數據快照、導出報表表、異構遷移前臨時表

場景 3:複製結構 + 指定列/條件數據

CREATE TABLE new_table SELECT * FROM old_table WHERE 1 = 2;
-- 或
CREATE TABLE new_table SELECT * FROM old_table LIMIT 0;
-- 原理:WHERE 條件恒為 FALSE,執行計劃不掃描數據頁,僅解析列元數據
-- 效果同 CREATE TABLE new_table LIKE old_table,但不複製索引/約束/引擎/字符集

屬性繼承對比表

屬性CREATE ... LIKECREATE ... SELECT *CREATE ... SELECT ... WHERE 1=2
列定義/類型✅ 完全一致✅ 從 SELECT 推導✅ 從 SELECT 推導
主鍵/唯一鍵✅ 複製❌ 不複製❌ 不複製
普通索引✅ 複製❌ 不複製❌ 不複製
外鍵約束✅ 複製❌ 不複製❌ 不複製
AUTO_INCREMENT✅ 保留當前值❌ 重置為 1❌ 重置為 1
ENGINE✅ 複製❌ 默認引擎❌ 默認引擎
CHARSET/COLLATION✅ 複製❌ 默認字符集❌ 默認字符集
TRIGGER❌ 不複製❌ 不複製❌ 不複製
PARTITION⚠️ 版本相關❌ 不複製❌ 不複製

進階組合模式

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved