在本教程中,您將了解并使用MySQL ALTER TABLE語(yǔ)句來(lái)更改現(xiàn)有表結(jié)構(gòu)(如添加或刪除列,更改列屬性等)。
可以使用ALTER TABLE語(yǔ)句來(lái)更改現(xiàn)有表的結(jié)構(gòu)。 ALTER TABLE語(yǔ)句可用來(lái)添加列,刪除列,更改列的數(shù)據(jù)類(lèi)型,添加主鍵,重命名表等等。 以下說(shuō)明了ALTER TABLE語(yǔ)句語(yǔ)法:
ALTER TABLE table_name action1[,action2,…]
要更改現(xiàn)有表的結(jié)構(gòu):
ALTER TABLE子句之后指定要更改的表名稱(chēng)。ALTER TABLE語(yǔ)句允許在單個(gè)ALTER TABLE語(yǔ)句中應(yīng)用多個(gè)操作,每個(gè)操作由逗號(hào)(,)分隔。讓我們創(chuàng)建一個(gè)用于練習(xí)ALTER TABLE語(yǔ)句的新表。
我們將在示例數(shù)據(jù)庫(kù)(yiibaidb)中創(chuàng)建一個(gè)名為tasks的新表。 以下是創(chuàng)建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語(yǔ)句來(lái)設(shè)置列的自動(dòng)遞增屬性
假設(shè)您希望在任務(wù)表中插入新行時(shí),task_id列的值會(huì)自動(dòng)增加1。那么可以使用ALTER TABLE語(yǔ)句將task_id列的屬性設(shè)置為AUTO_INCREMENT,如下所示:
ALTER TABLE tasks
CHANGE COLUMN task_id task_id INT(11) NOT NULL AUTO_INCREMENT;
可以通過(guò)在tasks表中插入一些行數(shù)據(jù)來(lái)驗(yàn)證更改。
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');
您可以查詢(xún)數(shù)據(jù)以查看每次插入新行時(shí)task_id列的值是否增加1:
SELECT
task_id, description
FROM
tasks;
使用MySQL ALTER TABLE語(yǔ)句將新的列添加到表中
由于新的業(yè)務(wù)需求,需要添加一個(gè)名為complete的新列,以便在任務(wù)表中存儲(chǔ)每個(gè)任務(wù)的完成百分比。 在這種情況下,您可以使用ALTER TABLE將新列添加到tasks表中,如下所示:
ALTER TABLE tasks
ADD COLUMN complete DECIMAL(2,1) NULL
AFTER description;
使用MySQL ALTER TABLE從表中刪除列
假設(shè)您不想將任務(wù)的描述存儲(chǔ)在tasks表中了,并且必須將其刪除。 以下語(yǔ)句允許您刪除tasks表的description列:
ALTER TABLE tasks
DROP COLUMN description;
可以使用ALTER TABLE語(yǔ)句重命名表。請(qǐng)注意,在重命名表之前,應(yīng)該認(rèn)真考慮以了解更改是否影響數(shù)據(jù)庫(kù)和應(yīng)用程序?qū)?,不要因?yàn)橹孛碇?,?yīng)用程序因未找到數(shù)據(jù)庫(kù)表而出錯(cuò)。
以下語(yǔ)句將tasks表重命名為work_items表:
ALTER TABLE tasks
RENAME TO work_items;
在本教程中,您學(xué)習(xí)了如何使用MySQL ALTER TABLE語(yǔ)句來(lái)更改現(xiàn)有的表結(jié)構(gòu)并重命名表。