目次
前回のおさらい
前回の記事では、以下のusersテーブルに対して、
id | name | gender | age | created_at |
---|---|---|---|---|
1 | 太郎 | 男性 | 40 | 2022-1-1 12:20:48 |
2 | よしお | 男性 | 31 | 2022-1-1 15:40:39 |
3 | SAKI | 女性 | 34 | 2022-1-2 06:00:21 |
4 | れいか | 女性 | 30 | 2022-1-3 10:00:40 |
5 | ジム | 男性 | 29 | 2022-1-3 10:06:01 |
以下のクエリ(SQLで書かれた、データベースへの命令文のこと)を書くことで、
SELECT
name
FROM
users
以下の登録ユーザー名を抽出しましたね!
name |
---|
太郎 |
よしお |
SAKI |
れいか |
ジム |
ただ、このクエリだと、全ての登録ユーザー名が抽出されてしまいます。
では、女性の登録ユーザー名のみが知りたい場合は、どんなクエリを書けば良いでしょうか?
この記事では、「データの絞り込み」について勉強していきましょう!
まずは抽出の流れを理解しよう
①テーブルを選ぶ
始めに、ユーザー名が格納されている、以下のusersテーブルを選びます。
ここまでは、前回と同じですね!
id | name | gender | age | created_at |
---|---|---|---|---|
1 | 太郎 | 男性 | 40 | 2022-1-1 12:20:48 |
2 | よしお | 男性 | 31 | 2022-1-1 15:40:39 |
3 | SAKI | 女性 | 34 | 2022-1-2 06:00:21 |
4 | れいか | 女性 | 30 | 2022-1-3 10:00:40 |
5 | ジム | 男性 | 29 | 2022-1-3 10:06:01 |
②テーブルのデータを絞り込む
このタイミングで、先ほどのusersテーブルを女性登録ユーザーだけに絞り込みます。
これは言い換えると、
genderカラムが女性のレコードのみに絞る
といえますね。
このように絞り込んだ結果、テーブルは以下のようになります。
id | name | gender | age | created_at |
---|---|---|---|---|
3 | SAKI | 女性 | 34 | 2022-1-2 06:00:21 |
4 | れいか | 女性 | 30 | 2022-1-3 10:00:40 |
③抽出したいデータを選ぶ
最後に、先ほど女性だけに絞り込んだusersテーブルで、nameカラムを選んで抽出完了です!
name |
---|
SAKI |
れいか |
抽出の流れはイメージできましたか?
それでは、具体的なSQLの書き方に移りましょう!
SQLで抽出してみよう
①FROMでテーブルを選ぶ
テーブルを選ぶ際は、FROM テーブル名
と書く必要がありましたね!
今回はusersテーブルからデータを抽出するので、以下のように書きましょう。
FROM
users
②WHEREでテーブルを絞り込む
さて、WHERE
という新しい単語が出てきましたね。FROM テーブル名
の後ろに WHERE 絞り込み条件
と書くことで、テーブルを絞り込むことができます!
今回は、genderカラムが女性のレコードだけに絞り込みたいので、以下のように書きます。
FROM
users
WHERE
gender = "女性"
このように、gender と "女性" を 「=」で繋いで
gender = "女性"
と書くことで、
genderカラムが「女性」という値である
という絞り込み条件ができました。
これで、genderカラムが「女性」のレコードだけに絞ることができました!
※ 絞り込み条件には様々な書き方があるので、後で詳しくご説明します!
③SELECTで抽出したいデータを選ぶ
テーブル内のカラムを選ぶ際は、SELECT カラム名
と書く必要がありましたね。
今回はユーザー名が知りたいので、nameカラムを抽出しましょう。
SELECT
name
FROM
users
WHERE
gender = "女性"
これでSQL文が完成しました!
この SELECT
, FROM
, WHERE
の三つの単語は、クエリを書く上でほぼ100%使う単語なので、ぜひ覚えておきましょう!
(毎日風呂に入りながら「セレクト、フロム、ウェアー」「セレクト、フロム、ウェアー」と呪文のように唱えると、暗記しやすいのでおすすめです(笑))
WHERE句の書き方例
id | name | gender | age | created_at |
---|---|---|---|---|
1 | 太郎 | 男性 | 40 | 2022-1-1 12:20:48 |
2 | よしお | 男性 | 31 | 2022-1-1 15:40:39 |
3 | SAKI | 女性 | 34 | 2022-1-2 06:00:21 |
4 | れいか | 女性 | 30 | 2022-1-3 10:00:40 |
5 | ジム | 男性 | 29 | 2022-1-3 10:06:01 |
上記のusersテーブルを例に、絞り込み条件の書き方を7つご紹介します!
ぜひ、それぞれの抽出条件でどのようにテーブルが絞り込まれるのか、予想してみてください!
例1) id = 3
例2) name = "よしお"
例3) age > 30
例4) age >= 30
例5) age <= 30
例6) created_at < "2022-1-3 00:00:00"
例7) gender = "男性" and age = 40
練習問題
id | name | gender | age | created_at |
---|---|---|---|---|
1 | 太郎 | 男性 | 40 | 2022-1-1 12:20:48 |
2 | よしお | 男性 | 31 | 2022-1-1 15:40:39 |
3 | SAKI | 女性 | 34 | 2022-1-2 06:00:21 |
4 | れいか | 女性 | 30 | 2022-1-3 10:00:40 |
5 | ジム | 男性 | 29 | 2022-1-3 10:06:01 |
練習問題①
usersテーブルの中から、男性かつ30歳以上のnameカラムの値を抽出するクエリを書いてください。
練習問題②
usersテーブルの中から、
女性 かつ 30歳未満 かつ 2022年1月3日00時00分00秒以降に作成されたレコードの、nameカラムの値を抽出するクエリを書いてください。
これでデータの絞り込み条件については学習完了です!
「WHERE」は今後も使用頻度が高いので、ぜひ「SELECT」「FROM」とのセットで覚えておきましょう!
(今日中に、「セレクト、フロム、ウェアー」の呪文を100回唱えましょう)