スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス
検索の対象となる一つ又は複数の表や,内結合する表,外結合する表,又は問合せ式のWITH句中に指定した問合せ名を指定します。また,表を検索,又は結合するときの条件(探索条件やグループ分け)が指定できます。表式は副問合せ及び問合せ指定中,又は1行SELECT文中に指定します。
FROM 表参照〔,表参照〕… 〔WHERE 探索条件〕 〔GROUP BY 値式〔,値式〕…〕 〔HAVING 探索条件〕 |
検索する表,問合せ名,導出表,又は結合表を指定します。表参照については,「2.6 表参照」を参照してください。
探索条件を省略すると,表(指定した表,結合表,導出表,及びWITH句中の導出問合せ式から問合せ名として導出された表)から導き出されるすべての行が検索されます。
探索条件中に,埋込み変数を指定できます。PREPARE文で前処理をするSELECT文中では,埋込み変数の代わりに?パラメタを指定します。SQL手続き中では,SQL変数又はSQLパラメタを使用します。Java手続き中については,マニュアル「HiRDB Version 8 UAP開発ガイド」のJDBCドライバを参照してください。
グループ分けでは,GROUP BY句で指定した値式のすべての結果の値が同一の行をそれぞれ一つのグループとして分け,その結果をグループごとに1行にして出力します。
選択式には,グループ分けする列の名称,集合関数,定数,若しくはこれらを一次子とする値式,又はグループ分けをする値式だけ指定できます。すなわち,グループ分けする値式(値式が列指定の場合を除く)を一次子として含む値式は指定できません。なお,GROUP BY句で指定した値式をグループ化列といいます。
GROUP BY句についての規則を次に示します。
集合関数(AVG,MAX,MIN,SUM,COUNT及びCOUNT_FLOAT)を指定できます。
HAVING句についての規則を次に示します。
検索する表,問合せ名,導出表,又は結合表を指定します。表参照については,「2.6 表参照」を参照してください。
FROM句に複数の表を追加した場合,各表から1行ずつ組み合わせて指定した表の順序に連結した行がFROM句の結果の表の行になり,その行数は各表の行数の積になります。
副問合せ中の探索条件中の列指定は,副問合せの外側で指定した表の列を参照できます。
問合せが入れ子の場合,内側の問合せから外側の問合せで指定している表(の列)を参照することを,外への参照をするといいます。
WHERE句についての規則を次に示します。
GROUP BY句に指定する列は,そのGROUP BY句がある表式中のFROM句で指定している表を参照してください。
グループ分けでは,GROUP BY句で指定した値式のすべての結果の値が同一の行をそれぞれ一つのグループとして分け,その結果をグループごとに1行にして出力します。
選択式には,グループ分けする列の名称,集合関数,定数,若しくはこれらを一次子とする値式,又はグループ分けをする値式だけ指定できます。すなわち,グループ分けする値式(値式が列指定の場合を除く)を一次子として含む値式は指定できません。なお,GROUP BY句に指定した値式をグループ化列といいます。
また,値式に列指定以外を指定した場合,選択式に指定したスカラ副問合せ中からそのグループ化列を参照することはできません。
GROUP BY句についての規則を次に示します。
HAVING句は,先行するGROUP BY句,WHERE句,又はFROM句の結果,得られる各グループを選択する条件を指定します。ただし,GROUP BY句を指定しないと,WHERE句,又はFROM句の結果はグループ化列を持たない一つのグループになります。
HAVING句についての規則を次に示します。
一つのFROM句に複数の表,又は問合せ名を指定した検索(複数の表にわたる検索)を結合といいます。
SELECT SUM(ZSURYO) FROM ZAIKO WHERE TANKA >= (SELECT AVG(TANKA) FROM ZAIKO)
表A(外表)は商品の単価の表,表B(内表)は受注のあった商品の受注量の表です。
SELECT A.SCODE,TANKA,JSURYO FROM A LEFT OUTER JOIN B ON A.SCODE = B.SCODE WHERE TANKA > 200
SELECT A.SCODE,TANKA,JSURYO FROM A LEFT OUTER JOIN B ON A.SCODE = B.SCODE AND JSURYO >= 40
SELECT A.SCODE,TANKA,JSURYO FROM A LEFT OUTER JOIN B ON A.SCODE = B.SCODE AND TANKA >= 400
SELECT A.SCODE,A.TANKA,B.JSURYO,C.SENRYO FROM A LEFT OUTER JOIN B ON A.SCODE=B.SCODE AND B.JSURYO >= 40 LEFT OUTER JOIN C ON A.SCODE=C.SCODE AND C.SENRYO <= 30 WHERE A.TANKA <= 500
SELECT A.SCODE,A.TANKA,B.JSURYO,C SENRYO FROM A LEFT OUTER JOIN B ON A.SCODE = B.SCODE AND A.TANKA <= 400 LEFT OUTER JOIN C ON A.SCODE = C.SCODE AND A.TANKA <= 400
SELECT A.SCODE,100.0*B.JSURYO/C.SENRYO FROM A LEFT OUTER JOIN (B INNER JOIN C ON B.SCODE=C.SCODE) ON A.SCODE = B.SCODE
SELECT SCODE,TANKA*JSURYO,TANKA*SENRYO FROM(SELECT A.SCODE,A.TANKA,B.JSURYO,C.SENRYO FROM A LEFT OUTER JOIN B ON A.SCODE = B.SCODE LEFT OUTER JOIN C ON A.SCODE = C.SCODE) AS DT1(SCODE,TANKA,JSURYO,SENRYO)
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.