6.5.2 SELECT文
応用情報技術者試験まで残り63日。
以下のテキストを読み進めていきます。
平成29年度【春期】【秋期】応用情報技術者 合格教本 (情報処理技術者試験)
- 作者: 大滝みや子,岡嶋裕史
- 出版社/メーカー: 技術評論社
- 発売日: 2016/12/15
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
SELECT文の構文
SELECT文の基本構文は以下の通りになっています。
- SELECT (列名のリスト)
- FROM (表名のリスト)
- WHERE (選択条件や結合条件)
- GROUP BY (列名のリスト)
- HAVING (グループ選択条件)
- ORDER BY 列名のリスト
特定行、列を取り出す
特定行を取り出す場合には、WHERE句に選択条件を記述します。
特定列を取り出す場合には、SELECT の後ろに列名を記述します。全列取り出す場合は*を指定しましょう。
選択条件として、列の値が空値であるかを記述する際には WHERE 列名 IS NULLと記述します。
値の範囲指定をしたい場合には、BETWEENを使います。
例えば、
SELECT 社員コード,社員名
FROM 社員表
WHERE 年齢 BETWEEN 24 AND 28;
列の値が指定された値のいずれかと等しいかを選択条件とする場合にINを使います。
そして、等しくないことを選択条件にする場合は、NOT INを使います。
重複行の排除
重複行の排除には、DISTINCT述語を使います。
出力順序を指定する
ORDER BY句を使って、特定の列の値で昇順、降順で並び替えて表示する。
降順の場合は、DESC、昇順の場合はASCを記述する。
グループ化する
取り出した行を指定した行でグループ化し、グループごとの合計や最大値を求める場合に、GROUP BYを使います。
例えば、社員表から2人以上が属する所属ごとに、所属、人数、年齢の平均を求める。
SELECT 所属,count(*), AVG(年齢)
FROM 社員表
GROUP BY 所属
HAVING COUNT(*) >= 2;
SQLでは、以下の集合関数を使用出来ます。
- SUM(列名)
- AVG(列名)
- MAX(列名)
- MIN(列名)
- COUNT(*)
- COUNT(列名)
結合する
JOIN ONを用いて表の結合を行えます。
表に別名をつける
FROM句で表名 AS 別名を指定することで、表名に対して別名を設定することができる。
例: 社員表にA エントリ表にBという別名をつける例
SELECT A.社員コード, 社員名
FROM 社員表 A, エントリ表 B
WHERE A.社員コード = B.社員コード
副問合せ
SELECT文のFROM句、WHERE句、HAVING句などに指定されてる入れ子になったSELECT文を副問合せという。
例:
SELECT 社員コード,社員名,年齢
FROM 社員表
WHERE 年齢 IN (SELECT 指定年齢 FROM 調査対象)
副問合せにはEXISTS述語とANY述語を使用して表すことも出来る。