Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


11.1.18 配列型の列を定義した実表の運用

配列型の列を定義した実表の運用方法を説明します。

なお,ここでは,実表を表と表記しています。

〈この項の構成〉

(1) 表の定義

CREATE TABLE文で表を定義します。定義する表に配列型の列を定義する場合は,CREATE TABLE文の列定義で,列のデータ型に配列型(ARRAY型)を指定します。配列型の列を定義した商品表(PRODUCT)の定義例を次に示します。

(例)

商品表(PRODUCT)の定義条件を次に示します。

  • SIZE列(サイズ)とCOLOR列(色)を配列型の列として定義します。

  • SIZE列は,要素データ型をCHAR(1)とし,最大要素数を3とします。

  • COLOR列は,要素データ型をVARCHAR(8)とし,最大要素数を6とします。

[図データ]

CREATE TABLE文の指定例

CREATE TABLE "PRODUCT" ("PCODE" CHAR(4),
                        "PNAME" VARCHAR(20),
                        "SIZE"  CHAR(1) ARRAY[3],        ...1
                        "PRICE" INTEGER,
                        "COLOR" VARCHAR(8) ARRAY[6])     ...2
              IN "DBAREA01"
              CHUNK=120
              STORAGE FORMAT COLUMN                      ...3

[説明]

  1. 配列型の列であるSIZE列を定義します。

  2. 配列型の列であるCOLOR列を定義します。

  3. 配列型の列を定義した表は,カラムストア表として定義する必要があります。

重要

配列型の列を定義した表を定義する前に,「5.2.13 配列型の列の定義【カラムストア表】」を参照して制限事項などを確認してください。

メモ

CREATE TABLE文の指定形式および各オプションの詳細については,マニュアルHADB SQLリファレンスCREATE TABLE(表の定義)を参照してください。

(2) 表の検索

配列型の列を定義した表の検索例を次に示します。

(例1)

商品表(PRODUCT)から,商品名(PNAME)とサイズ(SIZE)を検索します。SIZE列は配列型の列です。

SELECT文の指定例

SELECT "PNAME","SIZE" FROM "PRODUCT"

上記の下線部分のように配列型の列名だけを指定すると,SIZE列中の配列要素の値がすべて出力されます。

検索結果

[図データ]

(例2)

商品表(PRODUCT)から,商品名(PNAME)とサイズ(SIZE)の先頭の配列要素を検索します。

SELECT文の指定例

SELECT "PNAME","SIZE"[1] FROM "PRODUCT"

上記の下線部分のように,配列型の列名と,検索対象とする配列要素の要素番号を指定します。この例の場合,先頭の配列要素を検索するため,要素番号に1を指定しています。下線部分の指定を配列要素参照といいます。

検索結果

[図データ]

(例3)

商品表(PRODUCT)から,色(COLOR)の配列要素に'BLUE'がある商品名(PNAME)と単価(PRICE)を検索します。

SELECT文の指定例

SELECT "PNAME","PRICE" FROM "PRODUCT" WHERE "COLOR"[ANY] = 'BLUE'

COLOR列の全配列要素を検索対象とする場合は,上記の下線部分のように,配列型の列名と[ANY]を指定します。下線部分の指定を配列要素参照といいます。

検索結果

[図データ]

メモ

配列要素参照の指定形式の詳細については,マニュアルHADB SQLリファレンス配列要素参照を参照してください。

(3) 表の全行削除

表の全行を削除する場合は,TRUNCATE TABLE文を実行します。

(例)

商品表(PRODUCT)の全行を削除します。

TRUNCATE TABLE "PRODUCT"
重要

配列型の列を定義した表には,DELETE文を実行できません。また,INSERT文およびUPDATE文も実行できません。

(4) 最大要素数の変更

配列型の列の最大要素数を変更する場合は,ALTER TABLE文を実行します。

(例)

商品表(PRODUCT)のSIZE列の最大要素数を5に変更します。

ALTER TABLE "PRODUCT"
    CHANGE COLUMN "SIZE" ARRAY[5]
重要
  • 最大要素数を大きくすることだけができます。最大要素数を小さくすることはできません。

  • 表を定義したHADBユーザだけが,ALTER TABLE文で最大要素数を変更できます。

メモ

ALTER TABLE文の指定形式および規則については,マニュアルHADB SQLリファレンスALTER TABLE(表定義の変更)を参照してください。

なお,最大要素数を変更する場合,次に示す影響があります。影響がないかどうかを確認してください。

また,次に示す場合は,ALTER TABLE文で最大要素数を変更できません。

(5) 配列型の列の追加

表に配列型の列を追加する場合は,ALTER TABLE文を実行します。

(例)

商品表(PRODUCT)に,配列型の列であるITEM_CODE列を追加します。ITEM_CODE列の要素データ型はCHAR(8),最大要素数は10とします。

ALTER TABLE "PRODUCT"
    ADD COLUMN "ITEM_CODE" CHAR(8) ARRAY[10]
重要
  • カラムストア表に配列型の列を追加できます。ローストア表には配列型の列を追加できません。

  • B-treeインデクスまたは一意性制約を定義している表には,配列型の列を追加できません。

メモ
  • 表に列を追加する際の留意事項については,「11.1.2 実表に列を追加する方法」を参照してください。

  • ALTER TABLE文の指定形式および規則については,マニュアルHADB SQLリファレンスALTER TABLE(表定義の変更)を参照してください。