MySQLでSELECTを使ってデータを取得・確認する方法【初心者向け】

MySQLで「データを取得・確認する方法」を初心者向けに解説した記事です。データを取得するには【SELECT】の構文を使います。MySQLの基本中の基本ですので、しっかりと覚えておきましょう。

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

監修してくれたメンター

井上 祐介

NEC・Microsoftの認定インストラクター。Z80アセンブラ・C++・C#・PHP・JAVAなどの経験を経て業務で使用するプログラムの開発や新入社員プログラミング研修の講師を行った。

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

今回は、MySQLでSELECTを使ってデータを取得・確認する方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

SELECT文はMySQLの基本中の基本ですので、しっかりと覚えておきましょう。

他のレコードの操作方法は下記の記事をご覧ください。

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

目次

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

 

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

 

大石ゆかり

田島メンター!ブログなどにアクセスしたとき、最新の5件の記事などが表示されてますけど、あれはどうやってるんですか?

田島悠介

SELECT文でデータベースから、データを取得して表示してるんだよ。

大石ゆかり

SELECT文は検索に使うSQLなんですか?

田島悠介

そうなんだ。SELECT文の書き方を見てみよう!

 

レコードを取得・確認する

MySQLでINSERT INTOを使ってレコードを追加する方法では、最終的に次のような情報が入ったテーブルを作るため、sampledb というデータベース上でuser テーブルを作り、レコードを1つ追加しました。

テーブル表

 

ここでは、userテーブルに実際にレコードが入ったのかを「select」というコマンドを使って確認します。

 

select フィールド名 from テーブル名 where 抽出条件;

 

フィールド1つ1つを確認してもいいのですが、ここでは「*」を使って一度にすべてを確認したいと思います。

※「*」アスタリスクによるすべてのフィールド(列)の取得は、フィールドが多い場合などに負荷がかかってしまいます。すべてのフィールドを取得する必要がない場合は、アスタリスクを使わず取得したいフィールドを指定するとパフォーマンスの改善につながります。

select * from user;

select * from user;

レコードが1つ確認できましたね。

 

それでは、残りの2つのレコードを追加していきましょう。

insert into user(username,email,password) values(‘suzuki’,’suzuki@techacademy.jp’,’bbbbbb’);

insert into user(username,email,password) values(‘sato’,’sato@techacademy.jp’,’cccccc’);

スクリーンショット 2015-01-12 15.21.23

 

レコードが追加できたら、「select」で確認します。

select * from user;

select * from user; 2

3つのレコードがすべて確認できました。

 

レコードの表示数を制限する

レコードの表示数を制限するには(LIMIT句)

SELECT文ではLIMIT句を使って表示するレコードの数を制限できます。

LIMIT句により表示するレコードの数を一定にできます。

表示するレコードの数を制限することによって、件数が多くてもページング(一定数ごとにページ単位で表示すること)で見やすく表示でき、データ取得時間も短縮できます。

 

LIMIT句は以下のように、SELECT文の中で指定します。

select フィールド名 from テーブル名 limit レコード件数;

 

以下の画面は、sampledbデータベースのuserテーブルから、LIMIT句で表示数を2件に制限した例です。
LIMIT句による表示数制限
userテーブルには3件のレコードがありますが、最初の2件目までを表示しています。

 

指定したレコードから表示する

LIMIT句を使えば表示する件数だけでなく、何件目から表示するかも指定できます。

 

LIMIT句で、取得位置を指定するには次のように指定します。

select フィールド名 from テーブル名 limit レコード位置, レコード件数;

取得するレコード位置は0から始まるので1件目なら0、2件目なら1です。

たとえば10件目から5件のレコードを取得したい場合は、「limit 9, 5」と指定します。

 

以下の画面は、sampledbデータベースのuserテーブルから、LIMIT句で3件目以降を取得した例です。
LIMIT句で2ページ目を表示

LIMIT句で取得位置が「2」なので、3件目から表示されています。

またLIMIT句の表示数が「5」に設定されていますが、userテーブルのレコードは3件しかないので1件だけ表示されています。

 

まとめ

LIMIT句を使って取得を始める件数表示する件数を指定して、レコードの取得数を制限できます。

検索サイトなどで使われているページングを行うときに便利です。

 

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

条件式を組み合わせてレコードを取得する

レコードの取得に条件を付けるには(WHERE句)

SELECT文で条件をつけた取得を行うには、WHERE句を使います。

 

WHERE句の使い方は以下ように指定します。

select フィールド名 from テーブル名 where 条件式;

WHERE句は省略できます。省略するとすべてのレコードを取得します。

たとえば、idフィールドの値が 「1」であるレコードを取得するなら、WHERE句に「where id = 1」と指定します。

 

