MySQL修改表結構
在本教程中,您將瞭解並使用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
語句來更改現有的表結構並重命名錶。