MySQL
JSON
サーチ…
前書き
MySQL 5.7.8以降、MySQLはJSON(JavaScript Object Notation)ドキュメントのデータに効率的にアクセスできるネイティブなJSONデータ型をサポートしています。 https://dev.mysql.com/doc/refman/5.7/ja/json.html
備考
MySQL 5.7.8以降、MySQLにはJSONタイプが付属しています。多くの開発者が、JSONデータをログ・タイムのテキスト列に保存していますが、JSONタイプは異なります。データは検証後にバイナリ形式で保存されます。これにより、各読み込み時にテキストを解析するオーバーヘッドが回避されます。
主キーとJSONフィールドを持つシンプルなテーブルを作成する
CREATE TABLE table_name (
id INT NOT NULL AUTO_INCREMENT,
json_col JSON,
PRIMARY KEY(id)
);
単純なJSONを挿入する
INSERT INTO
table_name (json_col)
VALUES
('{"City": "Galle", "Description": "Best damn city in the world"}');
これは簡単ですが、JSONの辞書キーを二重引用符で囲む必要があるため、全体を一重引用符で囲む必要があります。クエリが成功すると、データはバイナリ形式で保存されます。
混合データをJSONフィールドに挿入します。
これは、メンバの1つが別の例で作成されたテーブルへの文字列の配列であるjson辞書を挿入します。
INSERT INTO myjson(dict)
VALUES('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}');
もう一度、一重引用符と二重引用符の使用に注意する必要があることに注意してください。全体を一重引用符で囲む必要があります。
JSONフィールドの更新
前の例では、混合データ型をJSONフィールドに挿入する方法を見てきました。もしそのフィールドを更新したいのであれば?前の例では、配列という名前のvariations
にscheveningenを追加します。
UPDATE
myjson
SET
dict=JSON_ARRAY_APPEND(dict,'$.variations','scheveningen')
WHERE
id = 2;
ノート:
- json辞書の
$.variations
配列。 $記号はjsonのドキュメントを表します。 mysqlによって認識されるjsonパスの完全な説明については、 https: //dev.mysql.com/doc/refman/5.7/en/json-path-syntax.htmlを参照してください。 - jsonフィールドを使用してクエリを実行する例はまだないので、この例では主キーを使用しています。
SELECT * FROM myjson
を実行すると
+----+-----------------------------------------------------------------------------------------+
| id | dict |
+---+-----------------------------------------------------------------------------------------+
| 2 | {"opening": "Sicilian", "variations": ["pelikan", "dragon", "najdorf", "scheveningen"]} |
+----+-----------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
データをJSONタイプに変換する
これは、有効なjson文字列をMySQL JSON型に変換します。
SELECT CAST('[1,2,3]' as JSON) ;
SELECT CAST('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}' as JSON);
Jsonオブジェクトと配列を作成する
JSON_OBJECT
はJSONオブジェクトを作成します:
SELECT JSON_OBJECT('key1',col1 , 'key2',col2 , 'key3','col3') as myobj;
JSON_ARRAY
はJSON配列も作成します:
SELECT JSON_ARRAY(col1,col2,'col3') as myarray;
注:myobj.key3とmyarray [2]は固定列として "col3"です。
JSONデータも混在しています:
SELECT JSON_OBJECT("opening","Sicilian", "variations",JSON_ARRAY("pelikan","dragon","najdorf") ) as mymixed ;
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow