MySQLでJSONデータを扱ってみよう!JSON型の使い方とは?
  • facebookページ
  • twitterページ
  • 2020.01.31

    MySQLでJSONデータを扱ってみよう!JSON型の使い方とは?

    MySQLではバージョン5.7よりJSONデータを取り扱うための「JSON」というデータ型が登場しました。

    本記事では、MySQL環境におけるJSONデータの取り扱い方法に関してサンプルSQLを交えながらご紹介していきたいと思います。

    MySQL5.7から利用可能となったJSON型のテーブルを作成してみよう


    MySQLでJSON型を使う場合、型の指定に「JSON」と入力するだけで利用が可能です。

    MySQL環境としてバージョン5.7以上であることが条件となりますので、まずはインストールされているMySQLのバージョンを下記コマンドで確認しておきましょう。

    JSON型を含めたテーブルを作成してみよう

    では実際に「CREATE TABLE」コマンドでJSON型を含んだテーブルを作成してみましょう。

    「JSON」と型指定するだけでJSON型が取り扱えるカラムが作成されます。

    JSONデータをINSERTしてみよう

    作成したテーブルにJSONデータをINSERTしてみましょう。

    サンプルSQLは下記の通りとなります。

    JSON形式({“key : value”, …})でデータを指定することでINSERT処理が実行可能です。

    MySQL環境でテーブルに登録されたJSON型を操作してみよう


    JSON型を持つテーブルの作成とデータのINSERTが完了しましたので、実際にテーブル操作の基本となる「SELECT」「UPDATE」「DELETE」の使い方についてご紹介していきます。

    JSON型を使用したテーブルでSELECTコマンドを実行してみよう

    テーブル操作の基本となる「SELECT」コマンドから実行してみたいと思います。

    サンプルSQLを実行した結果が下記の通りとなります。

    上述したINSERT文で設定した内容がテーブルに格納されていることをご確認いただけます。

    JSON型で定義されたカラムの値をUPDATEしてみよう

    次にテーブルに登録済みのJSON型のカラム値を「UPDATE」コマンドで更新してみたいと思います。

    今回のサンプルではJSON型である「json_data」カラムのkey「name」のvalue値が「ポテパン1」のデータを更新しています。

    WHERE句に「カラム名->$.key = value」と指定することで、UPDATEしたい特定のデータのみを更新することが可能です。

    ポテパンダの一言メモ

    カラム名->$.key = value」の記述法はUPDATEに限らず、SELECTやDELETEでも使えます。

    サンプルSQLを実行した結果が下記となります。

    JSON_SET関数を利用することでJSONの指定した部分のみを更新することが可能

    上述したUPDATE文では、SETするJSONデータを変更しない箇所も含めて全て記述する必要がありました。

    一方でJSON_SET関数を利用することで、指定した部分のデータのみを更新することも可能です。

    「id=1」の名前を「ポテパン1」から「ポテパン1変更」にUPDATEするサンプルSQLです。

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

    ポテパンダの一言メモ

    JSONデータの記述量が多い場合など、JSON_SET関数を利用することでSQL文が読みやすくなることもあるため、状況によって使い分けてみてください。

    JSON型のカラム値を指定してデータを削除してみよう

    JSON型のカラム値を指定してデータ削除を行ってみましょう。

    WHERE句に上述した「カラム名->$.key = value」を指定してデータ削除を行うことも可能ですが、今回は「JSON_EXTRACT」という関数を利用して対象データを指定してみたいと思います。

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

    指定したJSONの行データが削除されていることがご確認いただけます。

    JSON_EXTRACTの使い方は「json_extract(カラム名, “$.key名”)」となります。

    JSON_EXTRACTを指定することで、「key」に対する「value」が抽出出来るため、where句の場合には「=」演算子を利用して比較を行っています。

    さいごに:MySQLでのJSON型は頻繁には使われない

    本記事では、MySQL5.7より利用が可能となっているJSON型の使い方について、サンプルSQLを交えながらご紹介してきました。

    JSON型は、MySQLを含むリレーショナルデータベースの基本的な考え方からするとイレギュラーな型定義と言えます。

    リレーショナルデータベースのテーブル設計時にJSON型を積極的に使うものではありませんが、実務上JSON型が必要となるケースも考えられるため、使い方については最低限しっかりと理解しておきましょう。


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE