外观
修改表结构
修改表结构指增加或者删除字段、修改字段名或字段类型以及修改表名等,可以使用ALTER TABLE语句实现,语法如下:
ALTER [IGNORE] TABLE 数据表名 alter_spec[,alter_spec]...| table_options;其中,[IGNORE]是可选项,表示如果出现重复的行,则只执行一行,其他的行将被删除。
alter_spec子句表示定义要修改的内容,基本语法如下:
ADD [COLUMN] create_difinition [FIRST|AFTER column_name] -- 添加新字段
| ADD INDEX [index_name](index_col_name,...) -- 添加索引名称
| ADD PRIMARY KEY (index_col_name) -- 添加主键名称
| ADD UNIQUE [index_name](index_col_name) -- 添加唯一索引
| ALTER [COLUMN] col_name {SET DEFAULT literal|DROP DEFAULT} -- 修改字段默认值
| CHANGE [COLUMN] old_col_name create_definition -- 修改字段名/类型
| MODIFY [COLUMN] create_definition -- 修改子句定义字段
| DROP [COLUMN] col_name -- 删除某一字段
| DROP PRIMARY KEY -- 删除主键
| DROP INDEX index_name -- 删除某一索引
| RENAME [AS] new_tbl_name -- 更改表名
| COMMENT 'comment' -- 给表添加注释其中,create_definition用于定义列的数据类型和属性,与CREATE TABLE语句中的语法相同。
[FIRST|AFTER column_name] 用于指定位于哪个字段的前面还是后面,使用FIRST关键字时表示位于指定字段的前面;使用AFTER关键字时表示位于哪个字段的后面;column_name表示字段名。
[index_name] 是可选项,用于指定索引名。
{index_col_name}用于指定索引列名。
{SET DEFAULT literal|DROP DEFAULT}子句表示为字段设置或者删除默认值,其中literal参数要设置的默认值。
old_col_name表示指定要修改的字段名。
new_tbl_name表示指定新的表名。
table_options表示指定表的一些特性参数,其中大多数选项涉及的是表数据如何存储以及存储在何处,如ENGINE选项表示定义表的存储引擎。多数情况下,用户不必指定表选项。
添加新字段和修改字段定义
在MySQL的ALTER TABLE中,可使用ADD [COLUMN] create_definition [FIRST|AFTERT column_name]子句来添加新字段;使用MODIFY [COLUMN] create_definition子句修改已定义的字段的定义,下面通过实例演示如何为一个已有表添加新字段,并修改已有字段的定义。
添加新字段并修改已有字段的定义
首先查看已有的字段以及它们的描述。
DESC tb_first;
下面我们新增加一个字段叫做create_time,意为创建时间,并且将name的类型改为varchar(10)。
alter table tb_first add column (create_time datetime default now() not null),modify column name varchar(10);
最后再查看表的描述。
DESC tb_first;
可以看到name的字段类型已经改为长度为10的变长字符串,且新增添了一个字段create_time。
修改表的名称
使用ALTER语句将tb_first名字修改为table_first。
alter table tb_first rename as table_first;