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

MySQL ALTER TABLE 命令詳解:修改表結構完全指南

     編輯:MySQL 資料庫相關知識

ALTER TABLE 核心功能

ALTER TABLE 允許修改現有表結構:增刪欄位、建立/刪除索引、變更欄位類型、重命名欄位或表、修改表註釋與存儲引擎。

常用語法與實例

1. 重命名欄位

-- 將欄位 a 重命名為 b,類型保持 INTEGER
ALTER TABLE t1 CHANGE a b INTEGER;

2. 修改欄位類型

-- 使用 CHANGE(需指定舊名和新名)
ALTER TABLE t1 CHANGE b b BIGINT NOT NULL;

-- 使用 MODIFY(僅修改類型,不改名)
ALTER TABLE t1 MODIFY b BIGINT NOT NULL;

3. 修改預設值

-- 設定預設值
ALTER TABLE t1 ALTER COLUMN b SET DEFAULT 'default_val';

-- 刪除預設值
ALTER TABLE t1 ALTER COLUMN b DROP DEFAULT;

4. 索引操作

-- 新增索引
ALTER TABLE t1 ADD INDEX idx_name (column_name);

-- 新增主鍵
ALTER TABLE t1 ADD PRIMARY KEY (id);

-- 刪除索引
ALTER TABLE t1 DROP INDEX idx_name;

-- 刪除主鍵
ALTER TABLE t1 DROP PRIMARY KEY;

5. 欄位增刪

-- 新增欄位(預設加到末尾)
ALTER TABLE t1 ADD COLUMN c TIMESTAMP;

-- 指定位置新增
ALTER TABLE t1 ADD COLUMN c INT FIRST;        -- 第一列
ALTER TABLE t1 ADD COLUMN c INT AFTER b;      -- 在 b 之後

-- 刪除欄位
ALTER TABLE t1 DROP COLUMN c;

6. 自增欄位與索引

ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,
ADD INDEX (c);
注意: AUTO_INCREMENT 欄位必須建立索引,且不能為 NULL。

7. 修改表名

ALTER TABLE t1 RENAME TO t2;

8. 修改存儲引擎

ALTER TABLE testalter_tbl ENGINE = MyISAM;

完整實戰演示

-- 建立測試表
CREATE TABLE testalter_tbl (
    i INT,
    c CHAR(1)
);

-- 刪除欄位 i
ALTER TABLE testalter_tbl DROP i;

-- 新增欄位 i 到首列
ALTER TABLE testalter_tbl ADD i INT FIRST;

-- 新增欄位 i 到 c 之後
ALTER TABLE testalter_tbl ADD i INT AFTER c;

-- 修改欄位類型
ALTER TABLE testalter_tbl MODIFY c CHAR(10);

-- 修改欄位名稱和類型
ALTER TABLE testalter_tbl CHANGE i j BIGINT;
ALTER TABLE testalter_tbl CHANGE j j INT;

-- 設定 NOT NULL 和預設值
ALTER TABLE testalter_tbl MODIFY j BIGINT NOT NULL DEFAULT 100;

-- 修改預設值
ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

-- 修改表引擎
ALTER TABLE testalter_tbl ENGINE = MyISAM;

-- 重命名表
ALTER TABLE testalter_tbl RENAME TO alter_tbl;

關鍵點總結

  • FIRST / AFTER 僅用於 ADD,調整位置需先 DROP 再 ADD
  • CHANGE 需指定舊名、新名、類型;MODIFY 僅修改類型
  • 縮短被索引欄位長度會報錯
  • 刪除組成索引的所有欄位,索引自動刪除
  • 使用 SHOW COLUMNS FROM table 驗證結構變更
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved