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.