Adding a new column to a live database should be simple, but in production, nothing is. Schema changes carry risk. The database may lock. Queries might break. Migrations can stall under load. You have to move fast without losing data or uptime.
The safest way to add a new column depends on the database engine, table size, constraints, and the code paths that touch the table. For small tables, a direct ALTER TABLE ADD COLUMN may be fine. For large, high-traffic tables, plan for a zero-downtime migration. This can mean creating the new column as nullable, deploying code that writes to both the old and new fields, backfilling data in small batches, and then switching reads to the new column once the backfill is complete.
When adding a new column with a default value, be aware that some engines rewrite the entire table, which can lock writes and cause minutes or hours of downtime. MySQL before 8.0.12 and older Postgres versions are particularly prone to this. In modern MySQL with INSTANT DDL or Postgres with metadata-only column adds, defaults can be applied without a full rewrite, but you still need to confirm behavior in staging.