MySQL ALTER命令


MySQL ALTER命令用于修改已经存在的数据库表结构。一些常见的用例是添加、删除、修改列信息,更改表名称或表类型,创建或删除索引等。下面详细介绍MySQL ALTER命令的各个方面。

ALTER TABLE语法

ALTER TABLE table_name
ADD COLUMN column_name column_definition,
DROP COLUMN column_name,
MODIFY COLUMN column_name column_definition,
RENAME TO new_table_name,
ADD INDEX index_name (column1, column2, ...),
DROP PRIMARY KEY,
ADD PRIMARY KEY (column1, column2, ...),
DROP INDEX index_name;

其中,ADD COLUMN用于添加新列,DROP COLUMN用于删除列,MODIFY COLUMN用于修改列信息,RENAME TO用于重命名表,ADD INDEX用于创建索引,DROP PRIMARY KEY用于删除主键,ADD PRIMARY KEY用于创建主键,DROP INDEX用于删除索引。

ALTER TABLE ADD COLUMN语句

ALTER TABLE table_name
ADD COLUMN column_name column_definition;

其中,column_name是需要添加的列名,column_definition是列的定义,包括数据类型、约束、默认值等等。例如,下面是添加一个字符串类型的列的例子:

ALTER TABLE users
ADD COLUMN email VARCHAR(255) NOT NULL;

ALTER TABLE DROP COLUMN语句

ALTER TABLE table_name
DROP COLUMN column_name;

其中,column_name是需要删除的列名。例如,下面是删除一个名为address的列的例子:

ALTER TABLE users
DROP COLUMN address;

ALTER TABLE MODIFY COLUMN语句

ALTER TABLE table_name
MODIFY COLUMN column_name column_definition;

其中,column_name是需要修改的列名,column_definition是列的新定义,包括数据类型、约束、默认值等等。例如,下面是修改一个名为age的列的数据类型的例子:

ALTER TABLE users
MODIFY COLUMN age INT UNSIGNED;

ALTER TABLE RENAME TO语句

ALTER TABLE table_name
RENAME TO new_table_name;

其中,new_table_name是新的表名。例如,下面是将名为users的表重命名为customers的例子:

ALTER TABLE users
RENAME TO customers;

ALTER TABLE ADD INDEX语句

ALTER TABLE table_name
ADD INDEX index_name (column1, column2, ...);

其中,index_name是索引名,column1, column2, ...是需要创建索引的列名,多列之间用逗号分隔。例如,下面是将users表的last_name列创建索引的例子:

ALTER TABLE users
ADD INDEX last_name_index (last_name);

ALTER TABLE DROP PRIMARY KEY语句

ALTER TABLE table_name
DROP PRIMARY KEY;

该语句用于删除表的主键。例如,下面是删除users表的主键的例子:

ALTER TABLE users
DROP PRIMARY KEY;

ALTER TABLE ADD PRIMARY KEY语句

ALTER TABLE table_name
ADD PRIMARY KEY (column1, column2, ...);

该语句用于创建表的主键,column1, column2, ...是主键的列名,多列之间用逗号分隔。例如,下面是将users表的id列创建为主键的例子:

ALTER TABLE users
ADD PRIMARY KEY (id);

ALTER TABLE DROP INDEX语句

ALTER TABLE table_name
DROP INDEX index_name;

该语句用于删除表的索引,index_name是需要删除的索引名。例如,下面是删除users表的last_name_index索引的例子:

ALTER TABLE users
DROP INDEX last_name_index;

总结

MySQL ALTER命令是修改已经存在的数据库表结构的标准命令,包括添加、删除、修改列信息,更改表名称或表类型,创建或删除索引等。掌握ALTER命令是数据库管理人员的基本技能之一,可以帮助进行所需要的表结构调整。