以下の画面は、userテーブルからidフィールドの値が「1」であるレコードを取得した結果です。
WHERE句でIDが1のレコードを取得した結果

userテーブルには3件のレコードが存在しますが、条件にidフィールドが「1」であるレコードを指定したので、該当するレコードのみが取得されます。

 

以下のような演算子を、WHERE句の条件式で使います。

演算子 意味 条件式の例
= 等しい id = 1 idが1
< 小さい id < 10 idが10より小さい
(10を含まない、10より小さい数)
> 大きい id > 5 idが5より大きい
(5を含まない、5より小さい数)
<= 以下 id <= 10 idが10以下
(10を含んだより小さい数)
>= 以上 id >= 5 idが5以上か
(5を含んだより大きい数)
!=
<>
等しくない id != 3 idが3ではない

※今回はSELECT文で条件を指定するためにWHERE句を使っていますが、SELECT文以外のDELETE文やUPDATE文で条件を指定するためにも使えます。

 

文字列であいまいな条件を作る

文字列があるフィールドを条件式に指定するには、「=」(等しい)演算子の他にLIKE演算子が使えます。

LIKE演算子はパターンで条件を指定するので、「先頭だけ」「含まれる」のようなあいまいな条件を指定できます。

 

LIKE演算子は以下のように使います。

select フィールド名 from テーブル名 where フィールド名 like ‘パターン文字列’;

※パターン文字列は ‘(シングルクォーテーション)で囲みます。

たとえばusernameフィールドの「s」から始まるレコードを取得するには「where username like ‘s%’」と指定します。

パターン文字列にある「%」は、LIKE演算子で使用されるワイルドカードという特定のパターンに一致することを表す特殊な記号です。

 

以下の画面は、userテーブルからusernameフィールドの「s」から始まるレコードを取得した結果です。
LIKE演算子を使った先頭一致検索の結果

userテーブルのusernameフィールドに、「s」から始まる「suzuki」と「sato」が表示されています。

 

LIKE演算子で使用できるワイルドカードには、以下の2つがあります。

演算子 意味 条件式の例
%
(パーセント)
0個以上の何かの文字 name like `%food%`
nameに「food」が含まれる値。
food、foodcoat、seafoodなど
_
(アンダースコア)
何か1つの文字 name like `_food`
nameが何かの1文字に続いて「food」で終わっている値。
2food、efoodなど。「food」だけのレコードは含まない。

※ワイルドカードの「_」は複数使用でき、続けて任意の何文字かを指定できます。たとえば、「like ___food」とすると「seafood」などのように任意の3文字に続く「food」を取得できます。

 

複数の条件を使う

WHERE句には複数の条件式を指定できます。

AND演算子は両方の条件式が成立するレコードを取得します。

OR演算子はいずれかの条件が成立するレコードを取得します。

AND演算子とOR演算子の使い方は以下の通りです。

select フィールド名 from テーブル名 where 条件式1 and(またはor) 条件式2;

 

以下の画面は、AND演算子やOR演算子を使ってレコードを取得した結果です。
AND演算子やOR演算子を使った複数条件の指定

最初の結果は、AND演算子によりusernameフィールドが「s」から始まりかつidが3より小さいレコードを取得しています。

次の結果は、OR演算子によりusernameフィールドが「s」から始まるかまたはemailフィールドが「y」から始まるレコードを取得しています。

WHERE句でAND演算子やOR演算子を複数でつなげて条件をさらに増やせます。

1つのSELECT文で複数のANDOR演算子をつなぐ場合、( ) で囲って優先順位を指定します。

たとえばemailフィールドが「.jp」か「.com」で終わるidフィールドが10以上のレコードを取得するには、「where (email like ‘%.jp’ or email like ‘%.com’) and id >= 10」のように指定します。

 

コラム

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

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

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

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

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

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

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

おわりに

今回の記事は以上です。

SELECTを使ってデータを取得・確認できたら、次はMySQLでUPDATEを使ってレコードを更新してみてください。

 

大石ゆかり

フィールド名の指定、テーブルの指定、抽出条件の指定と、少し複雑ですね。

田島悠介

確かに。まずは練習として*(アスタリスク)を使ったよ。フィールド名にこれを指定すると全部のフィールドという意味になるんだ。

大石ゆかり

全部取得したほうが楽そうですね。

田島悠介

あんまり大きなデータになってなければ、悪くないね。後は、抽出条件を指定すると、大きい順に並べたりいろいろできるんだよ。

 

PHPを学習中の方へ

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

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

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

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

合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、PHP/Laravelを使ったWebアプリケーション開発を学べます。

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

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

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

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

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

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

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

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

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

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

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