Mysql-ALTER详解

以下是 MySQL 中 ALTER 语句的详细整理,用于修改数据库表的结构(DDL 操作),涵盖常见场景和语法示例:

一、修改表名

ALTER TABLE 旧表名 RENAME TO 新表名;

-- 示例:
ALTER TABLE users RENAME TO customers;

二、修改表结构

1. 添加列

ALTER TABLE 表名 
ADD COLUMN 列名 数据类型 [约束] [FIRST|AFTER 某列];

-- 示例:添加 `email` 列(默认在最后)
ALTER TABLE users 
ADD COLUMN email VARCHAR(100) NOT NULL;

-- 示例:添加 `age` 列到 `name` 列之后
ALTER TABLE users 
ADD COLUMN age INT AFTER name;

2. 删除列

ALTER TABLE 表名 
DROP COLUMN 列名;

-- 示例:
ALTER TABLE users 
DROP COLUMN age;

3. 修改列定义

  • 修改数据类型或约束(注意数据兼容性):
  • 重命名列(MySQL 8.0+ 支持 RENAME COLUMN):(旧版本需使用 CHANGE 语法):

4. 调整列顺序

ALTER TABLE 表名 
MODIFY COLUMN 列名 数据类型 [FIRST|AFTER 某列];

-- 示例:将 `email` 列移到第一列
ALTER TABLE users 
MODIFY COLUMN email VARCHAR(100) FIRST;

-- 示例:将 `email` 列移到 `fullname` 之后
ALTER TABLE users 
MODIFY COLUMN email VARCHAR(100) AFTER fullname;

三、索引操作

1. 添加索引

-- 添加普通索引
ALTER TABLE 表名 
ADD INDEX 索引名 (列名);

-- 添加唯一索引
ALTER TABLE 表名 
ADD UNIQUE 索引名 (列名);

-- 示例:
ALTER TABLE users 
ADD INDEX idx_email (email);

2. 删除索引

ALTER TABLE 表名 
DROP INDEX 索引名;

-- 示例:
ALTER TABLE users 
DROP INDEX idx_email;

3. 主键操作

  • 添加主键:
  • 删除主键:

四、表选项修改

1. 修改存储引擎

ALTER TABLE 表名 
ENGINE = 新引擎;

-- 示例:改为 InnoDB
ALTER TABLE users 
ENGINE = InnoDB;

2. 修改字符集

ALTER TABLE 表名 
CHARACTER SET 字符集名 
COLLATE 排序规则;

-- 示例:
ALTER TABLE users 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci;

3. 修改自增起始值

ALTER TABLE 表名 
AUTO_INCREMENT = 新值;

-- 示例:
ALTER TABLE users 
AUTO_INCREMENT = 1000;

五、分区操作(高级)

-- 添加分区
ALTER TABLE 表名 
ADD PARTITION (PARTITION 分区名 VALUES IN (值列表));

-- 删除分区
ALTER TABLE 表名 
DROP PARTITION 分区名;

关键注意事项

  1. 备份数据:执行 ALTER 前建议备份表结构及数据。
  2. 锁表风险:大表修改可能锁表,影响业务(可考虑 pt-online-schema-change 工具)。
  3. 兼容性检查:修改列类型时需确保数据兼容(如字符串转整数可能失败)。
  4. 外键约束:修改主键或关联列时需处理外键依赖。
  5. 测试环境验证:生产环境操作前先在测试环境验证语法和效果。

掌握 ALTER 语句的用法,可以灵活应对表结构调整的需求,但需谨慎操作以避免数据丢失或服务中断!

进阶高级测试工程师 文章被收录于专栏

《高级软件测试工程师》专栏旨在为测试领域的从业者提供深入的知识和实践指导,帮助大家从基础的测试技能迈向高级测试专家的行列。 在本专栏中,主要涵盖的内容: 1. 如何设计和实施高效的测试策略; 2. 掌握自动化测试、性能测试和安全测试的核心技术; 3. 深入理解测试驱动开发(TDD)和行为驱动开发(BDD)的实践方法; 4. 测试团队的管理和协作能力。 ——For.Heart

全部评论

相关推荐

06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务