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 や ->> 演算子など)を組み合わせれば、格納したデータの検索や部分抽出も可能になるため、ログデータや設定情報など、構造が可変的なデータの管理に特に有効です。
-
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文を使って
-
MySQLでENUM型のステータスから「Active」のレコードを抽出する方法
MySQLでは、ENUM型のカラムに格納された特定の値(例:「Active」)を持つレコードを簡単に抽出できます。この記事では、ENUM型でステータスを管理するテーブルを作成し、「Active」ステータスのレコードだけを取得する具体的な手順を解説します。 1. ENUM型を使ったテーブルの作成 まず、ステータスをENUM型として定義したテーブルを作成します。ENUM型は、あらかじめ指定した文字列のリストの中から1つの値のみを格納できる便利なデータ型です。 mysql> create table DemoTable2037 -> ( &