<< 目次へ
更新日:2013.4.13
条件に合うレコードを抽出する
データベースの操作(正確にいえばテーブルの操作)において、最も基本的な作業が「特定の条件とマッチするレコードを抽出する」というものです。例えば、性別のカラムについて男性のレコードだけを抽出するとか、売上金額のカラムについて100000(円)以上であるレコードだけを抽出するといったことです。
試しに以下のデータテーブルから、
といった操作を行ってみましょう。
ID | 年齢 | グループ | 出身地 | 得点 |
001 | 10 | A | 群馬 | 10.223 |
002 | 20 | A | 神奈川 | 20.345 |
003 | 20 | C | 群馬 | 30.321 |
004 | 40 | B | 東京 | 10.894 |
005 | 30 | B | 東京 | 50.009 |
006 | 10 | C | 東京 | 40.332 |
007 | 50 | A | 埼玉 | 10.501 |
008 | 30 | B | 神奈川 | 40.444 |
009 | 20 | A | 埼玉 | 40.441 |
010 | 60 | A | 東京 | 20.004 |
■WHERE 基本構文
特定の条件にマッチするレコードを抽出するためにはWHERE構文を用いる。WHERE以降に抽出条件を記述する。
select * from [テーブル名] where [抽出条件];
■グループがAであるレコードだけを抽出
select * from jyuken where grp='A'; # ーーーーー 【実行例】 mysql> select * from jyuken where grp='A'; +------+------+------+--------+--------+ | id | age | grp | area | score | +------+------+------+--------+--------+ | 001 | 10 | A | 群馬 | 10.223 | | 002 | 20 | A | 神奈川 | 20.345 | | 007 | 50 | A | 埼玉 | 10.501 | | 009 | 20 | A | 埼玉 | 40.441 | | 010 | 60 | A | 東京 | 20.004 | +------+------+------+--------+--------+
■出身地が群馬県もしくは埼玉県であるレコードだけを抽出
select * from jyuken where area='群馬' or area='埼玉'; # ーーーーー 【実行例】 mysql> select * from jyuken where area='群馬' or area='埼玉'; +------+------+------+------+--------+ | id | age | grp | area | score | +------+------+------+------+--------+ | 001 | 10 | A | 群馬 | 10.223 | | 003 | 20 | C | 群馬 | 30.321 | | 007 | 50 | A | 埼玉 | 10.501 | | 009 | 20 | A | 埼玉 | 40.441 | +------+------+------+------+--------+
■年齢が50歳以上であるレコードだけを抽出
select * from jyuken where age>=50; # ーーーーー 【実行例】 mysql> select * from jyuken where age >= 50; +------+------+------+------+--------+ | id | age | grp | area | score | +------+------+------+------+--------+ | 007 | 50 | A | 埼玉 | 10.501 | | 010 | 60 | A | 東京 | 20.004 | +------+------+------+------+--------+
■年齢が20以上、50未満でかつ得点が30点以上であるレコードだけを抽出
select * from jyuken where (age>=20 and age<50) and score>=30; # ーーーーー 【実行例】 mysql> select * from jyuken where (age>=20 and age<50) and score>=30; +------+------+------+--------+--------+ | id | age | grp | area | score | +------+------+------+--------+--------+ | 003 | 20 | C | 群馬 | 30.321 | | 005 | 30 | B | 東京 | 50.009 | | 008 | 30 | B | 神奈川 | 40.444 | | 009 | 20 | A | 埼玉 | 40.441 | +------+------+------+--------+--------+