SQLALTERTABLE操作示例_SQL修改表结构方法

ALTER TABLE 是用于修改表结构的核心 SQL 语句,支持增删改列、调类型、重命名、删约束等操作;各数据库语法略有差异,生产环境需谨慎执行并提前测试。

ALTER TABLE 是 SQL 中用于修改已有表结构的核心语句,支持添加、删除、修改列,更改数据类型,添加或删除约束等操作。不同数据库(如 MySQL、PostgreSQL、SQL Server)语法略有差异,但基础用法高度一致。

添加新列

使用 ADD COLUMN(MySQL/PostgreSQL)或简写 ADD(SQL Server)向表中插入一列:

  • MySQL / PostgreSQL:ALTER TABLE users ADD COLUMN phone VARCHAR(20);
  • SQL Server:ALTER TABLE users ADD phone VARCHAR(20);
  • 若需指定位置(仅 MySQL 支持):ADD COLUMN email VARCHAR(100) AFTER name;

修改列定义

更改列的数据类型、长度或是否允许 NULL,注意可能因数据不兼容而失败:

  • MySQL:ALTER TABLE users MODIFY COLUMN age TINYINT UNSIGNED;CHANGE COLUMN old_name new_name VARCHAR(50);
  • PostgreSQL:ALTER TABLE users ALTER COLUMN status TYPE VARCHAR(20);
  • SQL Server:ALTER TABLE users ALTER COLUMN status NVARCHAR(20);

重命名列或表

列重命名不是标准 SQL,各数据库实现不同:

  • MySQL:ALTER TABLE users CHANGE COLUMN user_name username VARCHAR(50);
  • PostgreSQL:ALTER TABLE users RENAME COLUMN user_name TO username;
  • SQL Server:EXEC sp_rename 'users.user_name', 'username', 'COLUMN';
  • 重命名整张表:ALTER TABLE users RENAME TO members;(PostgreSQL),MySQL 用 RENAME TABLE users TO members;

删除列与约束

删除列会同时清除该列所有数据,不可逆,建议先备份:

  • MySQL / PostgreSQL:ALTER TABLE users DROP COLUMN temp_flag;
  • SQL Server:ALTER TABLE users DROP COLUMN temp_flag;
  • 删除主键:ALTER TABLE users DROP PRIMARY KEY;(MySQL),PostgreSQL 需指定约束名:DROP CONSTRAINT users_pkey;
  • 删除外键约束前,先查约束名(如 SELECT constraint_name FROM information_schema.key_column_usage WHERE table_name='users';

基本上就这些。实际操作前务必在测试环境验证,生产库执行 ALTER TABLE 可能锁表或耗时较长,尤其大表加索引或改类型时需谨慎安排窗口期。