Curriculum
This tutorial shows you how to use the SQL ALTER TABLE
to change the structure of existing tables in the database.
Once you create a new table, you may want to change its structure because business requirements change. To modify the structure of a table, you use the ALTER TABLE
statement. The ALTER TABLE
statement allows you to perform the following operations on an existing table:
ADD
clause.MODIFY
clause.DROP
clause.We will examine each operation in detail in the following sections.
The following statement illustrates the ALTER TABLE
with the ADD
clause that allows you to add one or more columns to a table.
ALTER TABLE table_name ADD new_colum data_type column_constraint [AFTER existing_column];
To add one or more columns to a table, you need to perform the following steps:
table_name
after the ALTER TABLE
clause.ADD
clause. If you want to specify the order of the new column in the table, you can use the optional clause AFTER existing_column
.Note that if you omit the AFTER
clause, all the new columns will be added after the last column of the table.
Let’s look at some examples of adding new columns to the courses
table that we created in the create table tutorial
The following statement adds a new column named credit_hours
to the courses
table.
ALTER TABLE courses ADD credit_hours INT NOT NULL;
You can add multiple columns to a table using a single ALTER TABLE
statement. For example, The following statement adds the fee
and max_limit
columns to the courses
table and places these columns after the course_name
column.
ALTER TABLE courses ADD fee NUMERIC (10, 2) AFTER course_name, ADD max_limit INT AFTER course_name;
The MODIFY
clause allows you to change some attributes of the existing column e.g., NOT NULL ,
UNIQUE, and data type.
The following statement shows you the syntax of the ALTER TABLE
statement with the DROP
clause.
ALTER TABLE table_name MODIFY column_definition;
Notice that you should modify the attributes of columns of a table that has no data. Because changing the attributes of a column in a table that already has data may result in permanent data loss.
For example, if the data type of the column is VARCHAR,
and you change it to INT
, the database system has to convert the data from VARCHAR
to INT.
If the conversion fails, the database system may use the default value of the column, which may not be what you expected.
The following ALTER TABLE MODIFY
statement changes the attribute of the fee
column to NOT NULL.
ALTER TABLE courses MODIFY fee NUMERIC (10, 2) NOT NULL;
When a column of a table is obsolete and not used by any other database objects such as triggers, views, stored and stored procedures, you need to remove it from the table.
To remove one or more columns, you use the following syntax:
ALTER TABLE table_name DROP column_name, DROP colum_name, ...
For example, to remove the fee
column of the courses
table, you use the following statement.
ALTER TABLE courses DROP COLUMN fee;
To remove more than one column at the same time, you use multiple DROP COLUMN
clauses separated by a comma (,).
For example, the following statement removes the max_limit
and credit_hours
of the courses
table.
ALTER TABLE courses DROP COLUMN max_limit, DROP COLUMN credit_hours;