MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで1つのセル(カラム)に複数の要素を格納する方法【JSON型の活用】

MySQLでは、1つのセル(カラム)の中に複数の要素からなるセットを格納したいケースがあります。そんなときに便利なのが、JSON型です。JSON形式のデータを使えば、配列やオブジェクトとして複数の値をまとめて1つのカラムに保存できます。

ここでは、実際にテーブルを作成し、JSONデータを挿入・表示する手順を見ていきましょう。

1. テーブルの作成

まず、JSON型のカラムを持つテーブルを作成します。

mysql> create table DemoTable1828
    (
    EmployeeId int,
    EmployeeRecords JSON
    );
Query OK, 0 rows affected (0.00 sec)

この例では、社員IDを格納する EmployeeId カラムと、社員情報をJSON形式で保持する EmployeeRecords カラムを定義しています。

2. レコードの挿入

次に、INSERT文を使ってJSON形式のデータを挿入します。複数の社員情報を1つの配列として格納できる点がポイントです。

mysql> insert into DemoTable1828 values(1,'[{"EmployeeName":"Chris","EmployeeAge":29},{"EmployeeName":"David","EmployeeAge":27}]');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1828 values(2,'[{"EmployeeName":"John","EmployeeAge":36},{"EmployeeName":"Mike","EmployeeAge":32}]');
Query OK, 1 row affected (0.00 sec)

上記のように、1行のレコードに対して「名前」と「年齢」を持つ複数のオブジェクトを配列として格納しています。

3. データの確認

SELECT文でテーブル内のすべてのレコードを表示してみましょう。

mysql> select * from DemoTable1828;

実行結果は以下のとおりです。

+------------+----------------------------------------------------------------------------------------------+
| EmployeeId | EmployeeRecords                                                                              |
+------------+----------------------------------------------------------------------------------------------+
|          1 | [{"EmployeeAge": 29, "EmployeeName": "Chris"}, {"EmployeeAge": 27, "EmployeeName": "David"}] |
|          2 | [{"EmployeeAge": 36, "EmployeeName": "John"}, {"EmployeeAge": 32, "EmployeeName": "Mike"}]   |
+------------+----------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

まとめ

このように、MySQLのJSON型を活用すれば、正規化せずに関連する複数の要素を1つのセルに柔軟に格納できます。JSON関数(JSON_EXTRACT->> 演算子など)を組み合わせれば、格納したデータの検索や部分抽出も可能になるため、ログデータや設定情報など、構造が可変的なデータの管理に特に有効です。

  1. MySQLでDATETIME型の列に時間を追加する方法|ADDTIME()関数の使い方を解説

    DATETIME型の値に時間を加算したい場合、MySQLではADDTIME()関数を使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、ADDTIME()関数で時間を追加する手順をわかりやすく解説します。1. テーブルを作成するまず、DATETIME型の列を持つテーブルを作成します。mysql> create table DemoTable1848 ( ShippingDate datetime ); Query OK, 0 rows affected (0.00 sec)2. サンプルデータを挿入する次に、INSERT文を使って

  2. MySQLでENUM型のステータスから「Active」のレコードを抽出する方法

    MySQLでは、ENUM型のカラムに格納された特定の値(例:「Active」)を持つレコードを簡単に抽出できます。この記事では、ENUM型でステータスを管理するテーブルを作成し、「Active」ステータスのレコードだけを取得する具体的な手順を解説します。 1. ENUM型を使ったテーブルの作成 まず、ステータスをENUM型として定義したテーブルを作成します。ENUM型は、あらかじめ指定した文字列のリストの中から1つの値のみを格納できる便利なデータ型です。 mysql> create table DemoTable2037     -> ( &