MySQL ALTER TABLE 常用操作:增删改字段、索引与主键

拾光
拾光
发布时间:2026-10-13| 6人浏览过
原创

在 MySQL 数据库管理中,ALTER TABLE 是修改现有表结构的核心命令。本文将详细解析如何使用该语句进行字段的增删改、表的更名,以及主键和各类索引的管理,提供可直接复制使用的代码示例。

1. 删除列

若要移除表中不再需要的字段,使用 DROP 子句。执行后该列及其所有数据将被永久删除,请确保已备份重要数据。

ALTER TABLE 表名 DROP 列名称;

2. 增加列

向表中添加新字段时,需指定列名、数据类型及约束条件(如非空 NOT NULL)。若为已有数据的表添加 NOT NULL 列,必须提供默认值 DEFAULT,否则语句将报错。

ALTER TABLE 表名 ADD 列名称 INT NOT NULL COMMENT '注释说明';

3. 修改列的类型或重命名

使用 CHANGE 关键字可以同时修改列的名称和数据类型。如果仅改变类型而不改变名字,新列名应与旧列名相同;如果既要改名也要改类型,则分别指定新旧列名。此操作会重新定义该列的定义。

-- 修改类型或同时重命名
ALTER TABLE 表名 CHANGE 原列名称 新列名称 BIGINT NOT NULL COMMENT '注释说明';

4. 重命名表

通过 RENAME 子句可以直接更改表的名称,不影响表中的数据结构和内容。

ALTER TABLE 原表名 RENAME 新表名;

5. 管理主键

主键用于唯一标识表中的每一行记录。以下操作展示了如何添加和删除主键:

第1步:添加主键

为主表添加单一或多列联合主键,使用 ADD CONSTRAINT 或直接在括号中指定列。风险提醒:添加主键前请确保相关列数据唯一且非空,否则会导致失败。

-- 添加带约束名的主键
ALTER TABLE sj_resource_charges ADD CONSTRAINT PK_SJ_RESOURCE_CHARGES PRIMARY KEY (resid, resfromid);

-- 或者直接添加主键(无约束名)
ALTER TABLE 表名 ADD PRIMARY KEY (列名);

第2步:删除主键

删除现有主键,通常需要先确认是否有关联的外键引用,若有需先解除外键约束。

ALTER TABLE 表名 DROP PRIMARY KEY;

6. 管理索引

索引可加速查询,但会降低写入速度。以下是常见索引的创建与删除方法:

第1步:添加普通索引

创建非唯一性索引,允许列中存在重复值。

ALTER TABLE 表名 ADD INDEX 索引名称 (列名);

第2步:添加唯一索引

创建唯一性索引,确保列中所有值都是唯一的,但允许有空值(具体行为视存储引擎而定)。

ALTER TABLE 表名 ADD UNIQUE 索引名称 (列名);

第3步:删除索引

移除不再需要的索引以优化写入性能。注意不同 MySQL 版本中删除索引的语法可能略有差异,推荐使用 DROP INDEX 或在 ALTER TABLE 中使用 DROP INDEX。

ALTER TABLE 表名 DROP INDEX 索引名称;

以上就是 MySQL ALTER TABLE 常用操作的详细内容,更多关于 MySQL 数据库表结构优化的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。