スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス
機能
表定義変更には,次に示す機能があります。
使用権限
形式
次の形式中の項番は,オペランドの番号と対応しています。
項番 | 形 式 |
---|---|
1 | ALTER TABLE 〔認可識別子.〕表識別子 表定義変更動作 |
表定義変更動作::={ 列追加定義 |RDエリア追加定義 |列属性変更定義 |列削除定義 |表名変更定義 |列名変更定義 |分割格納条件変更定義 } |
項番 | 形 式 |
---|---|
2 | 列追加定義::= ADD 列名 データ型〔ARRAY [最大要素数]〕 〔NO SPLIT〕 〔〔列回復制約1〕 {LOB列格納用RDエリア指定 |マトリクス分割LOB列格納用RDエリア指定 |抽象データ型定義内LOB格納用RDエリア指定 〔プラグイン指定〕 |マトリクス分割LOB属性格納用RDエリア指定 〔プラグイン指定〕}〕 〔DEFAULT句〕 {〔NULL|NOT NULL〔WITH DEFAULT〕〕※1 |〔〔NOT NULL〕 WITH DEFAULT〕※2} 〔更新可能列属性〕 〔WITH PROGRAM〕 |
列回復制約1::=RECOVERY〔{ALL|PARTIAL|NO}〕 |
|
LOB列格納用RDエリア指定::= IN {LOB列格納用RDエリア名 |(LOB列格納用RDエリア名) |((LOB列格納用RDエリア名) 〔,(LOB列格納用RDエリア名)〕…)} |
|
マトリクス分割LOB列格納用RDエリア指定::=2次元格納用RDエリア指定 マトリクス分割LOB属性格納用RDエリア指定::=2次元格納用RDエリア指定 2次元格納用RDエリア指定::=(マトリクス分割用RDエリアリスト 〔,マトリクス分割用RDエリアリスト〕…) マトリクス分割用RDエリアリスト::=(RDエリア名〔,RDエリア名〕…) |
|
抽象データ型定義内LOB格納用RDエリア指定::= ALLOCATE(属性名〔..属性名〕… IN {LOB属性格納用RDエリア名 |(LOB属性格納用RDエリア名) |((LOB属性格納用RDエリア名) 〔,(LOB属性格納用RDエリア名)〕…)} 〔,属性名〔..属性名〕… IN {LOB属性格納用RDエリア名 |(LOB属性格納用RDエリア名) |((LOB属性格納用RDエリア名) 〔,(LOB属性格納用RDエリア名)〕…)}〕…) |
|
DEFAULT句::=DEFAULT 〔既定値〕 既定値::={定数|USER|CURRENT_DATE|CURRENT DATE |CURRENT_TIME|CURRENT TIME |CURRENT_TIMESTAMP〔(小数秒精度)〕 〔USING BES〕 |CURRENT TIMESTAMP〔(小数秒精度)〕〔USING BES〕 |NULL} |
|
更新可能列属性::=UPDATE 〔ONLY FROM NULL〕 |
|
3 | RDエリア追加定義::= ADD RDAREA 表格納用RDエリア名 〔FOR COLUMN 列名 {LOB列格納用RDエリア指定 |抽象データ型定義内LOB格納用RDエリア指定} 〔,列名 {LOB列格納用RDエリア指定 |抽象データ型定義内LOB格納用RDエリア指定}〕…〕 〔FOR INDEX インデクス識別子 インデクス格納用RDエリア指定 〔,インデクス識別子 インデクス格納用RDエリア指定〕…〕 〔FOR 〔PRIMARY〕 CLUSTER KEY インデクス格納用RDエリア指定〕 〔FOR PRIMARY KEY インデクス格納用RDエリア指定〕〔WITH PROGRAM〕 |
LOB列格納用RDエリア指定::= IN {LOB列格納用RDエリア名 |(LOB列格納用RDエリア名) |((LOB列格納用RDエリア名) 〔,(LOB列格納用RDエリア名)〕…)} |
|
抽象データ型定義内LOB格納用RDエリア指定::= ALLOCATE(属性名〔..属性名〕… IN {LOB属性格納用RDエリア名 |(LOB属性格納用RDエリア名) |((LOB属性格納用RDエリア名) 〔,(LOB属性格納用RDエリア名)〕…)} 〔,属性名〔..属性名〕… IN {LOB属性格納用RDエリア名 |(LOB属性格納用RDエリア名) |((LOB属性格納用RDエリア名) 〔,(LOB属性格納用RDエリア名)〕…)}〕…) |
|
インデクス格納用RDエリア指定::= IN{インデクス格納用RDエリア名 |(インデクス格納用RDエリア名) |((インデクス格納用RDエリア名) 〔,(インデクス格納用RDエリア名)〕…)} |
|
4 | 列属性変更定義::= CHANGE{列名{〔{VARCHAR(データ長) |NVARCHAR(データ長) |MCHAR({*|データ長}) |MVARCHAR({*|データ長})} 〔ARRAY [{*|最大要素数}]〕〕 |〔ARRAY [最大要素数]〕 |BINARY(データ長)} 〔{NO SPLIT|SPLIT}〕 〔列回復制約2〕 〔{SET DEFAULT句|DROP DEFAULT}〕 〔WITH DEFAULT〕 〔更新可能列属性〕 |CLUSTER KEY〔UNIQUE〕 |LOCK{ROW|PAGE} |HASHハッシュ関数名 |SEGMENT REUSE {〔セグメント数〔{K|M|G}〕〕|NO} |INSERT ONLY 〔WHILE {日間隔データ|ラベル付き間隔} BY 列名〕}〔WITH PROGRAM〕 |
列回復制約2::= RECOVERY{ALL|PARTIAL|NO} | |
5 | 列削除定義::= DROP 列名 〔WITH PROGRAM〕 |
6 | 表名変更定義::= RENAME TABLE TO 表識別子 〔WITH PROGRAM〕 |
7 | 列名変更定義::= RENAME COLUMN FROM 変更前列名 TO 変更後列名 〔WITH PROGRAM〕 |
8 | 分割格納条件変更定義::= CHANGE RDAREA {横分割表変更指定|マトリクス分割表変更指定} 〔LOB列格納用RDエリア変更指定〕 〔インデクス格納用RDエリア変更指定 〔インデクス格納用RDエリア変更指定〕…〕 〔クラスタキー格納用RDエリア変更指定〕 〔主キー格納用RDエリア変更指定〕 〔WITHOUT PURGE〕 〔WITH PROGRAM〕 |
8-1 | 横分割表変更指定::= {〔PARTITIONED〕変更前境界値リスト INTO 変更後境界値分割指定 |PARTITIONED CONDITION 変更前RDエリア情報リスト INTO 変更後格納条件分割指定} マトリクス分割表変更指定::= MULTIDIM(変更対象列名 変更前境界値リスト) AT 変更後境界値リスト INTO マトリクス分割表格納用RDエリア変更指定 |
8-2 | 変更前境界値リスト::=境界値リスト 変更後境界値リスト::=境界値リスト 境界値リスト::=(({境界値|MAX})〔,({境界値|MAX})〕…) |
8-3 | 変更後境界値分割指定::={表格納用RDエリア名 |(表格納用RDエリア名) |(〔(表格納用RDエリア名)境界値,〕 …(表格納用RDエリア名))} |
8-4 | 変更前RDエリア情報リスト::= {表格納用RDエリア名 |(表格納用RDエリア名) |((表格納用RDエリア名) 〔,(表格納用RDエリア名)〕…〔,OTHERS〕) |OTHERS} |
8-5 | 変更後格納条件分割指定::={表格納用RDエリア名 |(表格納用RDエリア名) |((表格納用RDエリア名)格納条件 {,(表格納用RDエリア名)格納条件 〔〔,(表格納用RDエリア名)格納条件〕 …〕 〔{,(表格納用RDエリア名) |,OTHERS}〕) |,(表格納用RDエリア名)) |,OTHERS)} |OTHERS} 格納条件::=列名={定数|(定数〔,定数…〕)} |
8-6 | インデクス格納用RDエリア変更指定::= FOR INDEX インデクス名 INTO 変更後インデクス格納用RDエリア名リスト 変更後インデクス格納用RDエリア名リスト::=RDエリア名リスト RDエリア名リスト::= {インデクス格納用RDエリア名 |(インデクス格納用RDエリア名) |((インデクス格納用RDエリア名) 〔,(インデクス格納用RDエリア名)〕…〔,OTHERS〕) |2次元格納用RDエリア指定 |OTHERS} |
8-7 | 主キー格納用RDエリア変更指定::= FOR PRIMARY KEY INTO 変更後インデクス格納用RDエリア名リスト |
8-8 | クラスタキー格納用RDエリア変更指定::= FOR 〔PRIMARY〕CLUSTER KEY INTO 変更後インデクス格納用RDエリア名リスト |
8-9 | LOB列格納用RDエリア変更指定::= FOR COLUMN 列名 {LOB列格納用RDエリア変更リスト |INTO マトリクス分割LOB列格納用RDエリア変更指定} 〔,列名 {LOB列格納用RDエリア変更リスト |INTOマトリクス分割LOB列格納用RDエリア変更指定}〕 〕… |
8-10 | LOB列格納用RDエリア変更リスト::= INTO {LOB列格納用RDエリア名 |(LOB列格納用RDエリア名) |((LOB列格納用RDエリア名) 〔,(LOB列格納用RDエリア名)〕…〔,OTHERS〕) |OTHERS} |
8-11 | マトリクス分割表格納用RDエリア変更指定::=2次元格納用RDエリア指定 マトリクス分割LOB列格納用RDエリア変更指定::=2次元格納用RDエリア指定 2次元格納用RDエリア指定::=(マトリクス分割格納用RDエリアリスト 〔,マトリクス分割格納用RDエリアリスト〕…) マトリクス分割格納用RDエリアリスト::=(RDエリア名〔,RDエリア名〕…) |
オペランド
更新前の列の値 | 更新後の列の値 | 更新可否 |
---|---|---|
ナル値 | ナル値 | ○ |
ナル値 | 非ナル値 | ○ |
非ナル値 | ナル値 | × |
非ナル値 | 非ナル値※ | × |
表種別 | UPDATE指定 | UPDATE ONLY FROM NULL指定 |
左記の 指定なし |
|||
---|---|---|---|---|---|---|
指定 可否 |
列の値の更新可否 | 指定 可否 |
列の値の更新可否 | 指定 可否 |
列の値の更新可否 | |
非改竄防止表 | ○ | ○ | ○ | ○ | − | ○ |
改竄防止表 | ○ | ○ | ○ | ○※ | − | × |
表3-6 インデクス種別によるインデクス格納用RDエリアの指定可否
インデクスの定義方法 | インデクスの分割方法 | インデクス格納用RDエリアの指定要否 | |
---|---|---|---|
CREATE INDEX 形式1,又は形式3で定義したインデクス,及び主キー | 1サーバ内だけの横分割※1 | サーバ内分割キーインデクス | ○ |
サーバ内非分割キーインデクス | |||
サーバ間だけの横分割※2 | サーバ内分割キーインデクス | ||
サーバ内非分割キーインデクス | ×※5※6 | ||
サーバ内,かつサーバ間の横分割※3 | サーバ内分割キーインデクス | ○ | |
サーバ内非分割キーインデクス | |||
非分割※4 | 非分割キーインデクス | ×※5 | |
CREATE INDEX 形式2で定義したインデクス,及びクラスタキー | 1サーバ内だけの横分割※1 | ○ | |
サーバ間だけの横分割※2 | |||
サーバ内,かつサーバ間の横分割※3 |
更新前の列の値 | 更新後の列の値 | 更新可否 |
---|---|---|
ナル値 | ナル値 | ○ |
ナル値 | 非ナル値 | ○ |
非ナル値 | ナル値 | × |
非ナル値 | 非ナル値※ | × |
表種別 | UPDATE指定 | UPDATE ONLY FROM NULL指定 |
左記の 指定なし |
|||
---|---|---|---|---|---|---|
指定 可否 |
列の値の更新可否 | 指定 可否 |
列の値の更新可否 | 指定 可否 |
列の値の更新可否 | |
非改竄防止表 | ○ | ○ | ○ | ○ | − | ○ |
改竄防止表 | × | ○ | × | ○※ | − | × |
表種別 | 表の分割方法 | 実行種別 | ||
---|---|---|---|---|
分割 | 統合 | |||
横分割表 | キーレンジ分割 | 境界値指定 | 任意の1個の境界値を2〜16個に分割します。 | 任意の2〜16個の境界値を1個に統合します。 |
格納条件指定 | 任意の1個のRDエリアを2〜16個に分割します。 | 任意の2〜16個のRDエリアを1個に統合します。 | ||
マトリクス分割表 | キーレンジ分割 | 境界値指定 | 一つの次元の1個の境界値を2〜16個に分割します。結果として,n個の境界値を2n〜16n個の境界値に分割します。 | 一つの次元の2〜16個の境界値を1個に統合します。結果として,2n〜16n個の境界値をn個の境界値に統合します。 |
表種別 | 分割方法 | 変更の可否 | ||
---|---|---|---|---|
横分割表 | キーレンジ分割 | 格納条件指定 | 格納条件の比較演算子に=だけを用いた表 | ○ |
格納条件の比較演算子に=以外を用いた表 | × | |||
境界値指定 | ○ | |||
ハッシュ分割 | × | |||
マトリクス分割表 | 第1次元:境界値指定 第2次元:境界値指定 |
○ | ||
第1次元:境界値指定 第2次元:ハッシュ分割 |
○※2 | |||
非分割表※1 | − | × |
表3-7 システム定義のpd_check_pendingオペランドにUSEを指定している場合に,検査保留状態を解除するディクショナリ表
変更対象表に定義されている制約 | 表情報に検査保留状態が設定されたRDエリアの有無※ | 検査保留状態を解除するディクショナリ表 | |
---|---|---|---|
参照制約 | なし | SQL_REFERENTIAL_CONSTRAINTS表 | CHECK_PEND列 |
SQL_TABLES表 | CHECK_PEND列 | ||
検査制約 | なし | SQL_CHECKS表 | CHECK_PEND2列 |
SQL_TABLES表 | CHECK_PEND2列 | ||
参照制約及び検査制約 | 参照制約:なし 検査制約:なし |
SQL_REFERENTIAL_CONSTRAINTS表 | CHECK_PEND列 |
SQL_CHECKS表 | CHECK_PEND2列 | ||
SQL_TABLES表 | CHECK_PEND列,CHECK_PEND2列 | ||
参照制約:なし 検査制約:あり |
SQL_REFERENTIAL_CONSTRAINTS表 | CHECK_PEND列 | |
SQL_TABLES表 | CHECK_PEND列 | ||
参照制約:あり 検査制約:なし |
SQL_CHECKS表 | CHECK_PEND2列 | |
SQL_TABLES表 | CHECK_PEND2列 | ||
制約が定義されていない | なし | − | − |
項目 | 境界値指定の横分割表 | |
---|---|---|
ALTER TABLEに指定する変更後のRDエリア※ | 重複 | 重複してもかまいません。 |
連続 | 連続しないようにしてください。 | |
分割格納条件を変更した結果の表全体のRDエリア | 重複 | 重複してもかまいません。 |
連続 | 分割時は,連続したRDエリアをシステムが一つにまとめます。 | |
統合時は指定できません。 |
項目 | 境界値指定の横分割表 | |
---|---|---|
ALTER TABLEに指定する変更後のRDエリア※ | 重複 | 重複してもかまいません。 |
連続 | 連続してもかまいません。 | |
分割格納条件を変更した結果の表全体のRDエリア | 重複 | 重複してもかまいません。 |
連続 | 連続したRDエリアをシステムは一つにまとめません。 |
共通規則
留意事項
使用例
ALTER TABLE ZAIKO ADD SADRS VARCHAR(40)
ALTER TABLE ZAIKO ADD SADRS VARCHAR(40) NOT NULL WITH DEFAULT
ALTER TABLE ZAIKO CHANGE SADRS VARCHAR(60)
ALTER TABLE ZAIKO CHANGE CLUSTER KEY UNIQUE
ALTER TABLE ZAIKO DROP SADRS
ALTER TABLE ZAIKO DROP SADRS WITH PROGRAM
ALTER TABLE ZAIKO ADD SMAP BLOB(1M) IN (RMAPLOB1)
ALTER TABLE NZAIKO ADD RDAREA RDA3 FOR COLUMN SMAP IN (RMAPLOB3) FOR INDEX ISCODE IN (RDA4)
CREATE FIX TABLE "T1"("C1" INT,"C2" INT) PARTITIONED BY "C1" IN(("TA1")100,("TA2")200,("TA3")400,("TA4")500,("TA5")600,("TA6")) CREATE INDEX "I1" ON "T1"("C1") IN(("IA1"),("IA2"),("IA3"),("IA4"),("IA5"),("IA6"))
ALTER TABLE "T1" CHANGE RDAREA ((100),(200)) INTO "TA11" FOR INDEX "I1" INTO "IA11"
ALTER TABLE "T1" CHANGE RDAREA ((400)) INTO (("TA12")300,("TA13")) FOR INDEX "I1" INTO (("IA12"),("IA13"))
ALTER TABLE "T1" CHANGE RDAREA ((600),(MAX)) INTO "TA11" FOR INDEX "I1" INTO "IA11"
CREATE FIX TABLE "T1"("C1" INT,"C2" INT) PARTITIONED BY "C1" IN(("TA1")100,("TA2")200,("TA3")400,("TA4")500,("TA5")600,("TA6")) CREATE INDEX "I1" ON "T1"("C1") IN(("IA1"),("IA2"),("IA3"),("IA4"),("IA5"),("IA6"))
ALTER TABLE "T1" CHANGE RDAREA ((400)) INTO (("TA3")300,("TA4")) FOR INDEX "I1" INTO (("IA3"),("IA4"))
CREATE FIX TABLE "T1"("C1" CHAR(3),"C2" INT) IN(("TA1")"C1"='001',("TA2")"C1"='002', ("TA3")"C1"='003',("TA4")"C1"=('004','005'),("TA5")) CREATE INDEX "I1" ON "T1"("C1") IN(("IA1"),("IA2"),("IA3"),("IA4"),("IA5"))
ALTER TABLE "T1" CHANGE RDAREA PARTITIONED CONDITION (("TA5")) INTO (("TA6")"C1"='006',("TA5")) FOR INDEX "I1" INTO (("IA6"),("IA5"))
ALTER TABLE "T1" CHANGE RDAREA PARTITIONED CONDITION (("TA1"),("TA5")) INTO "TA5" FOR INDEX "I1" INTO "IA5"
ALTER TABLE "T1" CHANGE RDAREA PARTITIONED CONDITION (("TA4")) INTO (("TA4")"C1"='004',("TA7")"C1"='005') FOR INDEX "I1" INTO (("IA4"),("IA7"))
ALTER TABLE "T1" CHANGE RDAREA PARTITIONED CONDITION (("TA1"),("TA2")) INTO "TA2" FOR INDEX "I1" INTO "IA2"
CREATE FIX TABLE "USERA"."ZAIKO" ("GNO" CHAR(5),"GNAME" CHAR(8),"KIKAKU" CHAR(3),"TANKA" INTEGER,"NYUUKOBI" CHAR(10)) PARTITIONED BY MULTIDIM ("GNO" (('20000')), "NYUUKOBI" (('2010-12-31'),('2011-12-31'))) IN (("RDAT01","RDAT02","RDAT03"), ("RDAT01","RDAT04","RDAT05")) CLUSTER KEY ("GNO","NYUUKOBI") IN (("RDAI01","RDAI02","RDAI03"), ("RDAI01","RDAI04","RDAI05"))
ALTER TABLE "USERA"."ZAIKO" CHANGE RDAREA MULTIDIM ("GNO" ((MAX))) AT (('60000'),(MAX)) INTO (("RDAT01","RDAT04","RDAT05"), ("RDAT11","RDAT14","RDAT15")) FOR CLUSTER KEY INTO (("RDAI01","RDAI04","RDAI05"), ("RDAI11","RDAI14","RDAI15"))
ALTER TABLE "USERA"."ZAIKO" CHANGE RDAREA MULTIDIM ("GNO" (('60000'),(MAX))) AT ((MAX)) INTO (("RDAT01","RDAT04","RDAT05")) FOR CLUSTER KEY INTO (("RDAI01","RDAI04","RDAI05"))
ALTER TABLE "USERA"."ZAIKO" CHANGE RDAREA MULTIDIM ("NYUUKOBI" ((MAX))) AT (('2012-12-31'),(MAX)) INTO (("RDAT03","RDAT13"), ("RDAT05","RDAT15")) FOR CLUSTER KEY INTO (("RDAI03","RDAI13"), ("RDAI05","RDAI15"))
ALTER TABLE "USERA"."ZAIKO" CHANGE RDAREA MULTIDIM ("NYUUKOBI" (('2012-12-31'),(MAX))) AT ((MAX)) INTO (("RDAT03"), ("RDAT05")) FOR CLUSTER KEY INTO (("RDAI03"), ("RDAI05"))
CREATE TABLE JUTYU (DNO CHAR(6),TCODE CHAR(5),SCODE CHAR(4), BIKOU CHAR(60) UPDATE, JSURYO INTEGER,JDATE DATE,JTIME TIME, JINSERTDATE DATE NOT NULL WITH DEFAULT SYSTEM GENERATED)
ALTER TABLE JUTYU CHANGE INSERT ONLY WHILE 10 YEARS BY JINSERTDATE
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.