在本教程中,您將了解並使用MySQL ALTER TABLE
語句來更改現有表結構(如添加或刪除列,更改列屬性等)。
MySQL ALTER TABLE語句簡介
可以使用ALTER TABLE
語句來更改現有表的結構。 ALTER TABLE
語句可用來添加列,刪除列,更改列的數據類型,添加主鍵,重命名表等等。 以下說明了ALTER TABLE
語句語法:
ALTER TABLE table_name action1[,action2,…]
要更改現有表的結構:
- 首先,在
ALTER TABLE
子句之后指定要更改的表名稱。 - 其次,列出一組要應用於該表的操作。操作可以是添加新列,添加主鍵,重命名表等任何操作。
ALTER TABLE
語句允許在單個ALTER TABLE
語句中應用多個操作,每個操作由逗號(,
)分隔。
讓我們創建一個用於練習ALTER TABLE
語句的新表。
我們將在示例數據庫(yiibaidb)中創建一個名為tasks
的新表。 以下是創建tasks
表的腳本。
DROP TABLE IF EXISTS tasks; CREATE TABLE tasks ( task_id INT NOT NULL, subject VARCHAR(45) NULL, start_date DATE NULL, end_date DATE NULL, description VARCHAR(200) NULL, PRIMARY KEY (task_id), UNIQUE INDEX task_id_unique (task_id ASC) );
使用MySQL ALTER TABLE語句更改列
使用MySQL ALTER TABLE語句來設置列的自動遞增屬性
假設您希望在任務表中插入新行時,task_id
列的值會自動增加1
。那么可以使用ALTER TABLE
語句將task_id
列的屬性設置為AUTO_INCREMENT
,如下所示:
ALTER TABLE tasks CHANGE COLUMN task_id task_id INT(11) NOT NULL AUTO_INCREMENT;
可以通過在tasks
表中插入一些行數據來驗證更改。
INSERT INTO tasks(subject, start_date, end_date, description) VALUES('Learn MySQL ALTER TABLE', Now(), Now(), 'Practicing MySQL ALTER TABLE statement'); INSERT INTO tasks(subject, start_date, end_date, description) VALUES('Learn MySQL CREATE TABLE', Now(), Now(), 'Practicing MySQL CREATE TABLE statement');
您可以查詢數據以查看每次插入新行時task_id
列的值是否增加1
:
SELECT task_id, description FROM tasks;
使用MySQL ALTER TABLE語句將新的列添加到表中
由於新的業務需求,需要添加一個名為complete
的新列,以便在任務表中存儲每個任務的完成百分比。 在這種情況下,您可以使用ALTER TABLE
將新列添加到tasks
表中,如下所示:
ALTER TABLE tasks ADD COLUMN complete DECIMAL(2,1) NULL AFTER description;
使用MySQL ALTER TABLE從表中刪除列
假設您不想將任務的描述存儲在tasks
表中了,並且必須將其刪除。 以下語句允許您刪除tasks
表的description
列:
ALTER TABLE tasks DROP COLUMN description;
使用MySQL ALTER TABLE語句重命名表
可以使用ALTER TABLE
語句重命名表。請注意,在重命名表之前,應該認真考慮以了解更改是否影響數據庫和應用程序層,不要因為重命名表之后,應用程序因未找到數據庫表而出錯。
以下語句將tasks
表重命名為work_items
表:
ALTER TABLE tasks RENAME TO work_items;
在本教程中,您學習了如何使用MySQL ALTER TABLE
語句來更改現有的表結構並重命名表。