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

SQL ALTER TABLE 增刪改欄位、索引、主鍵完整語法速查

     編輯:MySQL 資料庫相關知識

ALTER TABLE 是資料庫結構變更的核心指令。本文彙整 SQL Server、MySQL、Oracle 通用與各家差異語法,含欄位增刪改、重命名、資料型別變更、索引/主鍵/唯一限制操作、資料表重命名。

通用標準語法(ANSI SQL)

操作語法
新增欄位ALTER TABLE table_name ADD column_name datatype
刪除欄位ALTER TABLE table_name DROP COLUMN column_name
修改欄位型別ALTER TABLE table_name ALTER COLUMN column_name datatype

SQL Server 專用語法

-- 新增欄位含預設值、非空
ALTER TABLE TableName ADD NewCol INT NOT NULL DEFAULT 0

-- 修改欄位名稱(需用 sp_rename)
EXEC sp_rename 'TableName.OldCol', 'NewCol', 'COLUMN'

-- 新增主鍵
ALTER TABLE TableName ADD CONSTRAINT PK_TableName PRIMARY KEY (Col1)

-- 新增索引
CREATE INDEX IX_TableName_Col1 ON TableName (Col1)
-- 或
ALTER TABLE TableName ADD INDEX IX_TableName_Col1 (Col1)  -- SQL Server 2016+

-- 刪除索引
DROP INDEX IX_TableName_Col1 ON TableName

-- 重命名資料表
EXEC sp_rename 'OldTableName', 'NewTableName'

MySQL 專用語法(差異較大)

-- 新增欄位
ALTER TABLE table_name ADD column_name datatype

-- 修改欄位名稱與型別(需同時指定新名稱與型別)
ALTER TABLE table_name CHANGE old_col new_col datatype

-- 僅修改型別
ALTER TABLE table_name MODIFY column_name datatype

-- 刪除欄位
ALTER TABLE table_name DROP COLUMN column_name

-- 新增索引
ALTER TABLE table_name ADD INDEX idx_name (col1, col2...)

-- 新增主鍵
ALTER TABLE table_name ADD PRIMARY KEY (col1)

-- 新增唯一索引
ALTER TABLE table_name ADD UNIQUE uk_name (col1)

-- 刪除索引
ALTER TABLE table_name DROP INDEX idx_name

-- 重命名資料表
ALTER TABLE old_name RENAME new_name

實戰範例:Persons 表操作

-- 原始表:id, lastname, firstname, address, city

-- 1. 新增 birthday 欄位
ALTER TABLE Persons ADD birthday DATE

-- 2. 修改 birthday 型別為 YEAR
ALTER TABLE Persons ALTER COLUMN birthday YEAR  -- SQL Server
ALTER TABLE Persons MODIFY birthday YEAR        -- MySQL

-- 3. 刪除 birthday 欄位
ALTER TABLE Persons DROP COLUMN birthday

⚠️ 跨資料庫差異重點

  • SQL Server:修改欄位名用 sp_rename,修改型別用 ALTER COLUMN
  • MySQL:修改名稱與型別合用 CHANGE,僅改型別用 MODIFY
  • Oracle:ALTER TABLE ... RENAME COLUMN、MODIFY
  • 刪除欄位:部分舊版資料庫不支援 DROP COLUMN

索引操作最佳實務

  • 大表加索引會鎖表,建議離線時段或使用 ONLINE 選項(Enterprise 版)
  • 刪除未使用索引可減少寫入負擔
  • 主鍵與唯一限制本質上也是索引
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved