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

SQL Server 表結構變更完整語法大全:ALTER TABLE 實戰指南

     編輯:關於SqlServer

核心 DDL 操作:ALTER TABLE 詳解

所有範例以 distributors 表為例,實際使用時請替換為你的表名、欄位名與資料類型。

1. 新增欄位

ALTER TABLE distributors ADD COLUMN address VARCHAR(30);

2. 刪除欄位

ALTER TABLE distributors DROP COLUMN address RESTRICT;

3. 修改多個欄位資料類型(單一語句)

ALTER TABLE distributors
    ALTER COLUMN address TYPE VARCHAR(80),
    ALTER COLUMN name TYPE VARCHAR(100);

4. 使用 USING 子句轉換資料型別(Unix 時間戳 → TIMESTAMPTZ)

ALTER TABLE foo
    ALTER COLUMN foo_timestamp TYPE TIMESTAMP WITH TIME ZONE
    USING TIMESTAMP WITH TIME ZONE 'epoch' + foo_timestamp * INTERVAL '1 second';

5. 重新命名欄位

ALTER TABLE distributors RENAME COLUMN address TO city;

6. 重新命名資料表

ALTER TABLE distributors RENAME TO suppliers;

7. 新增 NOT NULL 約束

ALTER TABLE distributors ALTER COLUMN street SET NOT NULL;

8. 移除 NOT NULL 約束

ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL;

9. 新增 CHECK 約束

ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (CHAR_LENGTH(zipcode) = 5);

10. 移除 CHECK 約束

ALTER TABLE distributors DROP CONSTRAINT zipchk;

11. 新增外鍵約束

ALTER TABLE distributors ADD CONSTRAINT distfk
    FOREIGN KEY (address) REFERENCES addresses(address) MATCH FULL;

12. 新增複合唯一約束

ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode);

13. 新增主鍵約束(每表僅一個)

ALTER TABLE distributors ADD PRIMARY KEY (dist_id);

14. 移動表至不同 TABLESPACE

ALTER TABLE distributors SET TABLESPACE fasttablespace;

SQL 命令列快速參考(SSMS / sqlcmd 通用)

操作語法範例
新增欄位ALTER TABLE tableName ADD columnName VARCHAR(30);
修改欄位類型ALTER TABLE tableName ALTER COLUMN columnName VARCHAR(4000);
修改欄位名稱EXEC sp_rename 'tableName.column1', 'column2', 'COLUMN';
刪除欄位ALTER TABLE tableName DROP COLUMN columnName;

執行前必讀提醒

  • 備份優先:任何 DDL 變更前請完整備份資料庫。
  • 鎖定影響:大表 ALTER COLUMN 可能導致長時間 Sch-M 鎖,建議低峰期執行或採用線上變更工具(如 pt-online-schema-change 移植版)。
  • 相依物件:變更欄位類型/名稱前,檢查視圖、存儲過程、函數、應用程式代碼是否有相依,需同步修改。
  • 約束命名:明確命名約束(如 CONSTRAINT zipchk),利於後續管理與除錯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved