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

MySQL 新增欄位 ALTER TABLE ADD 完整語法與預設值、註釋、位置指定範例

     編輯:MySQL 綜合教學

基本語法結構

ALTER TABLE `tbl_name`
ADD [COLUMN] `col_name` column_definition
    [FIRST | AFTER `existing_col`];

三大常用變體

場景SQL 範例說明
單純新增 (預設放末尾)ALTER TABLE `user` ADD `age` TINYINT UNSIGNED;允許 NULL、無預設值
新增帶預設值 + NOT NULLALTER TABLE `user` ADD `status` TINYINT NOT NULL DEFAULT 1;既有資料自動填 1,未來插入必填
指定位置 (在 email 後)ALTER TABLE `user` ADD `phone` VARCHAR(20) AFTER `email`;邏輯順序調整,不影響資料

進階屬性一次加齊

ALTER TABLE `orders`
ADD `discount` DECIMAL(5,2) NOT NULL DEFAULT 0.00
    COMMENT '折扣比例 0.00~1.00'
    AFTER `total_amount`;

MySQL 8.0+ Instant ADD COLUMN

  • 條件:僅限末尾新增、無預設值或預設常數、非主鍵/分區鍵、非外鍵參照欄。
  • 效果:純元資料操作,不重建表、不鎖表、毫秒級完成,無論表多大。
  • 驗證:SHOW CREATE TABLE 觀察 /* IMPORT */ 註釋或 INFORMATION_SCHEMA.INNODB_TABLES 版本號跳躍。

驗證與回滾

-- 檢查欄位定義
SHOW COLUMNS FROM `user` LIKE 'phone';

-- 刪除剛加的欄位 (謹慎)
ALTER TABLE `user` DROP `phone`;

避坑提醒

  1. 大表加 NOT NULL 無 DEFAULT → 報錯,必須給預設值或先允許 NULL。
  2. 外鍵欄位型別、長度、UNSIGNED 必須與父表主鍵完全一致。
  3. COMMENT 字串長度上限 1024 字元,需用單引號。
  4. 分區表新增欄位可能觸發全表重建,評估維護窗口。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved