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

MySQL ALTER 命令全方位詳解:表結構修改、索引管理與重命名實戰

     編輯:MySQL 綜合教學

MySQL ALTER 命令全方位詳解

ALTER TABLE 是 MySQL 中功能最強大、用法最豐富的 DDL 命令之一。本文通過實戰案例系統講解字段增刪改、表重命名、存儲引擎變更、主鍵索引管理等核心操作。

準備工作:建立測試表

USE learning;
CREATE TABLE student(
    id INT NOT NULL,
    name CHAR(10) NOT NULL,
    class INT NOT NULL,
    age INT
);

一、字段的增、刪、改與位置調整

1. 刪除字段

ALTER TABLE student DROP age;

注意:若表僅剩一個字段,無法使用 DROP 刪除。

2. 新增字段

預設追加至表尾:

ALTER TABLE student ADD age INT NOT NULL;

指定位置(FIRST 置首、AFTER col_name 置後):

ALTER TABLE student ADD sex CHAR(2) FIRST;
ALTER TABLE student ADD sex CHAR(2) AFTER age;

技巧:FIRST/AFTER 僅適用於 ADD,調整現有字段位置需先 DROP 再 ADD。

3. 修改字段類型與名稱

  • MODIFY:僅改類型/屬性,名稱不變
    ALTER TABLE student MODIFY age CHAR(100);
  • CHANGE:可同時改名與類型,語法 CHANGE 舊名 新名 新類型
    ALTER TABLE student CHANGE id stu_id BIGINT PRIMARY KEY;

4. NULL 值與預設值控制

-- 設 NOT NULL 且預設值
ALTER TABLE student MODIFY sex CHAR(2) NOT NULL DEFAULT '男';

-- 刪除預設值
ALTER TABLE student ALTER sex DROP DEFAULT;

二、修改表名

ALTER TABLE student RENAME TO student_1;

三、存儲引擎變更

ALTER TABLE student ENGINE = MYISAM;
SHOW CREATE TABLE student;  -- 驗證引擎

四、主鍵與索引管理

主鍵操作

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

-- 新增複合主鍵
ALTER TABLE student ADD CONSTRAINT PK_STUDENT PRIMARY KEY (id, class);

索引操作

-- 普通索引
ALTER TABLE student ADD INDEX index_name (name);

-- 唯一索引
ALTER TABLE student ADD UNIQUE emp_name (age);

-- 查看索引
SHOW INDEX FROM student;

-- 刪除索引
ALTER TABLE student DROP INDEX index_name;

實戰避坑指南

  • 大表結構變更建議使用 pt-online-schema-change 避免鎖表
  • MODIFY 不支援改名,CHANGE 需重複指定完整列定義
  • 刪除主鍵前確認無外鍵依賴,否則會報錯
  • 索引名稱在表級唯一,跨表可重名

熟練掌握 ALTER TABLE 各子句組合,能高效應對業務演進帶來的結構變更需求。

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