- HSQLDB 教程
- HSQLDB - 首页
- HSQLDB - 简介
- HSQLDB - 安装
- HSQLDB - 连接
- HSQLDB - 数据类型
- HSQLDB - 创建表
- HSQLDB - 删除表
- HSQLDB - 插入查询
- HSQLDB - 选择查询
- HSQLDB - WHERE 子句
- HSQLDB - 更新查询
- HSQLDB - DELETE 子句
- HSQLDB - LIKE 子句
- HSQLDB - 排序结果
- HSQLDB - 连接
- HSQLDB - NULL 值
- HSQLDB - 正则表达式
- HSQLDB - 事务
- HSQLDB - ALTER 命令
- HSQLDB - 索引
- HSQLDB 有用资源
- HSQLDB - 快速指南
- HSQLDB - 有用资源
- HSQLDB - 讨论
HSQLDB - ALTER 命令
无论何时需要更改表名或字段名、更改字段顺序、更改字段数据类型或任何表结构,都可以使用 ALTER 命令来实现。
示例
让我们考虑一个使用不同场景解释 ALTER 命令的示例。
使用以下查询创建一个名为 testalter_tbl 的表,其中包含字段 id 和 name。
//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 中删除一列 (name)。
ALTER TABLE testalter_tbl DROP name;
成功执行上述查询后,可以使用以下命令了解 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 命令。
使用以下查询向表 testalter_tbl 添加一个名为 NAME 的列。
ALTER TABLE testalter_tbl ADD name VARCHAR(10);
成功执行上述查询后,可以使用以下命令了解 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 | | 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 | +------------+-------------+------------+-----------+-----------+------------+