SELECT (SQL)
表示
SELECT句
SELECT文において必須の構成句。指定列を記述することで、列を射影する。*で全列表示できる。また、算術演算子、グループ関数が使用可能。
- 入力規則
列名入力規則の主なものとしては
- 列名に使用できる文字は半角英数字および、$,#,_(アンダースコア)のみ。但し、一部のDBMSにおける日本語版に限り全角文字が使用可能。
- 列名の先頭は半角アルファベットのみ。
- 文字上限は半角30文字まで。
- デフォルトは大文字で表示される。小文字などで表示したい場合は単一行関数を用いるか、" "で括るなどの処置が必要である。
- 各種DBMSにおける予約語は使用できない場合がある。
- 列別名
- 列名 [AS] 列別名 (ASは省略可)
で、列別名表示ができる。但し、WHERE句、GROUP BY句、HAVING句では列別名の記述はできない。また、列名の表示に際して、デフォルトは半角英大文字である。これを小文字などで表示させたい場合、単一行関数の文字関数を使用するか、" "で括るかするとよい。
- ALL/DISTINCTの指定
- ALL...テーブルに同じデータ行がある場合でもすべてのデータを返す。指定がない場合はALLが選択される
- DISTINCT(UNIQUE)...テーブルに同じデータ行がある場合、重複を取り除いた1件のみを返す.
- グループ関数はCOUNTのみ使用可能。
- 単一行関数
- 単一の行を操作する関数で、一つの行に対し、一つの結果を返していく関数。SELECT句、WHERE句、ORDER BY句で使用可能で、以下の種類がある。また、ネスト(入れ子)に制限はない。
- 文字関数
- 文字を操作する関数。LOWER,UPPER,INITCAP,CONCAT,SUBSTR,INSTR,LENGTH,TRIM,REPLACEなどがある。
- 数値関数
- 数値を操作する関数。ROUND(四捨五入)、TRUNC(切り捨て)、MOD(剰余)がある。
- 日付関数
- 日付を操作する関数。
- データ型変換関数。
- 特定のデータ型を特定のデータ型に変換できる。TO_CHAR,TO_NUMBER,TO_DATEがある。
- グループ関数
- グループ化を行った行に対して一つの結果を返す関数。SELECT句(但し、GROUP BY句で指定した列のみ)、HAVING句、ORDER BY句で使用可能。ネストは2段まで可能である。種類としてはAVG(平均値),MAX(最大値)、MIN(最小値)、SUM(合計)、COUNT(返される行数)などがある。
- 集合演算
- 複数表から問合わせ結果を参照する複合問合わせを行うための演算子を用いた構文のこと。UNION(和集合)、UNION ALL(全集合)、INTERSECT(積集合)、EXCEPTまたはMINUS(差分集合)があるが、DBMS環境によって使用できないものや演算子の名称が異なるものもある。各演算子における優先順位はなく、左から右に、順番に処理される。
主な条件として
- 問い合わせる行を一致させる必要がある。
- 各SELECT句に対応する行のデータ型の種類を一致させる必要がある(一部データ型において互換性は持つ)。
- データサイズは一致していなくても良い。
- ある条件を満たせば、列名は異なっていても構わない。
- UNION ALL以外はソートされて返される。デフォルトは前文の第1列が基準となる。