MySQLでWHEREを使ってレコードの抽出条件を指定する方法【初心者向け】

MySQLで【WHERE】を使ってレコードの抽出条件を指定する方法を初心者向けに解説した記事です。通常の抽出方法の他に、「and, or」を使った複合条件の指定、「like, %, _」を使ったあいまい検索も合わせて紹介。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

MySQLの初心者向けに、基本的な使い方を解説する記事です。

今回は、WHEREを使ったレコードの抽出条件について解説します。

なお本記事は、MySQLを扱うTechAcademyのPHPオンライン講座の内容をもとにしています。

 

今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。

 

目次

本記事は下記の流れで解説します。

 

おさらい

レコードは、以下の基本形式で抽出することができました。

select フィールド名 from テーブル名;

 

実際に以下のuserというテーブルから、username とemail のレコードだけを抽出してみます。

基本

 

select username,email from user;

select username,email

できました。

 

今は2つのフォールドだけを抽出しましたが、「*」 を使うと、すべてを抽出するという意味になります。覚えておきましょう。

select * from user;

select user

 

 

[PR] MySQLで挫折しない学習方法を動画で公開中

WHEREを使って抽出条件を指定する

さらに、さきほどの基本形式に続けてWHEREの構文を使えば、条件を指定してレコードを抽出することができます。

 

select フィールド名 from テーブル名 where フィールド名 比較演算子 値;

 

例えば、「idのフィールドから3以上のものを抽出する」という条件を指定したいときは次のようになります。

select * from user where id >= 3;

>=3

このようにidが3以上のレコードが抽出されました。

 

この3以上といった、比較演算子には =, <, >, <=, >= があります。

>= ではなく、 = を使えば、当然idが3のレコードが抽出されます。

=3

これがWHERE文を使った条件の指定になります。

 

大石ゆかり

特定のフィールドだけ抽出することが出来るんですね。

田島悠介

そうなんだ。アスタリスク(*)を使うと全部のフィールドって意味になるよ。

大石ゆかり

前に使いましたね。データの抽出条件を指定してみたいんですが。

田島悠介

それにはwhereを使うんだ。andやorは、何かのプログラミング言語を使ったことがある人にはおなじみかな。

 

複合条件の指定(and, or)

and or を使えば条件を複合的に増やすこともできます。

 

例として、「idが3以上で、なおかつ、username が tanaka のもの」を取得します。

select * from user where id >= 3 and username = ‘tanaka’;

スクリーンショット 2015-01-14 17.08.53

 

また、or を使うと、どちらかの条件に合うものを抽出することができます。

idが3以上、または、username が tanaka のもの」を取得します。

select * from user where id >= 3 or username = ‘tanaka’;

スクリーンショット 2015-01-14 17.12.30

以上が、複合条件 and と or になります。

 

 

あいまい検索(like, %, _)

最後に、あいまい検索というものを解説します。

さきほどまでは、username が tanaka のものなど、抽出対象がはっきりしているものをとりだしましたが、たとえば頭文字しかわからないような曖昧なものでもlike, %, _を使えば抽出することができます。

 

「idが3以上で、usernameの頭文字が「ta」の人」を取得したいときは、このように書きます。

select * from user where id >= 3 and username  like ‘ta%’;

スクリーンショット 2015-01-14 17.23.22

「%」は ta に続く任意の0以上の文字列をあらわし、「_」はta に続く任意の1文字をあらわします。

 

おわりに

以上のように、select とwhere を使えば、条件を指定して所得したいレコードを抽出することができます。

 

大石ゆかり

whereだけじゃなくて、likeもあるんですね。

田島悠介

likeはある文字を含んでいるか~に使うんだ。

大石ゆかり

andやorは、だいたい他のプログラミング言語と同じですね。

田島悠介

そうそう。andは左右の条件が一致してる場合のみ、orはどちらかが一致している場合だね。次回並び替えについてやるんだけど、価格の小さい順とか人気のある順などに並び替えられるようになるよ。

 

MySQLを勉強していて、
・もっと効率的に勉強したい
・誰かに聞きながら学びたい
・自分でWebサービスを作りたい
と思ったことはないでしょうか?

そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。