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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

監修してくれたメンター

nakamoto

アジマッチ有限会社代表取締役社長。書籍化歓迎。対応業務:PHP(Laravel)、機械学習、Vue.js、LAMP・AWS、越境EC、CTO、エンジニア採用、CTO、経営者の不安解決コンサルティング。

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

今回は、WHEREを使ったレコードの抽出条件について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

WHEREを利用すると、条件を指定してレコードを抽出できます。

実務でも、イイねの数が1000件以上のデータを抽出する時などに利用するので、ぜひ学習してみてください。

 

目次

1時間でできる無料体験!

 

そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

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

 

データ抽出の基本

レコードは、以下の基本形式で抽出できます。

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

特定のレコードのみ抽出

userというテーブルから、username とemail のレコードだけを抽出する方法を解説します。

初期状態の表示

次のコマンドで初期状態のuserテーブルを抽出します。

「*」 はすべてを抽出するという意味です。

select * from user;

基本

usernameとemailレコードのみ抽出

次のコマンドで、usernameとemailレコードのみ抽出できます。

select username,email from user;

select username,email

 

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

WHEREの構文を使えば、条件を指定してレコードを抽出できます。

WHEREの基本構文

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

idのフィールドから3以上のレコードを抽出する

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

コマンド

select * from user where id >= 3;

実行結果

>=3

解説

select * from user where id >= 3;では、idが3以上のレコードが抽出しています。

select * ですべてのレコードを抽出指定しています。

from userでは、userテーブルを抽出指定しています。

where id >= 3では、idの値が3以上のレコードをwhereで抽出指定しています。

3以上といったコマンドは比較演算子を利用します。

比較演算子には =, <, >, <=, >= があります。

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

 

idが3のレコードのみ抽出するコマンド

select * from user where id = 3;

idが3のレコードのみ抽出する表示結果

=3

 

[PR] プログラミング入門で挫折しない学習方法を動画で公開中

比較演算子

基本的な比較演算子の例を一覧で解説します。

比較演算子 構文例 処理の意味
= a = b a と b は等しい
<=> a <=> b a と b はNULLの場合も含め等しい
<> a <> b a と b は等しくない
!= a != b a と b は等しくない
< a < b a が b よりも小さい
<= a <= b a が b 以下
> a > b a が b よりも大きい
>= a >= b a が b 以上

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

田島悠介

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

 

コラム

実は私も!?独学で損する人の特徴

「スクールは高いから独学で成功する」という気持ちの方は多いと思います。
もちろんその方が金額は低く抑えられるでしょう。
ただ 独学には向き不向きがあり、実はスクールが向いている人も大勢います。

そんな方のために参考として、 テックアカデミー卒業生がスクールを選んだ理由 をご紹介します。

  • ・困って挫折しそうなときに、質問や相談できる相手がいる環境で学んでいきたいなと思った
  • ・わかった気になっているだけだったので、自分を追い込む環境に置いた方がいいと感じた
  • ・スクールのカリキュラムで市場に求められるスキルを学ぶべきと思った

少しでも当てはまる部分があれば、 スクールが向いているかもしれません。
お試しのつもりで、まずは一度 無料相談 に参加してみませんか?

現役エンジニア・デザイナーに何でも気軽に相談できる30分すべて無料で できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

今なら相談した方限定の割引・参加特典付き! 無料相談はこちら

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

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

 

idが3以上、かつ、username が tanaka のレコードを抽出する例

今回は、「idが3以上、かつ、username が tanaka のレコード」を取得します。

コマンド

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

実行結果

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

解説

select * from user where id >= 3 and username = ‘tanaka’;では、「idが3以上、かつ、username が tanaka のレコード」を取得しています。

select * from user where id >= 3では、idが3以上のレコードを抽出しています。

select * ですべてのレコードを抽出指定しています。

from userでは、userテーブルを抽出指定しています。

where id >= 3では、idの値が3以上のレコードをwhereで抽出指定しています。

3以上といったコマンドは比較演算子を利用します。

and username = ‘tanaka’では、なおかつ、username が tanaka のレコードという指定をしています。

 

idが3以上、または、username が tanaka のレコード

ここでは、「idが3以上、または、username が tanaka のレコード」を取得します。

コマンド

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

実行結果

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

解説

select * from user where id >= 3 or username = ‘tanaka’;では、「idが3以上、または、username が tanaka のレコード」を取得しています。

select * from user where id >= 3では、idが3以上のレコードが抽出しています。

select * ですべてのレコードを抽出指定しています。

from userでは、userテーブルを抽出指定しています。

where id >= 3では、idの値が3以上のレコードをwhereで抽出指定しています。

3以上といったコマンドは比較演算子を利用します。

or  username = ‘tanaka’では、または、username が tanaka のレコードという指定をしています。

 

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

今回は、あいまい検索を解説します。

たとえば頭文字しかわからないような曖昧なものでもlike, %, _を使えばあいまい検索で抽出できます。

 

「idが3以上で、usernameの頭文字が「ta」の人」をあいまい検索で抽出

ここでは、「idが3以上で、usernameの頭文字が「ta」の人」をあいまい検索で抽出します。

コマンド

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

実行結果

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

解説

select * from user where id >= 3 and username  like ‘ta%’;では、idが3以上で、usernameの頭文字が「ta」の人をあいまい検索で抽出しています。

select * from user where id >= 3では、idが3以上のレコードを抽出しています。

select * ですべてのレコードを抽出指定しています。

from userでは、userテーブルを抽出指定しています。

where id >= 3では、idの値が3以上のレコードをwhereで抽出指定しています。

3以上といったコマンドは比較演算子を利用します。

and username  like ‘ta%’;では、なおかつ、username が taではじまるレコードを指定しています。

likeはあいまい検索を指定を意味します。

‘ta%’;の「%」は ta に続く任意の0以上の文字列をあらわしています。

もし、「%」の部分が、「_」であれば、ta に続く任意の1文字をあらわします。

 

1時間でできる無料体験!

おわりに

今回は、MySQLのselectを利用した基本的なデータ抽出処理を解説しました。

WHERE を使えば、条件を指定して取得したいレコードを抽出することができました。

andやorを利用することで、WHEREを利用した条件に別の条件を加えることができました。

likeを利用したあいまい検索を利用することで、データの中身が不明確な場合でも、一部の文字を手がかりに抽出することができました。

MySQLでSELECTを使ってデータを取得・確認する方法 を参考にしていただくと、さらにスキルアップできます。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

田島悠介

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

 

プログラミングを学習中の方へ

これで解説は終了です、お疲れさまでした。

  • つまずかず「効率的に」学びたい
  • 副業や転職後の「現場で使える」知識やスキルを身につけたい

プログラミングを学習していて、このように思ったことはありませんか?

テックアカデミーのWebアプリケーションコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に践的なスキルを完全オンラインでしっかり習得できます。

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、あなただけのオリジナルWebアプリケーションを作れます。

まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。

時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、現役エンジニア講師とマンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう 厳しい試験を通過した講師 があなたの相談に真摯に向き合います。

「ただ気になることを相談したい」
「漠然としているがプロの話を聞いてみたい」

こんな気持ちでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する