サーチ…


前書き

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フィールドに挿入する方法を見てきました。もしそのフィールドを更新したいのであれば?前の例では、配列という名前のvariationsscheveningenを追加します。

UPDATE 
    myjson 
SET 
    dict=JSON_ARRAY_APPEND(dict,'$.variations','scheveningen') 
WHERE 
    id = 2;

ノート:

  1. json辞書の$.variations配列。 $記号はjsonのドキュメントを表します。 mysqlによって認識されるjsonパスの完全な説明については、 https: //dev.mysql.com/doc/refman/5.7/en/json-path-syntax.htmlを参照してください。
  2. 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