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

MySQL ALTER TABLE 修改表結構全攻略:增刪改列、重命名、修改引擎

     編輯:MySQL 綜合教學

準備:創建測試表

CREATE TABLE testalter_tbl (i INT, c CHAR(1));
SHOW COLUMNS FROM testalter_tbl;

1. 刪除、添加、移動列

-- 刪除列
ALTER TABLE testalter_tbl DROP i;

-- 添加列(默認加到末尾)
ALTER TABLE testalter_tbl ADD i INT;

-- 指定位置:FIRST(首列)、AFTER col_name(指定列後)
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT FIRST;
ALTER TABLE testalter_tbl DROP i;
ALTER TABLE testalter_tbl ADD i INT AFTER c;

注意:移動現有列需「先刪後加」。

2. 修改列定義或名稱

-- MODIFY:只改類型/屬性,不改名
ALTER TABLE testalter_tbl MODIFY c CHAR(10);

-- CHANGE:改名 + 改定義(舊名 新名 新定義)
ALTER TABLE testalter_tbl CHANGE i j BIGINT;
-- 只改類型不改名:舊名 新名相同
ALTER TABLE testalter_tbl CHANGE j j INT;

3. NULL/默認值屬性調整

-- 修改為 NOT NULL 並設置默認值
ALTER TABLE testalter_tbl MODIFY j BIGINT NOT NULL DEFAULT 100;

-- 單獨修改默認值
ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
SHOW COLUMNS FROM testalter_tbl; -- Default 顯示 1000

-- 刪除默認值
ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

4. 修改表引擎

ALTER TABLE testalter_tbl ENGINE = InnoDB;
SHOW TABLE STATUS LIKE 'testalter_tbl'\G

5. 重命名表

ALTER TABLE testalter_tbl RENAME TO alter_tbl;

生產環境避坑指南

  1. 大表 DDL 鎖表風險:MySQL 5.6+ 支持 Online DDL,但部分操作仍需鎖表。大表變更建議用 pt-online-schema-change 或 gh-ost。
  2. 字符集變更:ALTER TABLE t CONVERT TO CHARACTER SET utf8mb4 會重建表並轉換數據,ALTER TABLE t CHARSET=utf8mb4 只改默認值。
  3. 備份先行:任何結構變更前必須備份或快照。
  4. 外鍵約束:修改被引用列需先刪除外鍵,再重建。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved