ALTER TABLE
— change the definition of a table
Synopsis
ALTER TABLE [IF EXISTS] <name> RENAME TO <new_name>;
ALTER TABLE [IF EXISTS] <name> RENAME [COLUMN] <column_name> TO <new_name>;
ALTER TABLE [IF EXISTS] <name>
ADD [COLUMN] [IF NOT EXISTS] <column_name> <data_type>
[COLLATE <collation>]
[<column_constraint>] [...];
ALTER TABLE [IF EXISTS] DROP [COLUMN] [IF EXISTS] <column_name>
ALTER TABLE [IF EXISTS] <name> ADD <table_constraint>;
where column_constraint
is:
{ NOT NULL | NULL | DEFAULT default_expr }
and table_constraint
is as described in CREATE TABLE.
Description
ALTER TABLE
changes the definition of an existing table. Hyper
currently only supports the following changes:
RENAME
- The
RENAME
forms change the name of a table, the name of an individual column in a table, or the name of a constraint of the table. There is no effect on the stored data. ADD COLUMN [ IF NOT EXISTS ]
- This form adds a new column to the table, using the same syntax as
CREATE TABLE. If
IF NOT EXISTS
is specified and a column already exists with this name, no error is thrown. In contrast toCREATE TABLE
, which supports any variable-free expression, including non-constant expressions like random(), the default value here must be a constant. DROP COLUMN [ IF EXISTS ]
- This form drops a column from a table. Columns with indexes and table constraints can\'t be dropped.
ADD table_constraint [ NOT VALID ]
- This form adds a new constraint to a table using the same syntax as CREATE TABLE.
Some forms of ALTER TABLE that act on a single table can be combined into a list of multiple alterations to be applied together. It is possible to add several columns and/or drop several columns in a single command. It is also possible to create multiple column constraints in a single command. It is not possible to combine altering columns with adding constraints.
Parameters
IF EXISTS
- Do not throw an error if the table does not exist.
<name>
- The name (optionally schema-qualified) of an existing table to alter.
<column_name>
- Name of a new or existing column.
<new_column_name>
- New name for an existing column.
<new_name>
- New name for the table.
<data_type>
- Data type of the new column.
Notes
The key word COLUMN
is noise and can be omitted.
Changing any part of a system catalog table is not permitted.
Examples
To add a column of type text
to a table:
ALTER TABLE distributors ADD COLUMN address text;
To drop a column from a table:
ALTER TABLE distributors DROP COLUMN address;
To rename an existing column:
ALTER TABLE distributors RENAME COLUMN address TO city;
To rename an existing table:
ALTER TABLE distributors RENAME TO suppliers;
To add an unnamed assumed foreign key constraint to a table:
ALTER TABLE distributors ADD ASSUMED FOREIGN KEY (address) REFERENCES addresses (address);
See CREATE TABLE for more examples of table constraints.