Adding a new column is one of the most common operations in database migrations. It seems simple, but every choice — data type, default values, nullability, indexing — has long-term impact. A column is not just a slot for data; it’s part of the schema contract between your application and its store.
First, define the purpose. Treat every new column as a statement of intent. Is it storing computed data, state, or metadata? Lock down the reason before you touch the schema.
Next, choose the data type with precision. Use INT only when you need integer math. Use VARCHAR when you expect variable-length text. With modern databases, there is no excuse for sloppy type selection. It will cost you later in performance, storage, and migrations.
Defaults matter. If the column should always have a value, set a default at the DDL level. If null is allowed, know how your application will handle it. An unknown value must not break queries or logic.