テーブル定義の過程で、インデックスを定義する例を示します。
ここでは次のような列から成る顧客マスター・テーブル CUSMST を例として使います。
列 | 説明 | タイプ | 長さ | 小数点の位置 |
|---|---|---|---|---|
CUSTNO | 顧客番号(プライマリ・キー) | S | 7 | 0 |
NAME | 個人/組織名 | A | 30 | |
ADDR1 | 住所1 | A | 35 | |
ADDR2 | 住所2 | A | 35 | |
ADDR3 | 住所3 | A | 35 | |
POSTCD | 郵便番号 | A | 4 | |
STATE | 州コード | A | 3 | |
ACTIVE | 稼動/休止フラグ | A | 1 | |
CREDIT | 与信限度 | P | 11 | 2 |
AMTDUE | 貸し出し残高 | P | 11 | 2 |
ACCTYP | 口座種別 | P | 1 | 0 |
例1
NAMEフィールドを基準に整列した、CUSMSTV1というインデックス/テーブルを定義
Index name : CUSMSTV1Desc of index : Customer master by customer nameAccess path maint opt : IMMED Unique? NO Dynamic select? NOKey column details Column Description A/D S/U/A NAME___ A _ _______ _ _ + _______ _ _ + +
例2
州コード順、同じ州内では郵便番号順に並べ替えた、CUSMSTV2というインデックス/テーブルを定義。
Index name : CUSMSTV2Desc of index : Cust master by state and postcodeAccess path maint opt : IMMED Unique? NO Dynamic select? NOKey column details Column Description A/D S/U/A STATE____ _ _ POSTCD___ _ _ _ _ +
昇順/降順の指定はしていないので、省略値である昇順になります。
例3
顧客番号順に並べた、CUSMSTS1というインデックス/テーブルを定義。ただし、稼動口座(ACTIVE = 'Y')のみ選択します。
Index name : CUSMSTS1Desc of index : Active customers by customer noAccess path maint opt : IMMED Unique? NO Dynamic select? NOKey column details: Column Description A/D S/U/A CUSTNO__ _ _ ________ _ _ + ________ _ _ + + Select/Omit criteria: AND/OR SELECT/OMIT Column Operation(s) SELECT____ ACTIVE COMP(EQ 'Y')_____
例4
貸し出し残高順に並べた、CUSMSTS2というインデックス/テーブルを定義。ただし、与信限度(CREDIT)が100000を超え、貸し出し残高(AMTDUE)が20000以上のもののみ選択します。また、貸し出し残高の高いものから順に並べます。実行時選択機能も使います。
Index name : CUSMSTS2Desc of index : High credit, large debt customersAccess path maint opt: IMMED Unique? NO Dynamic select? YESKey column details: Column Description A/D S/U/A AMTDUE__ D S ________ _ _ + ________ _ _ + + Select/Omit criteria : AND/OR SELECT/OMIT Column Operation(s) SELECT___ CREDIT___ COMP(GT 100000)_______ AND _________ AMTDUE___ COMP(GE 20000)________
「Select/Omit criteria」の2行目、「SELECT/OMIT」欄が空になっているのは、2つの選択条件をAND条件で結ぶことを表します。この場合、CREDITが100000より大きく、かつ、AMTDUEが20000以上である顧客を選択することになります。
例5
与信限度順に並べた、CUSMSTS3というインデックス/テーブルを定義。ただし、与信限度(CREDIT)が100000を超えるか、または貸し出し残高(AMTDUE)が20000以上のもののみ選択します。
Desc of index : High credit or large debt customersAccess path maint opt : IMMED Unique? NO Dynamic select? NOKey column details: Column Description A/D S/U/A CREDIT__ _ _ ________ _ _ + ________ _ _ + + Select/Omit criteria: AND/OR SELECT/OMIT Column Operation(s) SELECT___ CREDIT___ COMP(GT 100000)________ OR SELECT___ AMTDUE___ COMP(GE 20000)_________
「Select/Omit criteria」の2行目、「SELECT/OMIT」欄が空になっていないので、2つの選択条件をOR条件で結ぶことを表します。この場合、CREDITが100000より大きいか、または、AMTDUEが20000以上である顧客を選択することになります。
例6
州と顧客番号を基準に並べ替えた、CUSMSTS4というインデックス/テーブルを定義。ただし、州(STATE)が「NSW」(ニュー・サウス・ウェールズ州)、「VIC」(ビクトリア州)、「QLD」(クイーンズランド州)のいずれかであるもののみ選択します。
Index name : CUSMSTS4Desc of index : East coast customers by state, custAccess path maint opt : IMMED Unique? NO Dynamic select? NOKey column details Column Description A/D S/U/A STATE___ _ _ CUSTNO__ _ _ ________ _ _ + + Select/Omit criteria: AND/OR SELECT/OMIT Column Operation(s) SELECT____ STATE___ COMP(EQ 'NSW')________ OR SELECT____ STATE___ COMP(EQ 'VIC')________ OR SELECT____ STATE___ COMP(EQ 'QLD')________ An identical condition can be made using the VALUES keyword:Select/Omit criteria AND/OR SELECT/OMIT Column Operation(s) SELECT____ STATE VALUES('NSW' 'VIC' 'QLD')
例7
顧客番号順に並べた、CUSMSTS5というインデックス/テーブルを定義。ただし、口座種別(ACCTYP)が2、3、4のいずれかであるもののみ選択します。
Index name : CUSMSTS5Desc of index : Customers with type 2, 3 or 4 accountsAccess path maint opt : IMMED Unique? NO Dynamic select? NOKey column details: Column Description A/D S/U/A CUSTNO__ _ _ ________ _ _ + ________ _ _ +
Select/Omit 条件:
AND/OR SELECT/OMIT Column Operation(s) SELECT____ ACCTYP___ COMP(EQ 2)_____ OR SELECT____ ACCTYP___ COMP(EQ 3)_____ OR SELECT____ ACCTYP___ COMP(EQ 4)______
選択条件は、次のような書き方も可能です。
SELECT____ ACCTYP__ COMP(GE 2)_______ AND ACCTYP___ COMP(LE 4)________
または
SELECT____ ACCTYP_ VALUES(2 3 4)_____
または
SELECT____ ACCTYP__ RANGE(2 4)_____