106 SQL ALTER TABLE
The SQL ALTER TABLE statement is used to modify the structure of an existing table in a database. You can:
- Add, delete, or modify columns in a table.
- Add or drop constraints such as primary keys and foreign keys.
Main usages:
- Add a column:
ALTER TABLE table_name ADD column_name datatype; - Delete a column:
ALTER TABLE table_name DROP COLUMN column_name; - Rename a column: (syntax varies by SQL database system)
-- General SQL ALTER TABLE table_name RENAME COLUMN old_name TO new_name; -- SQL Server EXEC sp_rename 'table_name.old_name', 'new_name', 'COLUMN'; - Change a columnās data type:
-- SQL Server / MS Access ALTER TABLE table_name ALTER COLUMN column_name datatype; -- MySQL / Oracle (pre-10G) ALTER TABLE table_name MODIFY COLUMN column_name datatype;
Examples and explanations show step-by-step how a column can be added, changed, or deleted on a sample table.
- Real-life quiz and interactive exercise are included to reinforce the learning with solutions to add columns using the correct ALTER TABLE syntax.[1]
SQL ALTER TABLE Statement
TheĀ ALTER TABLEĀ statement is used to add, delete, or modify columns in an existing table.
TheĀ ALTER TABLEĀ statement is also used to add and drop various constraints on an existing table.
ALTER TABLE - ADD Column
To add a column in a table, use the following syntax:
ALTERĀ TABLEĀ table_name
ADDĀ column_name datatype;
The following SQL adds an "Email" column to the "Customers" table:
ALTERĀ TABLEĀ Customers
ADDĀ Email varchar(255);
ALTER TABLE - DROP COLUMN
To delete a column in a table, use the following syntax (notice that some database systems don't allow deleting a column):
ALTERĀ TABLEĀ table_name
DROPĀ COLUMNĀ column_name;
The following SQL deletes the "Email" column from the "Customers" table:
ALTERĀ TABLEĀ Customers
DROPĀ COLUMNĀ Email;
ALTER TABLE - RENAME COLUMN
To rename a column in a table, use the following syntax:
ALTER TABLE table_name
RENAME COLUMN old_name to new_name;
To rename a column in a table in SQL Server, use the following syntax:
SQL Server:
EXEC sp_rename 'table_name.old_name', 'new_name', 'COLUMN';
ALTER TABLE - ALTER/MODIFY DATATYPE
To change the data type of a column in a table, use the following syntax:
SQL Server / MS Access:
ALTER TABLE table_name
ALTER COLUMN column_name datatype;
My SQL / Oracle (prior version 10G):
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;
Oracle 10G and later:
ALTER TABLE table_name
MODIFY column_name datatype;
SQL ALTER TABLE Example
Look at the "Persons" table:
| ID | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 1 | Hansen | Ola | Timoteivn 10 | Sandnes |
| 2 | Svendson | Tove | Borgvn 23 | Sandnes |
| 3 | Pettersen | Kari | Storgt 20 | Stavanger |
Now we want to add a column named "DateOfBirth" in the "Persons" table.
We use the following SQL statement:
ALTERĀ TABLEĀ Persons
ADDĀ DateOfBirth date;
Notice that the new column, "DateOfBirth", is of type date and is going to hold a date. The data type specifies what type of data the column can hold. For a complete reference of all the data types available in MS Access, MySQL, and SQL Server, go to our completeĀ Data Types reference.
The "Persons" table will now look like this:
| ID | LastName | FirstName | Address | City | DateOfBirth |
|---|---|---|---|---|---|
| 1 | Hansen | Ola | Timoteivn 10 | Sandnes | |
| 2 | Svendson | Tove | Borgvn 23 | Sandnes | |
| 3 | Pettersen | Kari | Storgt 20 | Stavanger |
Change Data Type Example
Now we want to change the data type of the column named "DateOfBirth" in the "Persons" table.
We use the following SQL statement:
ALTERĀ TABLEĀ Persons
ALTERĀ COLUMNĀ DateOfBirth year;
Notice that the "DateOfBirth" column is now of type year and is going to hold a year in a two- or four-digit format.
DROP COLUMN Example
Next, we want to delete the column named "DateOfBirth" in the "Persons" table.
We use the following SQL statement:
ALTERĀ TABLEĀ Persons
DROPĀ COLUMNĀ DateOfBirth;
The "Persons" table will now look like this:
| ID | LastName | FirstName | Address | City |
|---|---|---|---|---|
| 1 | Hansen | Ola | Timoteivn 10 | Sandnes |
| 2 | Svendson | Tove | Borgvn 23 | Sandnes |
| 3 | Pettersen | Kari | Storgt 20 | Stavanger |