WHERE 句の手始めとして、ある列の値が特定の値に一致するレコードに絞り込む方法を学びます。
"〇〇列の値が XX のレコードだけ欲しいなぁ" といった場合に使う、WHERE 句の基本中の基本です。
また、その WHERE 句を使うにあたって強く意識しないといけないのが列の型です。
WHERE 句で絞り込みを行う際に、型を意識した書き方ができていないと文法エラーとなって実行できないこともしばしば。
それではさっそく学んでいきましょう。
対象の列の値が文字型、日付型の場合
SELECT * FROM テーブル名 WHERE 列名 = "値";
対象の列の値が数値型の場合
SELECT * FROM テーブル名 WHERE 列名 = 値;
WHERE 句共通の書き方として大事なことは、FROM 句でテーブル名を指定した後に WHERE
と記すことです。
その WHERE 句の後に、特定の値に一致する行に絞り込む場合は、列名 = 値
を示します。
たったこれだけなのですが、大事なことは値を示すときに型を意識して書くこと。
対象の列の型が文字系・日付系の場合、列名 = "XX"
のように、値はダブルクォートで括ります。
対象の列の型が数値系の場合は、列名 = XX
のように、値はダブルクォートでは括りません。
なお、日付系を指定する際、対象が時刻まで登録できる列なら列名 = "年-月-日 時:分:秒"
で指定します。
対象が日付までしか登録できない列であれば、列名 = "年-月-日"
で指定します。
ところで、どの列がどの型なのかは事前に把握しておく必要があります。(※RDBMS にとって、列の型の把握の方法は異なりますので、ここでは割愛します。)
もしあなたがエンジニアでない場合は、どれが数値として、どれが文字として管理されているのかを推測するに留めてもよいでしょう。
SELECT * FROM products WHERE name = "apple";
SELECT * FROM users WHERE department_id = 5;
SELECT * FROM users WHERE birthday = "2010-06-10";
SELECT * FROM products WHERE updated_at = "2020-06-10 07:06:20";
試しに、SELECT 文で products テーブルから指定したレコードだけを取得してみましょう!
今、このページを開いている時点で既にあなたのための products テーブルが作られ、データも入っています。
もう SQL 文は入力してあるので実行ボタンを押してみてください。 products テーブルより、価格(price)が 2000 のレコードだけ表示されます。