6.1.5 名前の修飾
名前の修飾は,ピリオド(.)によってスキーマ名,表識別子などを連結して,スキーマ名を明示したり,名前を一意にしたりするときに使用します。
(1) スキーマ名の指定形式
- 形式
-
スキーマ名::=スキーマ識別子
スキーマ名には,スキーマ識別子を指定します。
SQL中に指定する表またはインデクスの所有者が自分(HADBサーバに接続中の認可識別子のHADBユーザ)の場合は,自分の認可識別子を指定します。
SQL中でスキーマ名を省略した場合,HADBサーバに接続するときに指定した認可識別子がスキーマ名として仮定されます。
なお,ディクショナリ表またはシステム表を検索する場合は,スキーマ名にMASTERを指定してください。
(2) 表名の指定形式
- 形式
-
表名::=〔スキーマ名.〕表識別子
表名は,表識別子をスキーマ名で修飾した形式で指定します。表識別子には,実表またはビュー表の名前を指定します。
SQL中でスキーマ名を省略した場合,HADBサーバに接続するときに指定した認可識別子がスキーマ名として仮定されます。
(3) インデクス名の指定形式
- 形式
-
インデクス名::=〔スキーマ名.〕インデクス識別子
インデクス名は,インデクス識別子をスキーマ名で修飾した形式で指定します。
SQL中でスキーマ名を省略した場合,HADBサーバに接続するときに指定した認可識別子がスキーマ名として仮定されます。
(4) 表指定の指定形式
表指定は,1つのSQL文中に2つ以上の表を指定する場合に,指定する列または*がどの表に対応するかを一意にするための修飾子で,表名,問合せ名,または相関名を指定します。
問合せ名については,「7.1.1 問合せ式の指定形式および規則」の「(2) 指定形式の説明」の「(a) WITH句」を参照してください。
相関名とは,次に示す場合に指定するそれらの表の代替名として使用します。
-
同じ表同士を結合する場合
-
同じ表を副問合せ中で指定し,その問合せ中で外側の問合せの表の列も参照する場合
相関名を指定することで,1つの表をあたかも2つの異なる表として扱うことができます。
- 形式
-
表指定::={表名|問合せ名|相関名}
表指定での修飾例を次に示します。
- (例)
-
複数の表(EMP,DEPT)に存在する同じ名前の列(DNO)を参照するために,表名で修飾する場合
SELECT "ENO","ENAME","EMP"."DNO","DNAME" FROM "EMP","DEPT" WHERE "EMP"."DNO"="DEPT"."DNO"
下線部分が表指定での修飾例です。
(5) 列指定の指定形式
表指定で修飾された列名を列指定といいます。
- 形式
-
列指定::=〔表指定.〕列名
列名を表指定で修飾する場合,指定する表名および問合せ名の有効範囲の中でなければ,列名をその表名および問合せ名で修飾できません。表名および問合せ名の有効範囲については,「6.8 範囲変数」を参照してください。
列名は,その列名を指定する位置が有効範囲に含まれている表または導出される表に存在しなければなりません。導出される表の列名の規則については,「6.9 導出列名」を参照してください。
列名は構文上修飾できる場合と修飾できない場合があります。各形式中に「列指定」と記述している個所は,列名を修飾できることを示し,「列名」と記述している個所は,修飾できないことを示しています。
なお,次に示す場合は,列名を表指定で修飾しなければなりません。
-
1つのFROM句に複数の表を指定した検索(2つ以上の表の結合)をするときに,検索対象の複数の表に同じ列名がある場合(修飾しないと,指定した列がどの表の列なのかわかりません)。