SQL Alter Table
本教程介紹如何使用SQL ALTER TABLE
更改數據庫中現有表的結構。
創建新表後,您可能希望更改其結構,因爲業務需求會發生變化。 要修改表的結構,請使用ALTER TABLE
語句。 ALTER TABLE
語句用於對現有表執行以下操作:
- 使用
ADD
子句添加新列。 - 使用
MODIFY
子句修改列的屬性,例如:約束,默認值等。 - 使用
DROP
子句刪除列。
我們將在以下部分詳細學習每個操作。
1. SQL ALTER TABLE ADD列
以下語句說明了帶有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;
2. SQL ALTER TABLE MODIFY列
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;
3. SQL ALTER TABLE DROP列
當表的列已過時且未被任何其他數據庫對象(如觸發器,視圖,存儲過程和存儲過程)使用時,需要將其從表中刪除。
要刪除一個或多個列,請使用以下語法:
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
語句在表中添加,修改和刪除一個或多個列。