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

MySQLと言えば世界中でもっとも多くの方が利用しているデータベースです。

今回はそのMySQLでCASEを使った操作方法について解説してみたいと思います。

それでは早速CASEについて見ていきましょう。

CASE句

まずはCASEの記述方法です。

具体的には以下の様な記述方式となっています。

CASE WHEN 条件1 THEN 表示1
WHEN 条件2 THEN 表示2
……
ELSE 表示その他
END

CASE句は、”WHEN”で条件を指定し、その条件に合う場合に”THEN”で指定した表示を返します。

条件となる式は他の言語と同じく、いくつも指定することが出来ます。

またどの条件にも合致しない場合には、”ELSE”で指定した表示が返されます。

CASE句の括りには”END”を忘れないようにしてください。

ELSEに関してはつけなくても特に問題はないように思えるかもしれませんが、明示的に記述していない場合、予期せぬエラーが返ってくることがあります。

データベースでエラーが発生した場合には全ての動作が停止してしまうので、データベースは常に厳格に記述するように心がける必要が有ります。

このCASE句に関しても必ずしも必要無いとは言え、ELSEも含め一連の作業として記述する癖をつけてください。

CASE句を使用した例

先ほどまではCASE句についての基本的記述の解説をしてきましたが、ここでは実際にCASE句を使って流れを見てみましょう。

CASE句を実際に使用するにはデータベースにデータがないと始まらないので、まずはデータベースにデータを登録する方法について解説します。

以下のように記述し、データベースに情報を登録してください。

// データベースを追加する
CREATE DATABASE case_db
    CHARACTER SET = utf8;

// 上で作成したデータベースに切り替える
USE case_db;

// テーブルの作成
CREATE TABLE sample_table(
    id INT(11) AUTO_INCREMENT NOT NULL, 
    name VARCHAR(30) NOT NULL,
    score INT(3) NOT NULL,
    PRIMARY KEY (id));

// 上で作成したテーブルにレコードを追加する
INSERT INTO sample_table(name, score) VALUES
    ('イチロー', 95),
    ('ジロー', 75),
    ('サブロー', 60),
    ('シロー', 100),
    ('ゴロー', 80);

これでデータベースとテーブルの作成が完了したと思いますので、確認のために以下を記述してみましょう。

DESC sample_table;
SELECT * FROM sample_table;

実行結果

MariaDB [case_db]> DESC sample_table;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(30) | NO   |     | NULL    |                |
| score | int(3)      | NO   |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
3 rows in set (0.015 sec)

MariaDB [case_db]> SELECT * FROM sample_table;
+----+----------+-------+
| id | name     | score |
+----+----------+-------+
|  1 | イチロー |    95 |
|  2 | ジロー   |    75 |
|  3 | サブロー |    60 |
|  4 | シロー   |   100 |
|  5 | ゴロー   |    80 |
+----+----------+-------+
5 rows in set (0.000 sec)

このように表示されていれば問題なく作成されています。

これでCASE句を使った例を説明する前準備が整いましたので、ここからがやっと本番です。

今回はCASE句を使い、この5名に「優、良、可」の評価をしてみたいと思います。

評価基準は以下の通りとします。

評価基準
  • 優=90点以上
  • 良=80点以上90点未満
  • 可=70点以上80点未満
  • 未評価=上記以外

この評価基準を基にCASE句を使う場合には、”SELECT句 + CASE句”で整形する必要があります。

SELECT句についての説明は今回は割愛しますが、SELECT句を使う場合、以下のような記述となります。

// SELECT句
SELECT カラム名 FROM テーブル名

// SELECT句 + CASE句
SELECT カラム名 CASE WHEN 条件1 THEN 表示1
WHEN 条件2 THEN 表示2
……
ELSE 表示その他
END
FROM テーブル名

具体的な記述は以下の通りです。

SELECT id, name, score ,
	CASE WHEN score >= 90 THEN "優"
		WHEN 90 > score AND score >= 80 THEN "良"
		WHEN 80 > score AND score >= 70 THEN "可"
		ELSE "未評価"
	END AS "評価"
FROM sample_table;

ENDの後に”AS”がついていることに注目してください。

これはSELECT句で表示させる際に、一時的に「評価」というカラムを追加して表示させる命令となります。

今回は評価基準で分けてわかりやすく表示させるため、こういった方法を使っています。

実行結果

+----+----------+-------+--------+
| id | name     | score | 評価   |
+----+----------+-------+--------+
|  1 | イチロー |    95 | 優     |
|  2 | ジロー   |    75 | 可     |
|  3 | サブロー |    60 | 未評価 |
|  4 | シロー   |   100 | 優     |
|  5 | ゴロー   |    80 | 良     |
+----+----------+-------+--------+

上記のSELECT句で実行をかけるとこのように新たにカラムが追加された状態で表示されたことが確認できます。

まとめ

いかがでしたか?

今回はCASE句を使ったデータベースの検索について解説してみました。

データベースはどの言語でも開発を行う際には必ずと言っていいほど利用するものです。

またCASE句に関してもデータベース関連の命令としては基本中の基本であり、システムを開発する上で利用するケースも非常に多い為、よく理解しておく必要が有ります。

しっかりと理解できるようになるまでこの記事を何度も読み返してみてください。

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

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

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

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

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

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

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

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

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

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

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