H2 Database 简明教程

H2 Database - Alter

ALTER 是一个用于通过向 alter 命令中添加不同的子句从而改变表结构的命令。根据场景,我们需要向 alter 命令添加相应的子句。在此章节中,我们将讨论 alter 命令的多种场景。

Alter Table Add

Alter Table Add 是一个用于向表中添加一个新列和相应数据类型的一个命令。此命令将提交此连接中的事务。

Syntax

以下是 Alter Table Add 命令的通用语法。

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

Example

在此实例中,我们将向表 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 是一个用于向表中添加不同约束的命令,例如果键、外键、非空等等。

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

Syntax

以下是 Alter table add constraint 命令的通用语法。

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

Example

在此实例中,让我们使用以下查询向表 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

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

Syntax

以下是 Alter Table Rename Constraint 命令的通用语法。

ALTER TABLE [ IF EXISTS ] tableName RENAME oldConstraintName TO newConstraintName

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

Example

在此实例中,我们将表 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

此命令用于改变特定表中列的结构和属性。改变属性指的是改变列的数据类型、重命名列、改变标识值,或者改变选择性。

Syntax

以下是修改表修改列命令的通用语法。

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 } }

在以上语法中 −

  1. RESTART - 命令更改自动增量列的下一个值。

  2. SELECTIVITY - 命令设置列的选择性(1-100)。根据选择性值,我们可以想象列的值。

  3. SET DEFAULT - 更改列的默认值。

  4. SET NULL - 设置列允许 NULL。

  5. SET NOT NULL - 设置列允许 NOT NULL。

Example

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

ALTER TABLE tutorials_tbl ALTER COLUMN title RENAME TO tutorial_title;

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

(0) row(s) effected

以类似的方式,我们可以对 ALTER 命令执行不同的方案。