H2 数据库 - 修改表结构



ALTER 命令用于通过向 ALTER 命令添加不同的子句来更改表结构。根据场景,我们需要向 ALTER 命令添加相应的子句。本章将讨论 ALTER 命令的各种场景。

添加列 (Alter Table Add)

ALTER TABLE ADD 命令用于向表中添加新列及其相应的数据类型。此命令会提交此连接中的事务。

语法

以下是 ALTER TABLE ADD 命令的通用语法。

ALTER TABLE [ IF EXISTS ] tableName ADD [ COLUMN ] 
{ [ IF NOT EXISTS ] columnDefinition [ { BEFORE | AFTER } columnName ] 
   | ( { columnDefinition } [,...] ) }

示例

在此示例中,我们将向 tutorials_tbl 表添加一个名为 start_date 的新列。start_date 的数据类型为 Date。以下是添加新列的查询:

ALTER TABLE tutorials_tbl ADD start_date DATE;

上述查询将产生以下输出。

(6) rows effected 

添加约束 (Alter Table Add Constraint)

ALTER TABLE ADD CONSTRAINT 命令用于向表添加不同的约束,例如主键、外键、非空等。

如果所需索引尚不存在,则会自动创建。无法禁用对唯一约束的检查。此命令会提交此连接中打开的事务。

语法

以下是 ALTER TABLE ADD CONSTRAINT 命令的通用语法。

ALTER TABLE [ IF EXISTS ] tableName ADD constraint [ CHECK | NOCHECK ] 

示例

在此示例中,我们将使用以下查询,向 tutorials_tbl 表的 id 列添加一个名为 (tutorials_tbl_pk) 的主键约束。

ALTER TABLE tutorials_tbl ADD CONSTRAINT tutorials_tbl_pk PRIMARYKEY(id); 

上述查询将产生以下输出。

(6) row (s) effected

重命名约束 (Alter Table Rename Constraint)

此命令用于重命名特定关系表中的约束名称。此命令会提交此连接中打开的事务。

语法

以下是 ALTER TABLE RENAME CONSTRAINT 命令的通用语法。

ALTER TABLE [ IF EXISTS ] tableName RENAME oldConstraintName TO newConstraintName

使用此语法时,请确保相应的列存在旧的约束名称。

示例

在此示例中,我们将 tutorials_tbl 表的主键约束名称从 tutorials_tbl_pk 更改为 tutorials_tbl_pk_constraint。以下是执行此操作的查询:

ALTER TABLE tutorials_tbl RENAME CONSTRAINT 
tutorials_tbl_pk TO tutorials_tbl_pk_constraint;

上述查询将产生以下输出。

(1) row (s) effected 

修改列 (Alter Table Alter Column)

此命令用于更改特定表的列的结构和属性。更改属性意味着更改列的数据类型、重命名列、更改标识值或更改选择性。

语法

以下是 ALTER TABLE ALTER COLUMN 命令的通用语法。

ALTER TABLE [ IF EXISTS ] tableName ALTER COLUMN columnName 
{ { dataType [ DEFAULT expression ] [ [ NOT ] NULL ] [ AUTO_INCREMENT | IDENTITY ] } 
| { RENAME TO name } 
| { RESTART WITH long } 
| { SELECTIVITY int } 
| { SET DEFAULT expression } 
| { SET NULL } 
| { SET NOT NULL } } 

在上述语法中:

  • RESTART - 命令更改自动递增列的下一个值。

  • SELECTIVITY - 命令设置列的选择性 (1-100)。根据选择性值,我们可以推断列的值。

  • SET DEFAULT - 更改列的默认值。

  • SET NULL - 将列设置为允许 NULL。

  • SET NOT NULL - 将列设置为不允许 NULL。

示例

在此示例中,我们将使用以下查询将 tutorials_tbl 表的列名称从 Title 更改为 Tutorial_Title

ALTER TABLE tutorials_tbl ALTER COLUMN title RENAME TO tutorial_title; 

上述查询将产生以下输出。

(0) row(s) effected 

同样,我们可以使用 ALTER 命令执行不同的场景。

广告
© . All rights reserved.