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

MySQL 表結構修改進階:約束管理、列重定義與重命名實戰

     編輯:MySQL 綜合教學

MySQL 表結構修改進階:約束管理、列重定義與重命名實戰

接續基礎篇,深入講解主鍵/唯一/默認約束的增刪、列定義修改(MODIFY/CHANGE)、表重命名兩種方式,附圖形化驗證截圖說明。

一、約束的添加與刪除

1. 主鍵約束

-- 添加(帶約束名)
ALTER TABLE user2 ADD CONSTRAINT PK_USER2_ID PRIMARY KEY (id);

-- 刪除
ALTER TABLE user2 DROP PRIMARY KEY;

2. 唯一約束

-- 添加
ALTER TABLE user2 ADD UNIQUE (username);

-- 刪除(需先查約束名)
SHOW INDEX FROM user2\G;  -- 獲取 Key_name
ALTER TABLE user2 DROP INDEX 约束名;

3. 默認約束

-- 設置默認值(兩種寫法等價)
ALTER TABLE user2 ALTER age SET DEFAULT 15;
ALTER TABLE user2 MODIFY age SMALLINT DEFAULT 15;

-- 刪除默認值
ALTER TABLE user2 ALTER age DROP DEFAULT;

二、列定義修改:MODIFY vs CHANGE

命令能力典型場景
MODIFY修改類型、長度、默認值、NOT NULL、位置(FIRST/AFTER)不改列名時首選
CHANGEMODIFY 所有能力 + 修改列名需重命名列時使用

實戰示例

-- MODIFY:調整類型並移至首列
ALTER TABLE user2 MODIFY pid VARCHAR(20) FIRST;

-- CHANGE:重命名 pid → p_id,同時改類型、位置
ALTER TABLE user2 CHANGE pid p_id SMALLINT UNSIGNED AFTER id;

三、表重命名:兩種等價方式

-- 方式1:ALTER TABLE
ALTER TABLE user2 RENAME user3;

-- 方式2:RENAME TABLE(可一次重命名多表)
RENAME TABLE user3 TO user2;

注意:重命名表會導致視圖、存儲過程、外鍵引用失效,謹慎操作,建議維護窗口執行。

四、外鍵約束管理(補充)

-- 添加外鍵(子表 privinces 關聯父表 user)
ALTER TABLE privinces
ADD CONSTRAINT FK_PROV_USER FOREIGN KEY (uid) REFERENCES user(id)
ON DELETE CASCADE ON UPDATE CASCADE;

-- 刪除外鍵
SHOW CREATE TABLE privinces;  -- 獲取 CONSTRAINT 名
ALTER TABLE privinces DROP FOREIGN KEY FK_PROV_USER;

五、最佳實踐檢查清單

  1. 修改前備份表結構:SHOW CREATE TABLE tbl\G
  2. 大表修改列類型/添加索引採用 pt-online-schema-change 避免鎖表
  3. 外鍵操作需確保父表數據存在,否則報錯
  4. 重命名後同步更新應用端配置、文檔、監控採集規則
  5. 生產環境變更必須走變更管理流程,準備回滾腳本
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved