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

SQL ALTER TABLE 修改資料表結構:新增欄位並設定預設值

     編輯:關於SqlServer

語法範例

在 test 資料表新增 recommend 欄位,型別 CHAR(1),預設值 'n':

ALTER TABLE test
ADD COLUMN recommend CHAR(1) DEFAULT 'n';

各資料庫語法差異對照

資料庫語法備註
MySQLALTER TABLE test ADD recommend CHAR(1) DEFAULT 'n';COLUMN 關鍵字可省略
PostgreSQLALTER TABLE test ADD COLUMN recommend CHAR(1) DEFAULT 'n';標準 SQL 寫法
SQL ServerALTER TABLE test ADD recommend CHAR(1) DEFAULT 'n';不支援 COLUMN 關鍵字
OracleALTER TABLE test ADD (recommend CHAR(1) DEFAULT 'n');需用括號包裹
SQLiteALTER TABLE test ADD COLUMN recommend CHAR(1) DEFAULT 'n';支援標準語法

常見 ALTER TABLE 操作速查

-- 刪除欄位
ALTER TABLE test DROP COLUMN recommend;           -- MySQL/PostgreSQL/SQLite
ALTER TABLE test DROP COLUMN recommend;           -- SQL Server (同語法)
ALTER TABLE test DROP (recommend);                -- Oracle

-- 修改欄位型別/長度
ALTER TABLE test MODIFY recommend VARCHAR(10);    -- MySQL/Oracle
ALTER TABLE test ALTER COLUMN recommend VARCHAR(10); -- SQL Server/PostgreSQL

-- 重新命名欄位
ALTER TABLE test CHANGE recommend is_recommend CHAR(1); -- MySQL
ALTER TABLE test RENAME COLUMN recommend TO is_recommend; -- PostgreSQL/SQLite
EXEC sp_rename 'test.recommend', 'is_recommend', 'COLUMN'; -- SQL Server
ALTER TABLE test RENAME COLUMN recommend TO is_recommend; -- Oracle 12c+

-- 新增/刪除主鍵
ALTER TABLE test ADD PRIMARY KEY (id);            -- 標準
ALTER TABLE test DROP PRIMARY KEY;                -- MySQL
ALTER TABLE test DROP CONSTRAINT pk_test;         -- SQL Server/PostgreSQL/Oracle

-- 新增/刪除索引
CREATE INDEX idx_test_name ON test(name);         -- 標準建立
DROP INDEX idx_test_name ON test;                 -- MySQL
DROP INDEX test.idx_test_name;                    -- SQL Server
DROP INDEX idx_test_name;                         -- PostgreSQL/Oracle

最佳實務建議

  • 大表新增欄位:若表超過百萬筆,ADD COLUMN 可能鎖表較久。MySQL 5.6+ / PostgreSQL 11+ 支援 ALGORITHM=INPLACE 或 CONCURRENTLY 線上操作。
  • 預設值回填:新增 NOT NULL 欄位時,若表有既存資料,必須指定 DEFAULT 或先允許 NULL、回填資料、再改 NOT NULL。
  • 版本控管:生產環境所有 DDL 變更應納入遷移腳本(Flyway / Liquibase),不可直接手工執行。
  • 備份優先:結構變更前務必備份資料庫或建立快照。

小結

ALTER TABLE ... ADD COLUMN ... DEFAULT ... 是最基礎的結構變更操作。掌握各主流資料庫的語法差異、大表線上變更策略、與版本控管流程,是 DBA 與後端工程師的必備技能。

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