本教學介紹如何使用SQL ALTER TABLE
更改資料庫中現有表的結構。
建立新表後,您可能希望更改其結構,因為業務需求會發生變化。 要修改表的結構,請使用ALTER TABLE
語句。 ALTER TABLE
語句用於對現有表執行以下操作:
ADD
子句新增新列。MODIFY
子句修改列的屬性,例如:約束,預設值等。DROP
子句刪除列。我們將在以下部分詳細學習每個操作。
以下語句說明了帶有ADD
子句的ALTER TABLE
,該子句用於向表中新增一個或多個列。
ALTER TABLE table_name
ADD new_colum data_type column_constraint [AFTER existing_column];
要向表中新增一個或多個列,需要執行以下步驟:
ALTER TABLE
子句之後指定要新增table_name
,表示列所在的表。ADD
子句之後。 如果要在表中指定新列的順序,可以使用可選子句AFTER existing_column
。注意,如果省略
AFTER
子句,則將在表的最後一列之後新增新列。
下面來看看如何將一些新列新增到在create table教學中建立的courses
表的範例。
以下語句將一個名稱為credit_hours
的新列新增到courses
表中。
ALTER TABLE courses ADD credit_hours INT NOT NULL;
使用單個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;
MODIFY子句用於更改現有列的某些屬性,例如,NOT NULL
,UNIQUE和資料型別。
以下語句顯示帶有MODIFY
子句的ALTER TABLE
語句的語法。
ALTER TABLE table_name
MODIFY column_definition;
請注意,應該修改沒有資料的表的列的屬性。 因為更改已包含資料的表中列的屬性可能會導致永久性資料丟失。
例如,如果列的資料型別為VARCHAR
,並且將其更改為INT
,則資料庫系統必須將資料從VARCHAR
轉換為INT
。 如果轉換失敗,資料庫系統可能會使用列的預設值,這可能與預期不符。
以下ALTER TABLE MODIFY
語句將fee
列的屬性更改為NOT NULL
。
ALTER TABLE courses
MODIFY fee NUMERIC (10, 2) NOT NULL;
當表的列已過時且未被任何其他資料庫物件(如觸發器,檢視,儲存過程和儲存過程)使用時,需要將其從表中刪除。
要刪除一個或多個列,請使用以下語法:
ALTER TABLE table_name
DROP column_name,
DROP colum_name,
...
例如,要刪除courses
表中的fee
列,請使用以下語句。
ALTER TABLE courses DROP COLUMN fee;
若要同時刪除多個列,請使用以逗號(,
)分隔的多個DROP COLUMN
子句。
例如,以下語句刪除courses
表中的max_limit
和credit_hours
。
ALTER TABLE courses
DROP COLUMN max_limit,
DROP COLUMN credit_hours;
在本教學中,我們逐步學習了如何使用SQL ALTER TABLE
語句在表中新增,修改和刪除一個或多個列。