Modifying database schemas is a routine task, but the exact syntax to alter structural properties varies heavily across database versions. If you are trying to rename a column in MySQL, using the wrong command can lead to syntax errors or accidental data loss.
How you rename a column depends entirely on whether your environment runs modern MySQL 8.0+ engines or legacy MySQL 5.7 configurations.
Here is the exact syntax and production-ready code blocks to rename your database columns safely.
The Modern Way: MySQL 8.0+ (RENAME COLUMN)
If you are running MySQL 8.0 or newer, the development team introduced a native, simplified syntax. You no longer need to re-specify the entire data type definition just to change the column name.
SQL
ALTER TABLE table_name
RENAME COLUMN old_column_name TO new_column_name
Example: To change a column named user_pass to password inside a table called users:
SQL
ALTER TABLE users
RENAME COLUMN user_pass TO password;
The Legacy Way: MySQL 5.7 and Older (CHANGE)
In older versions of MySQL, the RENAME COLUMN statement does not exist. Attempting to use it triggers a generic syntax error. Instead, you must use the CHANGE clause.
Crucially, you must explicitly re-state the complete data type definition along with any attributes (like NOT NULL or DEFAULT). Failing to include the data type will break the query.
SQL
ALTER TABLE table_name
CHANGE old_column_name new_column_name DATA_TYPE CHARACTER_SET_ATTRIBUTES;
Example: To rename user_pass to password where the column data type is a VARCHAR(255) that cannot be null:
SQL
ALTER TABLE users
CHANGE user_pass password VARCHAR(255) NOT NULL;
Warning: Be extremely careful when using CHANGE. If you accidentally specify a different data type definition during the rename step, MySQL will attempt to convert the underlying data, which can lead to truncated strings or corrupted records.
Yes, in modern MySQL 8.0, you can chain operations within a single statement by separating them with commas. For example: ALTER TABLE users RENAME COLUMN old_a TO new_a, RENAME COLUMN old_b TO new_b;.
This typically happens if you try to use the native RENAME COLUMN syntax on a server running an older version like MySQL 5.7. For legacy setups, you must use the ALTER TABLE CHANGE statement instead