Skip to main content
Documents
Share
LinkedIn
Facebook
Twitter
Copy
ClausesStatementsKeywordsExpressionsFunctions

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.