C110 SQLの基本(条件付き取得)

データベースからデータを抽出する際に、特定の条件に当てはまるデータのみを抽出したい際にはWHERE句・HAVING句というものを用います。今回はこのWHERE句・HAVING句について紹介します。

条件付き取得の基本

userテーブル

Idnameclassmail
1山田Ayamada@example.com
2田中Btanaka@example.com
3佐藤Asato@example.com

WHERE句

下記のようにWHERE以下に条件を指定することで指定した条件に当てはまるレコードのみを抽出することができます。

SQL
SELECT
 フィールド名
FROM
 テーブル名
WHERE
 演算子を使って検索条件を指定

記の様に記載することでAクラスのユーザーのみを抽出することができます。

SQL
SELECT 
  name
FROM 
  user
WHERE
  class == 'A';

抽出結果

SQL
name
山田
佐藤

複数条件を指定したい際は下記のようにANDで条件をつなぐができます。

SQL
SELECT 
  name
FROM 
  user
WHERE
  class == 'A'
AND
  class == 'B';

抽出結果

SQL
name
山田
田中
佐藤

HAVING句

HAVING句はWHERE句と同じ挙動ですが、処理のタイミングがWHERE句の後になります。GROUP BY句というものを用いた際にGROUP BY句の処理が行われた際に、HAVING句の処理が行われるという順番になります。単に順番が違いだけなのでGROUP BY句のない際にHAVING句を用いる必要はないです。

例題

下記コードにより抽出される値は下記のうちどれか

SQL
SELECT 
  Id
FROM 
  user
WHERE
  mail == 'tanaka@example.com'
  1. 山田
  2. 1
  3. 田中
  4. 2
回答

4. 2

1. 抽出されるのは名前ではなくId
2. Idが1のユーザーのメールアドレスは”yamada@example.com”
3. 抽出されるのは名前ではなくId

エンジニアからのアドバイス

実際の現場でのWHERE句への条件指定は、より複雑化していきます。条件を整理し、演算子をよく理解して使えるように練習しましょう。

---