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件以上のデータを抽出する時などに利用するので、ぜひ学習してみてください。
目次
そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。
今回の記事の内容は動画でもご覧いただけます。
テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。
データ抽出の基本
レコードは、以下の基本形式で抽出できます。
select フィールド名 from テーブル名;
特定のレコードのみ抽出
userというテーブルから、username とemail のレコードだけを抽出する方法を解説します。
初期状態の表示
次のコマンドで初期状態のuserテーブルを抽出します。
「*」 はすべてを抽出するという意味です。
select * from user;
usernameとemailレコードのみ抽出
次のコマンドで、usernameとemailレコードのみ抽出できます。
select username,email from user;
WHEREを使って抽出条件を指定する
WHEREの構文を使えば、条件を指定してレコードを抽出できます。
WHEREの基本構文
select フィールド名 from テーブル名 where フィールド名 比較演算子 値;
idのフィールドから3以上のレコードを抽出する
例えば、「idのフィールドから3以上のレコードを抽出する」という条件を指定したいときは次の通りです。
コマンド
select * from user where id >= 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のレコードのみ抽出する表示結果
比較演算子
基本的な比較演算子の例を一覧で解説します。
比較演算子 | 構文例 | 処理の意味 |
---|---|---|
= | 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は、何かのプログラミング言語を使ったことがある人にはおなじみかな。
複合条件の指定(and, or)
and やor を使えば、条件を複合的に増やすこともできます。
idが3以上、かつ、username が tanaka のレコードを抽出する例
今回は、「idが3以上、かつ、username が tanaka のレコード」を取得します。
コマンド
select * from user where id >= 3 and username = 'tanaka';
実行結果
解説
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';
実行結果
解説
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%';
実行結果
解説
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文字をあらわします。
おわりに
今回は、MySQLのselectを利用した基本的なデータ抽出処理を解説しました。
WHERE を使えば、条件を指定して取得したいレコードを抽出することができました。
andやorを利用することで、WHEREを利用した条件に別の条件を加えることができました。
likeを利用したあいまい検索を利用することで、データの中身が不明確な場合でも、一部の文字を手がかりに抽出することができました。
MySQLでSELECTを使ってデータを取得・確認する方法 を参考にしていただくと、さらにスキルアップできます。
whereだけじゃなくて、likeもあるんですね。
likeはある文字を含んでいるか~に使うんだ。
andやorは、だいたい他のプログラミング言語と同じですね。
そうそう。andは左右の条件が一致してる場合のみ、orはどちらかが一致している場合だね。次回並び替えについてやるんだけど、価格の小さい順とか人気のある順などに並び替えられるようになるよ。
プログラミングを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
プログラミングを学習していて、このように思ったことはありませんか?
テックアカデミーのWebアプリケーションコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、あなただけのオリジナルWebアプリケーションを作れます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!