|
CREATE VIEW
|
CREATE VIEWは、現在存在するデータベース上のテーブルを元に、新しいビュー(テーブル)を作成するコマンドです。複数のテーブルを結合させることもできます。
例えば、スキーマに以下のような3種類のテーブル(BOOKS_TBL、AUTHOR_TBL、KIND_TBL)が宣言されているとします。
MASTER BOOKS_TBL KEYED=B_NUM ;
ITEM B_NUM AS 99999 HEADING = '管理番号' ;
ITEM B_NAME AS A20 HEADING = '書籍名' ;
ITEM B_WDATE AS DATE'yyyy ( 年 ) bm ( 月 )' HEADING = '発売年月';
ITEM B_A_NUM AS 9999 HEADING = '作者番号' ;
ITEM B_K_NUM AS 9999 HEADING = 'ジャンル番号' ;
ITEM B_PRICE AS 999,999 HEADING = '単価' ;
MASTER AUTHOR_TBL KEYED=A_NUM ;
ITEM A_NUM AS 9999 HEADING = '作者番号' ;
ITEM A_NAME AS A20 HEADING = '作者名' ;
ITEM A_BDATE AS DATE'yyyy ( 年 ) bm ( 月 ) bd ( 日 )' HEADING = '生年月日' ;
MASTER KIND_TBL KEYED=K_NUM ;
ITEM K_NUM AS 9999 HEADING = 'ジャンル番号' ;
ITEM K_NAME AS A10 HEADING = 'ジャンル名' ;
この3つのテーブルを以下のように関連付け、管理番号・書籍名・作者名・ジャンル名のみを抜き出して、ビューを作成してみます。
CREATE VIEW NEWTBL
SELECT
BOOKS_TBL.B_NUM NAMED N_NUM ,
BOOKS_TBL.B_NAME NAMED N_BOOKNAME ,
AUTHOR_TBL.A_NAME NAMED N_ANAME ,
KIND_TBL.K_NAME NAMED N_KNAME
FROM BOOKS_TBL
INNER JOIN AUTHOR_TBL
ON BOOKS_TBL.B_A_NUM = AUTHOR_TBL.A_NUM
INNER JOIN KIND_TBL
ON BOOKS_TBL.B_K_NUM = KIND_TBL.K_NUM ;
CREATE VIEWのSELECTでビューで使用する項目を列挙し、その後にテーブルの結合の指定を行います。上記の例では、BOOKS_TBLのB_A_NUMを元に、AUTHOR_TBLのA_NUMの中で同じものを探し出します(この時のA_NAMEを取り出す)。また、BOOKS_TBLのB_K_NUMを元に、KIND_TBLのK_NUMの中で同じ物を探し出します(この時のK_NAMEを取り出す)。
これで、「NEWTBL」というビューが作成されました。
CREATE VIEWで作成されたビューは、普通のテーブルと同じようにSLIST、LISTなどを行うことができます。ただし、JOIN指定のあるビューは読み出し専用です(ビューに対してCHANGE、INSERTなどは行えません)。
すべての項目をリスト表示するには、以下のように使用します。
LIST BY NEWTBL.N_NUM NEWTBL.N_BOOKNAME NEWTBL.N_ANAME NEWTBL.N_KNAME ;