修改表(ALTER TABLE)
更新时间 2025-11-12 15:25:06
最近更新时间: 2025-11-12 15:25:06
DRDS支持直接连接DBProxy执行DDL语句,本文为您介绍修改数据表的DDL语句。
注意
仅V5.1.20.0.13及以后版本的实例,支持使用本文介绍的DDL语句。
语法
ALTER TABLE tbl_name
[alter_option [, alter_option] ...]
alter_option: {
table_options
| ADD COLUMN col_name column_definition [FIRST | AFTER col_name]
| ADD COLUMN (col_name column_definition,...)
| ADD PRIMARY KEY(col_name,...)
| ADD {INDEX | [UNIQUE] KEY} [index_name] (key_part,...)
| CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| DROP {INDEX | KEY} index_name
| DROP PRIMARY KEY
| MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
}
column_definition:
data_type [NOT NULL | NULL] [DEFAULT default_value] [UNIQUE [KEY]] [[PRIMARY] KEY] [COMMENT 'string']
key_part:
col_name [ASC | DESC]
table_options:
table_option [[,] table_option] ...
table_option: {
AUTO_INCREMENT = value
| CHARACTER SET = charset_name
| COLLATE = collation_name
| COMMENT [=] 'string'
| ENGINE = engine_name
}参数说明
tbl_name:待修改的数据表名称alter_option:表修改选项,可同时指定多个修改操作ADD COLUMN:添加新列col_name:新列名称column_definition:列定义(数据类型、约束等)FIRST | AFTER col_name:指定列位置
ADD PRIMARY KEY:添加主键ADD {INDEX | [UNIQUE] KEY}:添加索引或唯一键index_name:索引名称(可选)key_part:索引列,可指定排序方式(ASC升序/DESC降序)
CHANGE COLUMN:修改列定义(可重命名)old_col_name:原列名new_col_name:新列名
DROP COLUMN:删除列DROP {INDEX | KEY}:删除索引DROP PRIMARY KEY:删除主键MODIFY COLUMN:修改列定义(不重命名)
table_options:表属性选项AUTO_INCREMENT:设置自增起始值CHARACTER SET:设置字符集COLLATE:设置排序规则COMMENT:设置表注释ENGINE:设置存储引擎
语法示例
示例1:添加新列
-- 在users表末尾添加age列
ALTER TABLE users
ADD COLUMN age INT NOT NULL DEFAULT 0;
-- 在name列后添加email列
ALTER TABLE users
ADD COLUMN email VARCHAR(100) AFTER name;
-- 一次性添加多个列
ALTER TABLE users
ADD COLUMN (phone VARCHAR(20), address TEXT);示例2:修改列定义
-- 修改username列定义(不重命名)
ALTER TABLE users
MODIFY COLUMN username VARCHAR(50) NOT NULL UNIQUE;
-- 重命名并修改列
ALTER TABLE users
CHANGE COLUMN old_name new_name VARCHAR(100) NOT NULL FIRST;示例3:添加或删除索引
-- 添加普通索引
ALTER TABLE users
ADD INDEX idx_email (email);
-- 添加唯一索引
ALTER TABLE users
ADD UNIQUE KEY uk_username (username);
-- 添加复合索引
ALTER TABLE users
ADD INDEX idx_name_status (last_name, status DESC);
-- 删除索引
ALTER TABLE users
DROP INDEX idx_email;示例4:添加或删除主键
-- 添加主键
ALTER TABLE users
ADD PRIMARY KEY (id);
-- 删除主键
ALTER TABLE users
DROP PRIMARY KEY;示例5:删除列
-- 删除单个列
ALTER TABLE users
DROP COLUMN temporary_field;
-- 删除多个列
ALTER TABLE users
DROP COLUMN old_field1,
DROP COLUMN old_field2;示例6:修改表属性
-- 修改表注释和存储引擎
ALTER TABLE users
COMMENT = '用户信息表',
ENGINE = InnoDB;
-- 设置自增起始值
ALTER TABLE users
AUTO_INCREMENT = 1000;