ALTER TABLE语句是MySQL中用于修改现有表结构的重要命令,它允许您在不删除重建表的情况下调整表的各种属性。以下是修改数据表的全面指南:
基本语法结构
ALTER TABLE 表名 [修改操作];
主要修改操作类型
1. 修改表名
ALTER TABLE 旧表名 RENAME TO 新表名;
示例:
ALTER TABLE student RENAME TO tb_students_info;
2. 修改字符集和校对规则
ALTER TABLE 表名 CHARACTER SET 字符集名 COLLATE 校对规则名;
示例:
ALTER TABLE tb_students_info CHARACTER SET gb2312 COLLATE gb2312_chinese_ci;
3. 添加列
ALTER TABLE 表名 ADD COLUMN 列名 数据类型 [约束条件] [FIRST|AFTER 现有列];
示例:
ALTER TABLE employees ADD COLUMN birth_date DATE AFTER last_name;
4. 删除列
ALTER TABLE 表名 DROP COLUMN 列名;
示例:
ALTER TABLE employees DROP COLUMN middle_name;
5. 修改列名和类型
ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 新数据类型;
示例:
ALTER TABLE employees CHANGE COLUMN dept_id department_id INT(11);
6. 修改列数据类型
ALTER TABLE 表名 MODIFY COLUMN 列名 新数据类型;
示例:
ALTER TABLE employees MODIFY COLUMN salary DECIMAL(12,2);
7. 修改列默认值
ALTER TABLE 表名 ALTER COLUMN 列名 SET DEFAULT 默认值;
ALTER TABLE 表名 ALTER COLUMN 列名 DROP DEFAULT;
示例:
ALTER TABLE employees ALTER COLUMN hire_date SET DEFAULT CURRENT_DATE;
8. 添加约束
添加主键
ALTER TABLE 表名 ADD PRIMARY KEY (列名);
添加外键
ALTER TABLE 表名 ADD CONSTRAINT 约束名 FOREIGN KEY (列名) REFERENCES 参考表(参考列);
示例:
ALTER TABLE employees ADD CONSTRAINT fk_dept FOREIGN KEY (department_id) REFERENCES departments(dept_id);
9. 删除约束
删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;
删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 约束名;
10. 修改表存储引擎
ALTER TABLE 表名 ENGINE = 存储引擎名;
示例:
ALTER TABLE employees ENGINE = InnoDB;
复合修改操作
可以一次执行多个修改操作,用逗号分隔:
ALTER TABLE employees ADD COLUMN middle_name VARCHAR(50) AFTER first_name, MODIFY COLUMN last_name VARCHAR(60) NOT NULL, DROP COLUMN nickname;
注意事项
1. 数据安全:修改表结构前建议先备份数据
2. 性能影响:大表的ALTER操作可能耗时较长,考虑在低峰期执行
3. 数据类型兼容性:修改数据类型时要确保现有数据能转换为新类型
4. 外键约束:修改涉及外键的列时需特别小心
5. 字符集转换:修改字符集可能导致数据存储方式变化
查看修改结果
DESCRIBE 表名; -- 查看表结构
SHOW CREATE TABLE 表名; -- 查看完整建表语句
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程