1.2.8 名前の修飾

ピリオド(.)によってスキーマ名,表識別子などを連結することを名前の修飾といいます。名前の修飾は,スキーマ名を明示したり,名前を一意にしたりするときに使用します。

<この項の構成>
(1) スキーマ名,表名,インデクス名
(2) 表指定
(3) 列指定
(4) 範囲変数

(1) スキーマ名,表名,インデクス名

(a) スキーマ名

スキーマを所有する認可識別子を指定します。

指定できる認可識別子を次に示します。

形式

スキーマ名::=認可識別子

(b) 表名

スキーマ名で修飾された表識別子を表名といいます。

形式

表名::=〔スキーマ名.〕表識別子

(c) インデクス名

スキーマ名で修飾されたインデクス識別子をインデクス名といいます。

形式

インデクス名::=〔スキーマ名.〕インデクス識別子

(d) 指定内容と規則

指定項目ごとの指定内容と規則を次の表に示します。

表1-6 指定項目ごとの指定内容と規則

項番指定項目指定内容規則
1スキーマ名ディクショナリ表を検索する場合は,"MASTER"を指定します。それ以外の場合は,"XDBUSER"を指定します。スキーマ名を省略すると,スキーマ名には,"XDBUSER"が仮定されます。
2表識別子表の名前を指定します。
3インデクス識別子インデクスの名前を指定します。

(2) 表指定

表指定は,一つのSQL文中に二つ以上の表を指定する場合に,指定する列または*がどの表に対応するかを一意にするための修飾子です。表指定には表名または相関名を指定します。

形式

表指定::={表名|相関名}

表指定での修飾例を次に示します。

(例)
複数の表(EMP,DEPT)に存在する同じ名前の列(DNO)を参照するために,表名で修飾する場合

SELECT "ENO","ENAME","EMP","DNO","DNAME" FROM "EMP","DEPT"
 WHERE "EMP"."DNO"="DEPT"."DNO"

(3) 列指定

表指定で修飾された列名を列指定といいます。

形式

列指定::=〔表指定.〕列名

列名を表指定で修飾する場合,指定する表名の有効範囲の中でなければ,列名をその表名で修飾できません。表名の有効範囲については,「(4)範囲変数」を参照してください。

列名は,その列名を指定する位置に有効範囲を持つ表または導出される表に存在しなければなりません。i番目の選択式によって導出される列名が,i番目に導出される表の列名になります。

列名は構文上修飾できる場合とできない場合があります。各形式中に「列指定」と記述している個所は,列名が修飾できることを示し,「列名」と記述している個所は,修飾できないことを示しています。

なお,一つのFROM句に複数の表を指定した検索(二つ以上の表の結合)をする場合に,検索対象の複数の表に同じ列名があるときは,列名を表指定で修飾しなければなりません。修飾しないと,指定した列がどの表の列なのかわかりません。

(4) 範囲変数

列指定の修飾子となる可能性のある識別子を範囲変数といいます。範囲変数は,名称と有効範囲を持ちます。相関名が指定された場合,相関名の指定された表名は有効範囲がなくなります。

(a) 範囲変数となる識別子の種類

範囲変数となる識別子の種類を次の表に示します。

表1-7 範囲変数となる識別子の種類

項番範囲変数となる識別子の種類扱い
1相関名
2表名相関名の指定がない場合
相関名の指定がある場合×
3UPDATEの更新対象表またはDELETEの削除対象表の表名
(凡例)
○:範囲変数となります。
×:範囲変数となりません。
(b) 範囲変数の名称の例

範囲変数の名称の例を次の表に示します。

表1-8 範囲変数の名称の例

項番SQL例範囲変数の名称
1SELECT T1.C1,X.C1,Y.C1 FROM
2T1A.T1
3,A.T1 XX
4,A.T2 YY
(凡例)
-:該当しません。
A:スキーマ名
T1,T2:表識別子
X,Y:相関名
C1:列名
(c) 範囲変数の有効範囲の例

範囲変数の有効範囲の例を次の表に示します。

表1-9 範囲変数の有効範囲の例

項番SQL例範囲変数
A.T1XA.T2
1SELECT X.C1,T2.C2×
2FROM A.T1 X,×
3A.T2×
4WHERE X.C1=100×
(凡例)
○:有効範囲となります。
×:有効範囲となりません。
A:スキーマ名
T1,T2:表識別子
X:相関名
C1,C2:列名