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

MySQL 表結構維護與改造操作全集

     編輯:MySQL 資料庫相關知識

修改列數據類型

ALTER TABLE visitor MODIFY nam VARCHAR(30);

新增列

ALTER TABLE visitor ADD age INT;           -- 末尾
ALTER TABLE visitor ADD age INT FIRST;       -- 首列
ALTER TABLE visitor ADD age INT AFTER nam;   -- 指定列後

移動列位置

ALTER TABLE visitor MODIFY age INT AFTER nam;

修改列名與類型

ALTER TABLE visitor CHANGE birth birthday DATE;

刪除列

ALTER TABLE visitor DROP age;

表複製

-- 結構+數據
CREATE TABLE customerH SELECT * FROM customer;

-- 僅結構
CREATE TABLE customerG LIKE customer;
INSERT INTO customerG SELECT * FROM customer;

-- 部分列複製
INSERT INTO tb1G(no) SELECT bang FROM tb1;

刪除表

DROP TABLE IF EXISTS customerG;  -- 安全,不存在不報錯
DROP TABLE customerG;              -- 不存在報錯

操作對比速查

操作關鍵字是否鎖表備註
修改類型MODIFY是 (MDL鎖)大表慎用,建議 pt-online-schema-change
新增列ADD是指定位置用 FIRST/AFTER
移動列MODIFY ... AFTER是實際重建表
改名+改類型CHANGE是舊名 新名 類型
刪除列DROP是數據永久丟失
複製結構LIKE否極快,不複製數據/索引統計
複製全表SELECT * INTO是大表慎用

大表 DDL 最佳實踐

  • 使用 pt-online-schema-change (Percona Toolkit) 無鎖變更
  • 或 gh-ost (GitHub) 影子表異步同步
  • 低峰期執行,預留足夠磁盤空間 (臨時表佔用)
  • 監控 ALTER TABLE 進程狀態,必要時 KILL
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved