首页/数据/SQL 速查/加列:位置控制与成本差异
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条
变更与事务52 条
性能与执行计划72 条

加列:位置控制与成本差异

加列的写法与成本:MySQL 支持 FIRST/AFTER 指定位置;PostgreSQL 只能加在末尾(列顺序不可变)。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
ALTER TABLE users ADD COLUMN nickname VARCHAR(50) NULL AFTER name;

PostgreSQL

PostgreSQL
ALTER TABLE users ADD COLUMN nickname varchar(50);
-- 列顺序固定为创建顺序;展示顺序交给查询列清单
位置MySQL 可用 FIRST/AFTER;PG 只能追加到末尾
成本两者加“可空或带常量默认值”的列都可以是轻量操作(PG 11+ 支持快速默认值)
注意SELECT * 的列顺序变化会影响下游解析(如导出脚本按位置取值)

易错点

  • MySQL 用 AFTER 把列插到中间会触发表重建(代价高于追加到末尾),大表慎用
  • 依赖 SELECT * 的下游脚本在加列后列位置变化,解析错位:生产查询显式列名

数据来源与参考

  • MySQL 8.0 Reference Manual · ALTER TABLE
  • PostgreSQL Documentation · ALTER TABLE
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