摘要:本教學示範如何使用 SQL ALTER TABLE
來變更資料庫中現有表格的結構。
一旦您建立新的表格,您可能因為業務需求變更而想要變更其結構。若要修改表格的結構,您可以使用 ALTER TABLE
陳述式。ALTER TABLE
陳述式允許您對現有表格執行以下操作:
- 使用
ADD
子句新增欄位。 - 使用
MODIFY
子句修改欄位的屬性,例如約束、預設值等。 - 使用
DROP
子句移除欄位。
我們將在以下章節詳細檢視每個操作。
SQL ALTER TABLE ADD 欄位
以下陳述式說明 ALTER TABLE
與 ADD
子句的用法,讓您可以新增一個或多個欄位到表格。
ALTER TABLE table_name
ADD new_colum data_type column_constraint [AFTER existing_column];
Code language: SQL (Structured Query Language) (sql)
若要新增一個或多個欄位到表格,您需要執行以下步驟:
- 首先,在
ALTER TABLE
子句後指定您要新增欄位的表格,以table_name
表示。 - 其次,將新的欄位定義放在
ADD
子句之後。如果您想要指定新欄位在表格中的順序,您可以使用可選子句AFTER existing_column
。
請注意,如果您省略 AFTER
子句,所有新欄位將會加在表格最後一個欄位之後。
讓我們看看一些將新欄位新增到我們在建立表格教學中建立的 courses
表格的範例。

以下陳述式將名為 credit_hours
的新欄位新增到 courses
表格。
ALTER TABLE courses ADD credit_hours INT NOT NULL;
Code language: SQL (Structured Query Language) (sql)
您可以使用單一 ALTER TABLE
陳述式將多個欄位新增到表格。例如,以下陳述式將 fee
和 max_limit
欄位新增到 courses
表格,並將這些欄位放在 course_name
欄位之後。
ALTER TABLE courses
ADD fee NUMERIC (10, 2) AFTER course_name,
ADD max_limit INT AFTER course_name;
Code language: SQL (Structured Query Language) (sql)
SQL ALTER TABLE MODIFY 欄位
MODIFY
子句允許您變更現有欄位的一些屬性,例如 NOT NULL
、UNIQUE
和 資料類型。
以下陳述式顯示 ALTER TABLE
陳述式與 DROP
子句的語法。
ALTER TABLE table_name
MODIFY column_definition;
Code language: SQL (Structured Query Language) (sql)
請注意,您應該修改沒有資料的表格欄位的屬性。因為變更已經有資料的表格欄位的屬性可能會導致永久的資料遺失。
例如,如果欄位的資料類型是 VARCHAR
,而您將其變更為 INT
,則資料庫系統必須將資料從 VARCHAR
轉換為 INT
。如果轉換失敗,資料庫系統可能會使用欄位的預設值,這可能不是您預期的。
以下 ALTER TABLE MODIFY
陳述式將 fee
欄位的屬性變更為 NOT NULL
。
ALTER TABLE courses
MODIFY fee NUMERIC (10, 2) NOT NULL;
Code language: SQL (Structured Query Language) (sql)
SQL ALTER TABLE DROP 欄位
當表格的欄位已過時且不被任何其他資料庫物件(例如觸發程序、檢視表、儲存和預存程序)使用時,您需要將其從表格中移除。
若要移除一個或多個欄位,您可以使用以下語法:
ALTER TABLE table_name
DROP column_name,
DROP colum_name,
...
Code language: SQL (Structured Query Language) (sql)
例如,若要移除 courses
表格的 fee
欄位,您可以使用以下陳述式。
ALTER TABLE courses DROP COLUMN fee;
Code language: SQL (Structured Query Language) (sql)
若要同時移除多個欄位,您可以使用多個以逗號 (,) 分隔的 DROP COLUMN
子句。
例如,以下陳述式移除 courses
表格的 max_limit
和 credit_hours
欄位。
ALTER TABLE courses
DROP COLUMN max_limit,
DROP COLUMN credit_hours;
Code language: SQL (Structured Query Language) (sql)
在本教學中,您逐步學習如何使用 SQL ALTER TABLE
陳述式來新增、修改和刪除表格中的一個或多個欄位。