A new column changes the shape of your data. In SQL, it’s the core way to evolve a schema without rewriting everything. Whether you run PostgreSQL, MySQL, or SQLite, the command is simple:
ALTER TABLE users ADD COLUMN last_login TIMESTAMP;
The syntax is easy. The impact is not. Adding a new column in production means thinking about existing queries, indexes, and migrations. It means asking: Will this block writes? Will a full table rewrite lock my service at peak load?
On modern systems, adding a column without a default can be near-instant. Adding a default with NOT NULL can force a table rewrite. That’s why many teams create the column as nullable first, backfill in batches, then set constraints. This avoids downtime and reduces I/O spikes.
Indexes matter. A new column that will be filtered or sorted should have an index, but only after the data is in place. Empty indexes cost little, but creating them during a hot path migration is risk.