Adding a new column is more than appending a field. It changes the contract between code and data. Done wrong, it can lock tables, drop production queries, or corrupt a hot path. Done right, it evolves your system without a pause.
In PostgreSQL, ALTER TABLE ADD COLUMN is the direct move. By default, it’s fast if the column is nullable without a default. Adding a NOT NULL with a default on a large table rewrites all rows. That can block. Avoid this by adding the column as nullable, backfilling in batches, then altering to NOT NULL. In MySQL, adding a column can trigger a full table copy for some engine types. Always check the execution plan before running the migration.
New columns affect indexes, foreign keys, replication lag, and ORM models. Update your migration scripts, version your schema, and synchronize with continuous deployment pipelines. If you store JSON, adding a column might be a better choice than nesting more into a single property. Columns are explicit, indexed, and enforce type discipline.