icon
icon

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

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

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

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分か60分お好きな時間が選べて、かつ3回まで すべて無料で ご利用できます。
無理な勧誘は一切ない ので、お気軽にご参加ください。

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

複合条件の指定(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週間限定)

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