了解并使用MySQL ALTER TABLE
语句来更改现有表结构(如添加或删除列,更改列属性等)。
MySQL ALTER TABLE语句简介
可以使用ALTER TABLE
语句来更改现有表的结构。 ALTER TABLE
语句可用来添加列,删除列,更改列的数据类型,添加主键,重命名表等等。 以下说明了ALTER TABLE
语句语法:
ALTER TABLE table_name action1[,action2,…]
SQL
要更改现有表的结构:
- 首先,在
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)
);
SQL
使用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;
SQL
可以通过在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');
SQL
您可以查询数据以查看每次插入新行时task_id
列的值是否增加1
:
SELECT
task_id, description
FROM
tasks;
SQL
使用MySQL ALTER TABLE语句将新的列添加到表中
由于新的业务需求,需要添加一个名为complete
的新列,以便在任务表中存储每个任务的完成百分比。 在这种情况下,您可以使用ALTER TABLE
将新列添加到tasks
表中,如下所示:
ALTER TABLE tasks
ADD COLUMN complete DECIMAL(2,1) NULL
AFTER description;
SQL
使用MySQL ALTER TABLE从表中删除列
假设您不想将任务的描述存储在tasks
表中了,并且必须将其删除。 以下语句允许您删除tasks
表的description
列:
ALTER TABLE tasks
DROP COLUMN description;
SQL
使用MySQL ALTER TABLE语句重命名表
可以使用ALTER TABLE
语句重命名表。请注意,在重命名表之前,应该认真考虑以了解更改是否影响数据库和应用程序层,不要因为重命名表之后,应用程序因未找到数据库表而出错。
以下语句将tasks
表重命名为work_items
表:
ALTER TABLE tasks
RENAME TO work_items;
SQL
在本教程中,您学习了如何使用MySQL ALTER TABLE
语句来更改现有的表结构并重命名表。