条件によって絞り込む WHERE句

条件によって絞り込む WHERE句

テーブルから、条件に当てはまるレコードだけを抽出するときの方法を説明します。条件の記述にはWHERE句を利用します。

WHERE句の基本構文

WHERE文の基本構文は以下の通りです。

WHERE 条件式

SELECT文、UPDATE文、DELETE文の中で使用します。条件式の部分には様々な条件を書くことが出来ます。

カラムが指定された値であるレコードを抽出する構文

値が等しい場合

WHERE カラム名=

『カラムが指定した値に等しい』という条件を表すには等号を用います。

例1
SQL
SELECT * FROM meibo WHERE id=1;
実行結果
idnamerubybirthdayemailheightweight
1山田太郎ヤマダタロウ1997-07-01yamada@example.com17180
例2

文字列型のカラムでも、等しいことを表すには等号を用います。文字列はシングルクォートで囲みます。

SQL
SELECT * FROM meibo WHERE name='碇シンジ';
実行結果
idnamerubybirthdayemailheightweight
2碇シンジイカリシンジ2003-06-06shinji@example.com15745
大小の比較

WHERE カラム名>値

値の大小を比較する場合には不等号を用います。不等号には以下の5種類があります。

記述意味
A>BAがBより大きい
A>=BAがB以上
A<BAがBより小さい
A<=BAがB以下
A<>BAとBが等しくない
例3.数値型の比較
SQL
SELECT * FROM meibo WHERE height>170;

テーブル:meiboから、身長(height)が170より大きいレコードを抽出します。

実行結果
idnamerubybirthdayemailheightweight
1山田太郎ヤマダタロウ1997-07-01yamada@example.com17180
2古代進コダイススム1997-10-31kodai@example.com17570
例4.日付型の比較
SQL
SELECT * FROM meibo WHERE birthday>'2001-01-01';

日付型や時刻型の場合、『後』になる日付・時刻の方が大きいと判定されます。

実行結果
idnamerubybirthdayemailheightweight
1碇シンジイカリシンジ2003-06-06shinji@example.com15745
2渡瀬青葉ワタセアオバ2001-09-17awatase@example.com17063

練習問題

以下の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を記述しなさい。

実行結果例
idnamepricenote
1いちご200ビタミンC,糖質
4ヨーグルト240糖質,アミノ酸,カルシウム,ビタミンB2

コメント

タイトルとURLをコピーしました