在本教學中,您將了解並使用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語句來設定列的自動遞增屬性
假設您希望在任務表中插入新行時,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;
可以使用ALTER TABLE
語句重新命名表。請注意,在重新命名表之前,應該認真考慮以了解更改是否影響資料庫和應用程式層,不要因為重新命名表之後,應用程式因未找到資料庫表而出錯。
以下語句將tasks
表重新命名為work_items
表:
ALTER TABLE tasks
RENAME TO work_items;
在本教學中,您學習了如何使用MySQL ALTER TABLE
語句來更改現有的表結構並重新命名表。