2.12.3 ユーザが定義する抽象データ型の場合
ここでは,ユーザが定義する抽象データ型を含む表を操作する例について説明します。
なお,例題で使用している表は,マニュアル「HiRDB システム導入・設計ガイド」のデータベースの作成(ユーザが定義する抽象データ型を含む表の場合)で定義している表を利用しています。
(1) 抽象データ型がある表の検索
抽象データ型がある表の検索例として,勤続年数が20年以上の社員を求める例を次の図に示します。検索をするSQL文は,次のように記述できます。
SELECT 社員番号 FROM 社員表 WHERE 勤続年数(従業員)>=20
- [説明]
-
この例では,ユーザ定義関数「勤続年数」を使用して,勤続年数が20年以上の社員の社員番号を検索しています。ユーザ定義関数「勤続年数」の引数は,従業員です。
図2‒56 抽象データ型がある表の検索例
(2) 抽象データ型がある表の更新
抽象データ型がある表の更新例として,社員番号が900123の社員の役職を主任に更新する例を次の図に示します。更新をするSQL文は,次のように記述できます。
UPDATE 社員表 SET 従業員..役職='主任' WHERE 社員番号='900123'
- [説明]
-
この例では,社員番号が900123の社員の,列「従業員」の属性「役職」を主任に更新しています。抽象データ型の属性を指定する場合は,コンポネント指定を使用します。この例の場合,従業員..役職がコンポネント指定です。
図2‒57 抽象データ型がある表の更新例
(3) 抽象データ型がある表の行の削除
抽象データ型がある表の行の削除例として,役職が一般の社員のデータを削除する例を次の図に示します。行を削除するSQL文は,次のように記述できます。
DELETE FROM 社員表 WHERE 従業員..役職='一般'
- [説明]
-
この例では,列「従業員」の属性「役職」が一般の社員の行を削除しています。抽象データ型の属性を指定する場合は,コンポネント指定を使用します。この例の場合,従業員..役職がコンポネント指定です。
図2‒58 抽象データ型がある表の行の削除例
(4) 抽象データ型がある表への行の挿入
抽象データ型がある表への行の挿入例として,社員表に行を挿入する例を次の図に示します。行を挿入するSQL文は,次のように記述できます。
INSERT INTO 社員表 VALUES ('950070',t_従業員('タシロケイコ', 'F', '一般', '1995-04-01', :x顔写真 AS BLOB, 140000 ) )
- [説明]
-
この例では,抽象データ型定義時に定義したコンストラクタ関数t_従業員を使用して,社員表に社員番号950070の行を挿入しています。
なお,:x顔写真はBLOB型の埋込み変数で,顔写真の画像が設定されているものとします。
図2‒59 抽象データ型がある表への行の挿入例