Skip to main content
Documents
Clauses StatementsKeywordsExpressionsFunctionsIndexesPerformance Optimization

MySQL ALTER TABLE Statement

The `ALTER TABLE` statement in MySQL is used to modify an existing table's structure. It allows you to add, delete, or change columns and constraints in a table, making it versatile for database schema management.

Usage

The `ALTER TABLE` statement is employed when you need to change the structure of a table while typically ensuring data retention. It can be used to rename tables, add or drop columns, and modify existing columns.


ALTER TABLE table_name
[ADD | DROP | MODIFY | CHANGE | RENAME TO] [COLUMN column_name] [column_definition];

In this syntax, `ALTER TABLE table_name` specifies the table to be altered. Actions such as `ADD`, `DROP`, and `MODIFY` apply to columns, while `RENAME TO` is used for tables. Note that `CHANGE` is used to rename a column.

Examples

1. Adding a Column


ALTER TABLE employees
ADD COLUMN birthdate DATE;

This example adds a new column `birthdate` of type `DATE` to the `employees` table.

2. Modifying a Column


ALTER TABLE products
MODIFY COLUMN price DECIMAL(10, 2);

Here, the `price` column in the `products` table is modified to have a `DECIMAL` data type with a precision of 10 and a scale of 2.

3. Renaming a Column


ALTER TABLE employees
CHANGE COLUMN old_name new_name VARCHAR(255);

This example renames a column `old_name` to `new_name` with a `VARCHAR(255)` data type in the `employees` table.

4. Renaming a Table


ALTER TABLE orders
RENAME TO customer_orders;

This example renames the `orders` table to `customer_orders`, which can be useful for better table identification.

5. Adding a Primary Key


ALTER TABLE orders
ADD PRIMARY KEY (order_id);

This adds a primary key constraint to the `order_id` column of the `orders` table.

6. Dropping a Foreign Key


ALTER TABLE orders
DROP FOREIGN KEY fk_customer;

This removes the foreign key constraint named `fk_customer` from the `orders` table.

7. Setting a Default Value


ALTER TABLE products
ALTER COLUMN price SET DEFAULT 0.00;

This sets the default value of the `price` column to `0.00` in the `products` table.

Tips and Best Practices

  • Ensure Data Integrity. Always back up your data and test `ALTER TABLE` operations in a non-production environment to safeguard against data loss and ensure execution.
  • Minimize Downtime. Be aware that altering large tables can lock the table for a significant time; plan these changes during off-peak hours. Some operations might rebuild the entire table, affecting performance.
  • Use Descriptive Names. When adding columns, choose clear and descriptive names to maintain clarity in your database schema.
  • Compatibility Considerations. Be mindful of potential issues when altering tables with foreign key constraints, as these can affect related tables.

SQL Upskilling for Beginners

Gain the SQL skills to interact with and query your data.
Start Learning for Free