ここでは、rdbexecsqlコマンドを使用して、定義ファイルからデータベースを定義する方法を示します。
rdbexecsqlコマンドでは、物理構造、論理構造および格納構造を定義することができます。手順としては、最初に、データベースの定義を記述したファイルを作成し、そのファイルを入力ファイルとして指定してrdbexecsqlコマンドを実行します。
なお、定義ファイルのパス名およびファイル名は、任意の名前で指定可能です。
参照
指定可能なファイル名長は“コマンドリファレンス”を参照してください。
rdbexecsqlコマンドの定義ファイルの記述形式
rdbexecsqlコマンドの定義ファイルを記述する文法の一般形式を以下に示します。
1つのSQL文の終わりには終了子“;”を指定することが必要です。
CREATE DATABASE RDBDB ;
↑ 終了子の指定
プロシジャルーチン定義を行う場合は、定義ファイルの先頭に“EXEC SQL”を指定し、最後に“END-EXEC;”を指定します。“EXEC SQL”から“END-EXEC;”までが1つのSQL文とみなされます。
EXEC SQL
CREATE PROCEDURE PROC01
:
END-EXEC;
Solarisの場合
定義ファイルからデータベースを作成する例を以下に示します。
# rdbexecsql -s RDBDB -i /home/user/createdb.dat
↑ ↑
SQLサーバ名指定 定義ファイル指定-- データベース名の登録 データベース名は“RDBDB”
CREATE DATABASE RDBDB;
-- データベーススペースの作成 DDLの実行
-- データベーススペース定義 データベーススペース名は“DBSPACE1”
CREATE DBSPACE DBSPACE1 ALLOCATE RAWDEVICE /dev/rdsk/c0t1d0s1;
-- 論理構造の定義
-- スキーマを定義 スキーマ名は“STOCKS”
CREATE SCHEMA STOCKS;
-- テーブルを定義
CREATE TABLE STOCKS.在庫表 ( 製品番号 SMALLINT NOT NULL,
製品名 NATIONAL CHARACTER(10) NOT NULL,
在庫数量 INTEGER,
倉庫番号 SMALLINT,
PRIMARY KEY (製品番号)
);
CREATE VIEW STOCKS.大量在庫表(品番,数量)
AS SELECT 製品番号, 在庫数量 FROM STOCKS.在庫表
WHERE 在庫数量 >= 50;
-- 格納構造の定義
-- 在庫表のDSO
CREATE DSO 在庫表DSO
FROM STOCKS.在庫表
TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1));
-- 在庫表のDSI
-- DSIのフォーマット指定
CREATE DSI 在庫表DSI
DSO 在庫表DSO
ALLOCATE DATA ON DBSPACE1 SIZE 280K,
FORMAT;
-- インデックスのDSO
CREATE DSO 製品番号IXDSO
INDEX ON STOCKS.在庫表 (製品番号)
TYPE BTREE ( PAGESIZE1(16),PAGESIZE2(1), REALIGNMENT) BY ADDRESS;
-- インデックスのDSI
-- DSIのフォーマット指定
CREATE DSI 製品番号IXDSI
INDEX
DSO 製品番号IXDSO
ALLOCATE BASE ON DBSPACE1 SIZE 200K,
INDEX ON DBSPACE1 SIZE 40K,
FORMAT;
-- その他の定義
-- プロシジャを定義
EXEC SQL
CREATE PROCEDURE STOCKS.PROC001 ( IN KEY1 INTEGER )
COMMENT '在庫不足の製品の発注依頼'
BEGIN
DECLARE 在庫数量変数 INTEGER;
SELECT 在庫数量 INTO 在庫数量変数 FROM STOCKS.在庫表;
:
END
END-EXEC;
-- データベースの創成 DMLの実行
-- データのINSERT
INSERT INTO STOCKS.在庫表 (製品番号,製品名,在庫数量,倉庫番号)
VALUES (110,N'テレビ',86,2);
INSERT INTO STOCKS.在庫表 (製品番号,製品名,在庫数量,倉庫番号)
VALUES (112,N'ビデオ',95,3);以下の記述は注釈とみなします。
“*”、“/”、“@”および“-”で始まる行
“--”(連続した2個のハイフン)以降に記載された記述
“--”以降その行の右終端までを注釈とみなします。
Solaris以外の場合は、rdbexecsqlコマンドの定義ファイル指定および定義ファイル中のデータベーススペース定義を、それぞれ以下のように変更してください。
Linuxの場合
定義ファイル指定: /home/user/createdb.dat
データベーススペース定義:CREATE DBSPACE DBSPACE1 ALLOCATE RAWDEVICE /dev_symfoware/raw1
Windowsの場合
定義ファイル指定:C:\USERS\DEFAULT\CREATEDB.DAT
データベーススペース定義:CREATE DBSPACE DBSPACE1 ALLOCATE FILE C:\SFWD\RDB\USR\DBSP\DATABASE_SPACE ATTRIBUTE SPACE(3M)