条件によって絞り込む WHERE句
テーブルから、条件に当てはまるレコードだけを抽出するときの方法を説明します。条件の記述にはWHERE句を利用します。
WHERE句の基本構文
WHERE文の基本構文は以下の通りです。
WHERE 条件式
SELECT文、UPDATE文、DELETE文の中で使用します。条件式の部分には様々な条件を書くことが出来ます。
カラムが指定された値であるレコードを抽出する構文
値が等しい場合
WHERE カラム名=値
『カラムが指定した値に等しい』という条件を表すには等号を用います。
例1
SQL
SELECT * FROM meibo WHERE id=1;実行結果
| id | name | ruby | birthday | height | weight | |
|---|---|---|---|---|---|---|
| 1 | 山田太郎 | ヤマダタロウ | 1997-07-01 | yamada@example.com | 171 | 80 |
例2
文字列型のカラムでも、等しいことを表すには等号を用います。文字列はシングルクォートで囲みます。
SQL
SELECT * FROM meibo WHERE name='碇シンジ';実行結果
| id | name | ruby | birthday | height | weight | |
|---|---|---|---|---|---|---|
| 2 | 碇シンジ | イカリシンジ | 2003-06-06 | shinji@example.com | 157 | 45 |
大小の比較
WHERE カラム名>値
値の大小を比較する場合には不等号を用います。不等号には以下の5種類があります。
| 記述 | 意味 |
|---|---|
| A>B | AがBより大きい |
| A>=B | AがB以上 |
| A<B | AがBより小さい |
| A<=B | AがB以下 |
| A<>B | AとBが等しくない |
例3.数値型の比較
SQL
SELECT * FROM meibo WHERE height>170;テーブル:meiboから、身長(height)が170より大きいレコードを抽出します。
実行結果
| id | name | ruby | birthday | height | weight | |
|---|---|---|---|---|---|---|
| 1 | 山田太郎 | ヤマダタロウ | 1997-07-01 | yamada@example.com | 171 | 80 |
| 2 | 古代進 | コダイススム | 1997-10-31 | kodai@example.com | 175 | 70 |
例4.日付型の比較
SQL
SELECT * FROM meibo WHERE birthday>'2001-01-01';日付型や時刻型の場合、『後』になる日付・時刻の方が大きいと判定されます。
実行結果
| id | name | ruby | birthday | height | weight | |
|---|---|---|---|---|---|---|
| 1 | 碇シンジ | イカリシンジ | 2003-06-06 | shinji@example.com | 157 | 45 |
| 2 | 渡瀬青葉 | ワタセアオバ | 2001-09-17 | awatase@example.com | 170 | 63 |
練習問題
以下のSQLをphpmyadminのSQL欄に貼りつけて実行してください。
SQL
USE dbkiso1;
DROP TABLE IF EXISTS `ex_shohin`;
CREATE TABLE `ex_shohin` (
`id` int(11) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`price` int(11) DEFAULT NULL,
`note` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
INSERT INTO `ex_shohin` (`id`, `name`, `price`, `note`) VALUES
(1, 'いちご', 200, 'ビタミンC,糖質'),
(2, 'ニンジン', 180, 'βカロテン,ビタミンB1,ビタミンB2'),
(3, 'サラダ菜', 160, 'βカロテン,ビタミンK'),
(4, 'ヨーグルト', 240, '糖質,アミノ酸,カルシウム,ビタミンB2');
テーブル ex_shohin から、価格が200円以上(priceの値が200以上)のレコードを抽出するSQLを記述しなさい。
実行結果例
| id | name | price | note |
|---|---|---|---|
| 1 | いちご | 200 | ビタミンC,糖質 |
| 4 | ヨーグルト | 240 | 糖質,アミノ酸,カルシウム,ビタミンB2 |


コメント