Schema Change Statements in SQL
In this section, we give an overview of the schema evolution commands available in SQL, which can be used to
alter a schema by adding or dropping tables, attributes, constraints, and other
schema elements. This can be done while the database is operational and does
not require recompilation of the database schema. Certain checks must be done
by the DBMS to ensure that the changes do not affect the rest of the database
and make it inconsistent.
1. The DROP Command
The DROP command can be used to drop named
schema elements, such as tables, domains, or constraints. One can also drop a
schema. For example, if a whole schema is no longer needed, the DROP SCHEMA command can be used. There are two drop
behavior options: CASCADE and RESTRICT. For example, to remove the COMPANY database
schema and all its tables, domains, and other elements, the CASCADE option is used as follows:
DROP SCHEMA COMPANY CASCADE;
If the RESTRICT option is chosen in place of CASCADE, the
schema is dropped only if it has no
elements in it; otherwise, the DROP command
will not be executed. To use the RESTRICT option,
the user must first individually drop each element in the schema, then drop the
schema itself.
If a base relation within a schema is no longer needed, the relation and
its definition can be deleted by using the DROP TABLE command.
For example, if we no longer wish to keep track of dependents of employees in
the COMPANY database of Figure 4.1, we can get rid of the DEPENDENT relation by issuing the following command:
DROP TABLE DEPENDENT
CASCADE;
If the RESTRICT option is chosen instead of CASCADE, a table
is dropped only if it is not referenced
in any constraints (for example, by foreign key definitions in another
relation) or views (see Section 5.3) or by any other elements. With the CASCADE option, all such constraints, views, and other elements that reference
the table being dropped are also dropped automatically from the schema,
along with the table itself.
Notice that the DROP TABLE command not only deletes all the
records in the table if successful, but also removes the table definition from the catalog. If it is desired to delete only
the records but to leave the table definition for future use, then the DELETE command (see Section 4.4.2) should be used instead of DROP TABLE.
The DROP command can also be used to drop other types of named schema elements,
such as constraints or domains.
2. The ALTER Command
The definition of a base table or of other named schema elements can be
changed by using the ALTER command. For base tables, the
possible alter table actions include
adding or dropping a column (attribute), changing a column definition, and
adding or dropping table constraints. For example, to add an attribute for
keeping track of jobs of employees to the EMPLOYEE base
relation in the COMPANY schema (see Figure 4.1), we can use the command
ALTER TABLE
COMPANY.EMPLOYEE ADD COLUMN Job VARCHAR(12);
We must still enter a value for the new attribute Job for each individual EMPLOYEE tuple. This can be done either
by specifying a default clause or by using the UPDATE command
individually on each tuple (see Section 4.4.3). If no default clause is
spec-ified, the new attribute will have NULLs in all
the tuples of the relation immediately after the command is executed; hence,
the NOT NULL constraint is not allowed in
this case.
To drop a column, we must choose either CASCADE or RESTRICT for drop behav-ior. If CASCADE is chosen, all constraints and
views that reference the column are dropped automatically from the schema,
along with the column. If RESTRICT is chosen, the command is
successful only if no views or constraints (or other schema elements) reference
the column. For example, the following command removes the attribute Address from the EMPLOYEE base table:
ALTER TABLE
COMPANY.EMPLOYEE DROP COLUMN Address CASCADE;
It is also possible to alter a column definition by dropping an existing
default clause or by defining a new default clause. The following examples
illustrate this clause:
ALTER TABLE
COMPANY.DEPARTMENT ALTER COLUMN Mgr_ssn
DROP DEFAULT;
ALTER TABLE COMPANY.DEPARTMENT
ALTER COLUMN Mgr_ssn
SET DEFAULT ‘333445555’;
One can also change the constraints specified on a table by adding or
dropping a named constraint. To be dropped, a constraint must have been given a
name when it was specified. For example, to drop the constraint named EMPSUPERFK in Figure 4.2 from the EMPLOYEE relation, we write:
ALTER TABLE
COMPANY.EMPLOYEE
DROP CONSTRAINT EMPSUPERFK
CASCADE;
Once this is done, we can redefine a replacement constraint by adding a
new con-straint to the relation, if needed. This is specified by using the ADD keyword in the ALTER TABLE statement followed by the new
constraint, which can be named or unnamed
and can be of any of the table constraint types discussed.
The preceding subsections gave an overview of the schema evolution
commands of SQL. It is also possible to create new tables and views within a
database schema using the appropriate commands. There are many other details
and options; we refer the interested reader to the SQL documents listed in the
Selected Bibliography at the end of this chapter.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.