HSQLDB - Alter命令

每当需要更改表或字段的名称,更改字段的顺序,更改字段的数据类型或任何表结构时,您都可以使用ALTER命令实现相同的目的.

示例

让我们考虑一个使用不同场景解释ALTER命令的示例.

使用以下查询创建一个名为 testalter_tbl 的表,其中包含字段' id 名称.

//below given query is to create a table testalter_tbl table.
create table testalter_tbl(id INT, name VARCHAR(10));

//below given query is to verify the table structure testalter_tbl.
Select * From INFORMATION_SCHEMA.SYSTEM_COLUMNS as C Where C.TABLE_SCHEM =
   'PUBLIC' AND C.TABLE_NAME = 'TESTALTER_TBL';

执行上述查询后,您将收到以下输出.

+------------+-------------+------------+-----------+-----------+------------+
|TABLE_SCHEM |  TABLE_NAME | COLUMN_NAME| DATA_TYPE | TYPE_NAME | COLUMN_SIZE|
+------------+-------------+------------+-----------+-----------+------------+
|   PUBLIC   |TESTALTER_TBL|     ID     |     4     |   INTEGER |     4      |
|   PUBLIC   |TESTALTER_TBL|    NAME    |     12    |   VARCHAR |     10     |
+------------+-------------+------------+-----------+-----------+------------+

删除或添加列

每当您想从HSQLDB表中删除现有列时,就可以使用DROP子句和ALTER命令.

使用以下查询从表testalter_tbl中删除列(名称).

ALTER TABLE testalter_tbl DROP name;

成功执行上述查询后,您可以使用以下命令了解是否从表testalter_tbl中删除了名称字段.

Select * From INFORMATION_SCHEMA.SYSTEM_COLUMNS as C Where C.TABLE_SCHEM =
   'PUBLIC' AND C.TABLE_NAME = 'TESTALTER_TBL';

执行上述命令后,您将收到以下输出.

+------------+-------------+------------+-----------+-----------+------------+
|TABLE_SCHEM |  TABLE_NAME | COLUMN_NAME| DATA_TYPE | TYPE_NAME | COLUMN_SIZE|
+------------+-------------+------------+-----------+-----------+------------+
|  PUBLIC    |TESTALTER_TBL|      ID    |      4    |   INTEGER |     4      |
+------------+-------------+------------+-----------+-----------+------------+

无论何时要将任何列添加到HSQLDB表中,都可以使用ADD子句和ALTER命令.

使用以下查询添加名为 NAME的列到表 testalter_tbl .

ALTER TABLE testalter_tbl ADD name VARCHAR(10);

成功执行上述查询后,您可以了解名称字段是否已添加到表 testalter_tbl 中使用以下命令.

Select * From INFORMATION_SCHEMA.SYSTEM_COLUMNS as C Where C.TABLE_SCHEM =
   'PUBLIC' AND C.TABLE_NAME = 'TESTALTER_TBL';

执行上述查询后,您将收到以下输出.

+------------+-------------+------------+-----------+-----------+------------+
|TABLE_SCHEM |  TABLE_NAME | COLUMN_NAME| DATA_TYPE | TYPE_NAME | COLUMN_SIZE|
+------------+-------------+------------+-----------+-----------+------------+
|  PUBLIC    |TESTALTER_TBL|      ID    |     4     |   INTEGER |     4      |
|  PUBLIC    |TESTALTER_TBL|     NAME   |     12    |   VARCHAR |     10     |
+------------+-------------+------------+-----------+-----------+------------+

更改列定义或名称

每当需要更改列定义时,请同时使用 MODIFY CHANGE 子句 ALTER 命令.

让我们考虑一个解释如何使用CHANGE子句的示例.表 testalter_tbl 包含两个字段--id和name  - 分别具有数据类型int和varchar.现在让我们尝试将id的数据类型从INT更改为BIGINT.以下是进行更改的查询.

ALTER TABLE testalter_tbl CHANGE id id BIGINT;

成功执行上述查询后,可以使用以下命令验证表结构.

Select * From INFORMATION_SCHEMA.SYSTEM_COLUMNS as C Where C.TABLE_SCHEM =
   'PUBLIC' AND C.TABLE_NAME = 'TESTALTER_TBL';

执行上述命令后,您将收到以下输出.

+------------+-------------+------------+-----------+-----------+------------+
|TABLE_SCHEM |  TABLE_NAME | COLUMN_NAME| DATA_TYPE | TYPE_NAME | COLUMN_SIZE|
+------------+-------------+------------+-----------+-----------+------------+
|  PUBLIC    |TESTALTER_TBL|      ID    |     4     |   BIGINT  |     4      |
|  PUBLIC    |TESTALTER_TBL|     NAME   |     12    |   VARCHAR |     10     |
+------------+-------------+------------+-----------+-----------+------------+

现在让我们尝试在 testalter_tbl 表中将列NAME的大小从10增加到20.以下是使用MODIFY子句和ALTER命令实现此目的的查询.

ALTER TABLE testalter_tbl MODIFY name VARCHAR(20);

成功执行上述查询后,可以使用以下命令验证表结构.

Select * From INFORMATION_SCHEMA.SYSTEM_COLUMNS as C Where C.TABLE_SCHEM =
   'PUBLIC' AND C.TABLE_NAME = 'TESTALTER_TBL';

执行上述命令后,您将收到以下输出.

+------------+-------------+------------+-----------+-----------+------------+
|TABLE_SCHEM |  TABLE_NAME | COLUMN_NAME| DATA_TYPE | TYPE_NAME | COLUMN_SIZE|
+------------+-------------+------------+-----------+-----------+------------+
|  PUBLIC    |TESTALTER_TBL|    ID      |      4    |    BIGINT |     4      |
|  PUBLIC    |TESTALTER_TBL|    NAME    |     12    |   VARCHAR |    20      |
+------------+-------------+------------+-----------+-----------+------------+