Hsqldb-alter-command
HSQLDB-変更コマンド
テーブルまたはフィールドの名前、フィールドの順序、フィールドのデータ型、またはテーブル構造を変更する必要がある場合は、ALTERコマンドを使用して同じことを実現できます。
例
さまざまなシナリオを使用してALTERコマンドを説明する例を考えてみましょう。
次のクエリを使用して、フィールドの id と name を含む testalter_tbl という名前のテーブルを作成します。
//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する場合は、DROP句をALTERコマンドと一緒に使用できます。
次のクエリを使用して、テーブルtestalter_tblから列( name )を削除します。
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テーブルに列を追加するときはいつでも、ALTERコマンドと共にADD句を使用できます。
次のクエリを使用して、 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 には、データ型intおよびvarcharを持つ2つのフィールド-idおよびname-が含まれています。 次に、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 |
+------------+-------------+------------+-----------+-----------+------------+