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

MySQL ALTER TABLE 實戰速查手冊:增刪改欄位、重命名、主鍵索引全覆蓋

     編輯:MySQL 資料庫相關知識

前言

ALTER TABLE 是 DDL 操作高發區,語法細節記不住、線上執行怕鎖表。本文整理 10 大高頻場景標準語法,附帶線上執行避坑提示,建議收藏備查。

十大核心操作標準語法

1. 刪除欄位

ALTER TABLE `table_name` DROP `column_name`;

2. 新增欄位

ALTER TABLE `table_name` ADD `column_name` INT NOT NULL COMMENT '註釋說明';

3. 修改欄位類型/屬性(不改名)

ALTER TABLE `table_name` CHANGE `column_name` `column_name` BIGINT NOT NULL COMMENT '註釋說明';

關鍵: CHANGE 旧名 新名 定義,不改名時新舊名相同。

4. 重命名欄位

ALTER TABLE `table_name` CHANGE `old_name` `new_name` BIGINT NOT NULL COMMENT '註釋說明';

5. 重命名表

ALTER TABLE `old_table_name` RENAME `new_table_name`;

等價於 RENAME TABLE old_table_name TO new_table_name;,支援跨庫移動(實現庫重命名變通)。

6. 刪除主鍵

ALTER TABLE `table_name` DROP PRIMARY KEY;

7. 新增主鍵(單列/聯合)

ALTER TABLE `sj_resource_charges` 
  ADD CONSTRAINT `PK_SJ_RESOURCE_CHARGES` PRIMARY KEY (`resid`, `resfromid`);

8. 新增普通索引

ALTER TABLE `sj_resource_charges` ADD INDEX `IDX_NAME` (`name`);

9. 新增唯一索引

ALTER TABLE `sj_resource_charges` ADD UNIQUE `UK_CARDNUMBER` (`cardnumber`);

10. 刪除索引

ALTER TABLE `table_name` DROP INDEX `index_name`;

線上執行避坑指南(MySQL 5.6+ / 8.0)

操作類型是否拷貝表/鎖表線上建議
增/刪/改欄位、加索引通常需重建表(Copy + Exclusive Lock)用 pt-online-schema-change / gh-ost 無鎖變更
修改 COMMENT、DEFAULT、AUTO_INCREMENT 起始值僅修改元數據(Instant DDL,8.0+)直接執行,秒級完成
重命名表/欄位元數據操作直接執行,極快
刪除索引僅標記刪除,無拷貝直接執行

最佳實踐清單

  1. 必加 COMMENT:字段用途、枚舉值含義、單位,利人利己
  2. 索引命名規範:IDX_表縮寫_欄位、UK_表縮寫_欄位、PK_表縮寫
  3. 大表 DDL 必走工具:pt-osc --alter "ADD INDEX idx_x(x)" D=t,t=tbl --execute
  4. 變更前備份:mysqldump -d db tbl > tbl_struct_backup.sql
  5. 驗證語法:EXPLAIN ALTER TABLE ... (8.0.18+) 或 SHOW WARNINGS 後檢查

總結

掌握這 10 條核心語法 + 線上執行原則,應對 95% 的 ALTER TABLE 場景遊刃有餘。**大表無鎖變更用工具,小表直連跑,元數據操作放心改**,是 DDL 安全執行的黃金法則。

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