SELECT文とは
SELECT文とは、SQLの中でデータベースからデータを取得(検索・抽出)するために使われる最も基本的かつ重要な命令文です。テーブルから必要な列を選択する『SELECT』、対象のテーブルを指定する『FROM』を基本とし、条件を指定する『WHERE』、データをグループ化する『GROUP BY』、グループ化した後の絞り込みを行う『HAVING』、結果を並び替える『ORDER BY』などの機能(句)を組み合わせることで、欲しいデータを自在に取り出すことができます。
具体例
商品テーブルからカテゴリが「文房具」のものを抽出し、価格が安い順に並べ替えて商品名と価格を表示させるには、以下のようにSELECT文を組み立てます。
SELECT product_name, price
FROM products
WHERE category = '文房具'
ORDER BY price ASC;もう少し詳しく
SELECT文は、単にデータを引っ張ってくるだけでなく、データの集計や加工を自在に行うための強力な表現力を備えています。SELECT文を使いこなす上で特に重要なのが、コードを書く「記述順序」と、DBMSが内部で処理を行う「実行順序」が異なるという点です。
【記述順序】
1. SELECT 列名(抽出する列)
2. FROM テーブル名(データ元のテーブル)
3. WHERE 条件式(行の絞り込み)
4. GROUP BY グループ化する列(集計の単位)
5. HAVING グループに対する条件式(集計結果の絞り込み)
6. ORDER BY 並び替える列(出力順序の指定)
【DBMSの内部実行順序】
1. FROM(対象テーブルの確定)
2. WHERE(行のフィルタリング)
3. GROUP BY(行のグループ化)
4. HAVING(グループ化した後のフィルタリング)
5. SELECT(必要な列の切り出し、集計関数の適用)
6. ORDER BY(最終結果の並び替え)
この実行順序を理解していないと、「WHERE句でグループ集計関数(SUMやAVGなど)を使ってエラーになる」といった初歩的なミスに繋がります(WHEREが実行される時点ではまだグループ化や集計が行われていないためです)。
また、集計に役立つ代表的な「集計関数(列関数)」には、以下のようなものがあります。
・COUNT:行数をカウントする。
・SUM:指定した列の値の合計を算出する。
・AVG:平均値を算出する。
・MAX / MIN:最大値および最小値を見つける。
さらに、あいまい検索を行うための「LIKE演算子」も重要です。「%(0文字以上の任意の文字列)」や「_(任意の1文字)」といったワイルドカード文字を組み合わせることで、「名前が『田中』で始まる人(田中%)」や「メールアドレスに『example.com』が含まれる行(%example.com%)」といった柔軟な検索条件を指定することができます。
試験でのポイント
IT試験においては、SELECT文の記述ルールや各句の役割を理解し、目的のデータを得るための正しいSQL文を選択する、または空欄を埋める問題が多数出題されます。
試験対策としての重要ポイントは以下の通りです。
・WHEREとHAVINGの使い分け:最も頻出する論理の引っ掛けです。
- WHERE句:グループ化される「前」の行データに対して絞り込みを行います(集計関数は使えません)。
- HAVING句:GROUP BYによってグループ化された「後」の集計結果に対して絞り込みを行います(集計関数を使用します)。
・並び替え(ORDER BY):昇順は「ASC」、降順は「DESC」であることを暗記しましょう(デフォルトは省略するとASCになります)。
・重複の排除(DISTINCT):検索結果から重複する値を除外して一意にするために「SELECT DISTINCT 列名」という構文が使われる点も頻出です。
「SELECT文において、グループ化されたデータに対して条件を指定して絞り込むために使用する句はどれか」という問いに対しては、「HAVING」を選択します。
関連する用語
SELECT文を実行する対象である「関係データベース(RDB)」や、データベース操作言語の総称「SQL」、複数のテーブルを結合してSELECTする「結合(JOIN)」が関連します。また、SELECT文の基本構成要素である「WHERE句」や「GROUP BY句」「HAVING句」、結果の重複を排除する「DISTINCT」も重要な関連キーワードです。