Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLを利用することで、データベースに関する様々な処理を実施することが可能ですが、中でも最も利用されるのがデータの抽出処理に当たる「SELECT文」です。

本記事では、SQLのSELECT文の使い方について、初心者の方でも分かりやすくご紹介していきたいと思います。

SQLのデータ抽出SELECT文の基本を抑えよう!


まずはSQLのデータ抽出で使用する「SELECT」文の基本的な構文から順番に確認していきましょう。

SELECT文の基本構文

SELECT文の基本構文は下記の通りです。

SELECT カラム名(, カラム名, ...)
FROM テーブル名

SELECTの後ろに取得したいカラム名を指定します。

カラム名はいくつでも指定可能で、カンマで区切ることにより1つのカラム名として認識されます。

またテーブル全てのカラムを一括で取得したい場合には全てのカラム名を指定する必要はなく「*」を指定することで取得することが可能です。

サンプルで確認しよう

では、実際にSELECT文の動きをサンプルコードで確認してみましょう。

今回利用するサンプルテーブルは下記となります。

ポテパンダの一言メモ

本記事でのサンプルは全て同じテーブルを利用します。

サンプルテーブル

今回はサンプルとして2つのテーブルを用意しています。

userテーブル
+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    1 | 山田太郎     |   25 |
|    2 | 山田花子     |   22 |
|    3 | 佐藤一郎     |   33 |
|    4 | 伊藤次郎     |   44 |
|    5 | 鈴木三郎     |   22 |
+------+--------------+------+

サンプルからデータを抽出してみよう

ではサンプルテーブルからいくつかのデータを抽出してみたいと思います。

まずuserテーブルの全てのデータを抽出したい場合には、下記のようなコマンドで抽出出来ます。

SELECT * FROM user;

実行した結果が下記となります。

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    1 | 山田太郎     |   25 |
|    2 | 山田花子     |   22 |
|    3 | 佐藤一郎     |   33 |
|    4 | 伊藤次郎     |   44 |
|    5 | 鈴木三郎     |   22 |
+------+--------------+------+

もちろんカラム名を全て列挙しても同様のデータを抽出可能です。

次にidは不要なので「name」「age」のカラムだけを抽出してみたいと思います。

SELECT name, age FROM user;

実行した結果が下記となります。

+--------------+------+
| name         | age  |
+--------------+------+
| 山田太郎     |   25 |
| 山田花子     |   22 |
| 佐藤一郎     |   33 |
| 伊藤次郎     |   44 |
| 鈴木三郎     |   22 |
+--------------+------+

SQLで条件を指定してデータを抽出してみよう


ここまでで、SELECT文の基本的な構文と使い方についてご紹介してきました。

実際の利用用途としてはテーブル全てのデータを抽出したいことってあまりないんですよね。

そこで条件を指定して、必要なデータだけをSQLで抽出することになります。

条件指定にはWHERE句を使用する

まずはSELECT文でWHERE句を使用する際の基本構文を確認しておきましょう。

SELECT カラム名(, カラム名, ...)
FROM テーブル名
WHERE 条件式
(AND(OR)  条件式)

WHERE句に条件式を記述することで該当するデータのみ抽出することが可能です。

サンプルで確認しよう

では実際にいくつかのサンプルで確認していきましょう。

まずはuserテーブルからidが2のデータを抽出するサンプルSQLを作成してみます。

SELECT *
FROM user
WHERE id=2;

実行した結果が下記となります。

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    2 | 山田花子     |   22 |
+------+--------------+------+

対象データだけが抽出出来ていることをご確認頂けます。

次に年齢が22歳で、名前に「山田」が含まれているデータだけを取得したいと思います。

SELECT *
FROM user
WHERE age=22
AND   name like "%山田%";

実行した結果が下記となります。

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    2 | 山田花子     |   22 |
+------+--------------+------+
ポテパンダの一言メモ

SQL中の「name like “%山田%”」は部分一致条件で、「山田」がname列に含まれる場合、抽出対象として認識されます。

ちなみに上記ではAND条件を使用することで、年齢が22歳かつ名前に「山田」が含まれるという条件を指定しましたが、OR条件に変更するとどうなるのでしょうか?

SELECT *
FROM user
WHERE age=22
OR    name like "%山田%";

実行した結果が下記の通りとなります。

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    1 | 山田太郎     |   25 |
|    2 | 山田花子     |   22 |
|    5 | 鈴木三郎     |   22 |
+------+--------------+------+

OR条件に変更したことにより、年齢が22歳または名前に「山田」が入っているデータを取得する指定方法に変更されたことを意味します。

ポテパンダの一言メモ

ANDとOR条件では取得出来るデータに大きな差が生まれるため、しっかりと両者の意味合いを理解するようにしましょう。

SQLで取得するデータの並び順を変更するには?


もうひとつデータ抽出の際、頻繁に利用されるものにデータの並び替えが存在します。

何も指定しない場合、データベースに依存するため、意図しない順番でデータを抽出する可能性も否定出来ません。

基本的には、意図しない不具合を防ぐ意味でもデータの並び順はご自身で明確化しておくのが良いでしょう。

データの並び替えにはORDER BY句を使用する

まずはSELECT文でORDER BY句を使用する際の基本構文を確認しておきましょう。

SELECT カラム名(, カラム名, ...)
FROM テーブル名
ORDER BY カラム名 (ASC(DESC), カラム名)

ORDER BY句にカラム名を指定することで昇順(ASC)・降順(DESC)を指定することが可能です。

ASC・DESCの指定を行わずカラム名だけを指定した場合、デフォルトの昇順(ASC)指定となります。

ポテパンダの一言メモ

ORDER BY句では複数のカラム名を指定した場合、左側に記述したカラム名から順に優先されます。

サンプルで確認しよう

では実際にいくつかのサンプルで確認していきましょう。

まずはuserテーブルのageカラムを指定した並び替えを実施してみます。

SELECT *
FROM user
ORDER BY age;

実行した結果が下記の通りとなります。

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    2 | 山田花子     |   22 |
|    5 | 鈴木三郎     |   22 |
|    1 | 山田太郎     |   25 |
|    3 | 佐藤一郎     |   33 |
|    4 | 伊藤次郎     |   44 |
+------+--------------+------+

ageカラムの昇順でデータが並んでいることをご確認頂けます。

では続いて、同じ年齢の場合idカラムの降順で並べるような処理に変更してみたいと思います。

SELECT *
FROM user
ORDER BY age, id DESC;

実行した結果が下記の通りとなります。

+------+--------------+------+
| id   | name         | age  |
+------+--------------+------+
|    5 | 鈴木三郎     |   22 |
|    2 | 山田花子     |   22 |
|    1 | 山田太郎     |   25 |
|    3 | 佐藤一郎     |   33 |
|    4 | 伊藤次郎     |   44 |
+------+--------------+------+

年齢の昇順で並べた上で、同じ年齢のデータはidの降順に並んでいることをご確認頂けます。

さいごに:SQLのデータ抽出は奥が深い!簡単なものから徐々にスキルアップを目指そう!


本記事では、SQLでのデータ抽出の基本について、初心者の方向けにご紹介してきました。

今回ご紹介した内容は初歩の初歩となる内容で、SQLの抽出処理だけでもテーブル結合などを筆頭に、まだまだたくさん身につけなければならないスキルがあります。

まずは本記事でご紹介した基本をしっかりと抑えた上で、徐々にスキルアップに挑戦していきましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。