MySQLでJSON型カラムにデフォルト値を設定する方法
MySQLでは、JSON型のカラムにもデフォルト値を設定できます。その場合は、DEFAULT制約を使用します。基本的な構文は以下の通りです。
ALTER TABLE テーブル名 MODIFY COLUMN カラム名 JSON NOT NULL DEFAULT ( JSON_OBJECT() );
サンプルテーブルの作成
まず、動作確認用のテーブルを作成しましょう。ここでは demo24 というテーブルを作成します。
mysql> create table demo24 -> ( -> employee_information text -> ) ->; Query OK, 0 rows affected (1.43 sec)
テーブルの構造を確認してみます。
mysql> desc demo24;
実行結果は以下の通りです。employee_information カラムは現時点では text 型で、デフォルト値は NULL になっています。
+----------------------+------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------------------+------+------+-----+---------+-------+ | employee_information | text | YES | | NULL | | +----------------------+------+------+-----+---------+-------+ 1 row in set (0.00 sec)
JSON型への変更とデフォルト値の設定
次に、このカラムをJSON型に変更し、同時にデフォルト値として空のJSONオブジェクトを設定します。
mysql> alter table demo24 modify column employee_information JSON NOT NULL DEFAULT ( JSON_OBJECT() ); Query OK, 0 rows affected (3.03 sec) Records: 0 Duplicates: 0 Warnings: 0
再度テーブル構造を確認しましょう。
mysql> desc demo24;
実行結果は以下の通りです。カラムが json 型になり、Default 列に json_object()、Extra 列に DEFAULT_GENERATED と表示されていることが分かります。
+----------------------+------+------+-----+---------------+-------------------+ | Field | Type | Null | Key | Default | Extra | +----------------------+------+------+-----+---------------+-------------------+ | employee_information | json | NO | | json_object() | DEFAULT_GENERATED | +----------------------+------+------+-----+---------------+-------------------+ 1 row in set (0.00 sec)
動作確認
INSERT文でレコードを挿入して、デフォルト値が正しく適用されるか確認します。なお、値を指定せずに挿入すると、自動的にデフォルト値が使用されます。
mysql> insert into demo24 values(); Query OK, 1 row affected (0.10 sec)
SELECT文でテーブルの中身を表示してみましょう。
mysql> select * from demo24;
実行結果は以下の通りです。明示的に値を指定しなくても、デフォルト値として空のJSONオブジェクト {} が格納されていることが確認できます。
+----------------------+
| employee_information |
+----------------------+
| {} |
+----------------------+
1 row in set (0.00 sec)注意点
JSON型カラムに対して JSON_OBJECT() のような関数(式)を使ってデフォルト値を設定する場合、MySQL 8.0.13 以降が必要です。また、式によるデフォルト値は必ず括弧 () で囲む必要がある点にも注意してください。それ以前のバージョンでは、リテラル値のみがデフォルト値として許可されており、JSONカラムには直接デフォルト値を設定できません。
-
MySQLで列にENUM型を設定する方法
```html MySQLでは、テーブルを作成する際に、あらかじめ決められた文字列のリストから値を選ばせたい列に対してENUM型を設定できます。ENUMは、指定した候補値以外のデータが登録されるのを防ぎたい場合に便利なデータ型です。ここでは、実際にテーブルを作成しながら基本的な使い方を見ていきましょう。ENUM型を含むテーブルを作成するまず、学生の点数と合否ステータスを管理するテーブルを作成します。「StudentStatus」列には「First」「Second」「Fail」の3つの値のみを許可するENUM型を設定しています。mysql> create table DemoTable20
-
MySQLでテーブルを作成し、現在の日付をデフォルト値として設定する方法
MySQLでは、テーブル作成時にDEFAULT制約を追加することで、カラムにデフォルト値を設定できます。日付型のカラムに対して現在の日付(CURRENT_DATE)をデフォルト値として指定すれば、レコード挿入時に明示的に値を渡さなくても自動的に当日の日付が登録されます。基本構文テーブルを作成し、DEFAULT制約を使ってデフォルト値を設定する際の基本的な構文は以下の通りです。CREATE TABLE yourTableName ( yourColumnName1 dataType not null , yourColumnName2 dataType default anyValue, . .