スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス
それぞれの名前の内容と形式を次に示します。
表名::=〔〔RDノード名称.〕認可識別子.〕表識別子
インデクス名::=〔認可識別子.〕インデクス識別子
インデクス型名::=〔認可識別子.〕インデクス型識別子
ユーザ定義型名::=〔認可識別子.〕データ型識別子
ルーチン名::=〔認可識別子.〕ルーチン識別子
トリガ名::=〔認可識別子.〕トリガ識別子
順序数生成子名::=〔認可識別子.〕順序数生成子識別子
指定項目 | 指定内容 | 規 則 |
---|---|---|
認可識別子 | 指定する表識別子,インデクス識別子,インデクス型識別子,データ型識別子,ルーチン識別子,及びトリガ識別子が自分のものであれば,自分の認可識別子を指定します。他ユーザが所有するものであれば,そのユーザの認可識別子を指定します。ただし,表識別子にパブリックビュー,ルーチン識別子にパブリック手続き,パブリック関数の名前を指定する場合は,PUBLICを指定します。なお,PUBLICの指定は,引用符で囲んだ指定および引用符で囲まない指定のどちらも指定可能です。 | 認可識別子を省略すると,次のとおりに仮定されます。
|
RDノード名称 | リモートデータベースアクセスをする場合,RDノード名称を指定します。RDノード名称を省略した場合,ローカルアクセスになります。 | |
表識別子 | 実表,外部表,又はビュー表の名前を指定します。 | |
インデクス識別子 | インデクス又は外部インデクスの名前を指定します。 | |
インデクス型識別子 | インデクス型の名前を指定します。 | |
データ型識別子 | ユーザ定義型の名前を指定します。 | |
ルーチン識別子 | 手続き又は関数の名前を指定します。 | |
トリガ識別子 | トリガの名前を指定します。 | |
順序数生成子識別子 | 順序数生成子の名前を指定します。 |
表指定は,一つのSQL文中に二つ以上の表を指定する場合に,指定する列,*,又はROWがどの表に対応するかを一意にするための修飾子で,表名,又は相関名を指定します。
相関名とは,同じ表同士の結合をしたい場合,及び同じ表を副問合せ中で指定し,その問合せ中で外側の問合せの表の列も参照する場合に,指定するそれらの表の別名として使用します。相関名を指定すると,一つの表を二つの異なる表として使用できます。
表指定::={RDノード名称.認可識別子.表識別子|修飾なし表指定}
修飾なし表指定::={〔認可識別子.〕表識別子|相関名|問合せ名}
WITH句を用いた問合せ式の問合せ式本体中の一つのFROM句に,WITH句に指定した問合せ名と,その問合せ名と同じ表識別子を指定する場合は,表識別子を認可識別子で明示的に修飾し,更にその問合せ名,及び表識別子に相関名を指定して名前を区別する必要があります。
WITH句を用いた問合せ式の問合せ本体中の表指定では,名前を認可識別子で修飾した場合,その名前を表識別子として扱い,名前を認可識別子で修飾しない場合,その名前を問合せ名,又は表識別子として扱います。ただし,名前を認可識別子で修飾しない場合の名前の優先順位は,問合せ名,表識別子の順になります。
表指定での修飾例を次に示します。
SELECT ZAIKO.SCODE,SNAME,TCODE FROM ZAIKO,JUTYU WHERE ZAIKO.SCODE = JUTYU.SCODE
SELECT X.* FROM ZAIKO X,ZAIKO Y WHERE X.COL = Y.COL AND Y.SCODE = '101M'
SELECT X.RDAREA_NAME FROM MASTER.SQL_RDAREAS X, MASTER.SQL_TABLES Y WHERE Y.TABLE_SCHEMA = 'U' AND Y.TABLE_NAME = 'ZAIKO' AND X.RDAREA_NAME = Y.RDAREA_NAME
WITH ZAIKO(QC1,QC2) AS (SELECT SCODE,TANKA*ZSURYO FROM ZAIKO) SELECT * FROM ZAIKO X,USER1.ZAIKO Y
SELECT X.ENO FROM OSAKA.USER1.EMP X WHERE X.ENAME = N'イトウ エイイチ'
次の場合,列名又は繰返し列名を修飾なし表指定で修飾する必要があります。この修飾された列名又は繰返し列名を列指定といいます。
WITH QRY1(CLM1) AS (SELECT SNAME FROM ZAIKO), QRY2(CLM1) AS (SELECT SCODE FROM ZAIKO) SELECT CLM1 FROM QRY1,QRY2
WITH QRY1(CLM1) AS (SELECT SNAME FROM ZAIKO), QRY2(CLM1) AS (SELECT SCODE FROM ZAIKO) SELECT QRY1.CLM1,QRY2.CLM1 FROM QRY1,QRY2
ただし,列名は構文上,修飾できる場合とできない場合があります。各形式中の「列指定」と記述している箇所は,列名に修飾できます。「列名」と記述している箇所は,修飾できません。
列指定::=〔修飾なし表指定.〕{列名|繰返し列名〔[添字]〕}
添字::={整数|ANY}
列名を修飾なし表指定で修飾する場合,次に示す規則があります。
SELECT * FROM T11 WHERE T11.C2 >= ( SELECT AVG(C2) FROM T12 WHERE T12.C1 = 1 )
SELECT * FROM T2 WHERE C3 IN ( SELECT T11.C3 FROM T11,T12 WHERE T11.C1 = T12.C3 )
SELECT * FROM T2 WHERE C3 IN ( SELECT X.C3 FROM T11 X,T12 Y WHERE X.C1 = Y.C2 )
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.