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

MySQL ALTER TABLE 實戰語法大全:欄位、索引、主鍵、重命名操作

     編輯:MySQL 資料庫相關知識

基本語法結構

ALTER [IGNORE] TABLE tbl_name 
    alter_spec [, alter_spec ...]

alter_spec:
    ADD [COLUMN] col_def [FIRST | AFTER col_name]
  | ADD INDEX [idx_name] (col_name,...)
  | ADD PRIMARY KEY (col_name,...)
  | ADD UNIQUE [idx_name] (col_name,...)
  | ALTER [COLUMN] col_name {SET DEFAULT val | DROP DEFAULT}
  | CHANGE [COLUMN] old_col_name new_col_def
  | MODIFY [COLUMN] col_def
  | DROP [COLUMN] col_name
  | DROP PRIMARY KEY
  | DROP INDEX idx_name
  | RENAME [AS] new_tbl_name
  | table_options

欄位操作實例

新增欄位

ALTER TABLE users ADD COLUMN phone VARCHAR(20) AFTER email;
ALTER TABLE users ADD COLUMN age TINYINT UNSIGNED FIRST;

修改欄位名稱與型別

-- CHANGE:可改名、改型別、改屬性(需完整重寫定義)
ALTER TABLE users CHANGE COLUMN phone mobile VARCHAR(20) NOT NULL DEFAULT '';

-- MODIFY:僅改型別/屬性,名稱不變
ALTER TABLE users MODIFY COLUMN mobile CHAR(11) NOT NULL;

刪除欄位

ALTER TABLE users DROP COLUMN age;

修改預設值

ALTER TABLE users ALTER COLUMN status SET DEFAULT 1;
ALTER TABLE users ALTER COLUMN status DROP DEFAULT;

索引操作實例

新增一般索引

ALTER TABLE users ADD INDEX idx_name (name);
ALTER TABLE users ADD INDEX idx_name_email (name, email);

新增主鍵

ALTER TABLE users ADD PRIMARY KEY (id);
-- 複合主鍵
ALTER TABLE orders ADD PRIMARY KEY (order_id, item_id);

新增唯一索引

ALTER TABLE users ADD UNIQUE uk_email (email);

查看索引

SHOW INDEX FROM users;
-- 或
SHOW KEYS FROM users;

刪除索引

ALTER TABLE users DROP INDEX idx_name;
ALTER TABLE users DROP PRIMARY KEY;  -- 刪主鍵

表重命名

ALTER TABLE old_name RENAME TO new_name;
-- 或
RENAME TABLE old_name TO new_name;

實戰建議

  • 大表 ALTER TABLE 會鎖表(MySQL 5.6+ 支援 Online DDL 部份操作),建議低峰期執行或使用 pt-online-schema-change。
  • MODIFY 比 CHANGE 更安全(不會誤改欄位名)。
  • 刪除欄位前確認無外鍵、視圖、觸發器依賴。
  • 新增索引前評估寫入效能影響。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved