この記事では、mysql5.7 で json を操作する関数の使用方法と関連する例を紹介します。必要な友達は参考にしてください。
前書き
JSON は言語を使用します。 - 独立したテキスト形式。XML に似ていますが、XML よりもシンプルで読みやすく、書きやすいです。マシンによる解析と生成が容易で、ネットワーク帯域幅の送信が削減されます。
JSON の形式は非常に単純です: 名前/キー値。 MySQL の以前のバージョンでは、このようなストレージを実装するには、VARCHAR または TEXT ラージ テキストが使用されていました。 MySQL 5.7 のリリース後、JSON データ型と、この型の検索およびその他の関数解析が特別に設計されました。
実際にやってみましょう。
JSON フィールドを含むテーブルを作成します
たとえば、「記事」テーブル、フィールドには
id、タイトル、タグが含まれます
記事には複数のタグがあり、タグは JSON タイプに設定できます
テーブルを作成するステートメントは次のとおりです:
CREATE TABLE article` ( id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, title` varchar (200) NOT NULL , tags` json DEFAULT NULL , PRIMARY KEY (`id`) ) ENGINE=InnoDB;
Insert data
JSON コンテンツを含むデータを挿入し、insert ステートメントを実行します:
INSERT INTO article` (`title`, `tags`) VALUES ( '体验 Mysql JSON' , '["Mysql", "Database"]' );
ここに挿入されるのは、JOSN 配列 ["Mysql", "Database "]
記事テーブル内のすべてのコンテンツをクエリすると、新しく挿入されたデータが表示されます
クエリ
JSON 関数を使用して 2 つの単純なクエリを作成します
1.「Mysql」タグを持つすべての記事を検索します
SELECT * FROM article` WHERE JSON_CONTAINS(tags, '["Mysql"]' );
2. タグで「Data」で始まる記事を検索します
SELECT * FROM article` WHERE JSON_SEARCH(tags, 'one' , 'Data%' ) IS NOT NULL ;
JSON_SEARCH 関数の 3 つのパラメーターの意味:
1. 検索対象のドキュメント
2. , 2 つのオプションがあり、「one」は条件に一致する最初のものを検索し、「all」は条件に一致するすべてのものを検索します
3. 検索条件
JSON Path
JSON Path は、ターゲットフィールドを見つけるために使用されます。
SELECT JSON_EXTRACT( '{"id": 1, "name": "mysql"}' , '$.name' );
などのドキュメント内 結果は次のようになります: mysql
JSON_EXTRACT() は JSON 抽出関数、$.name は JSON パスで、配置されたドキュメントの名前フィールドを示します
JSON パスは次で始まります$、ここにいくつかの例があります
{ "num" : 123, "arr" : [1, 2], "obj" : { "a" : 3, "b" : 4 } } $.num //结果:123 $.arr //结果:[1, 2] $.arr[1] //结果:1 $.obj.a //结果:3 $**.b //结果:4
JSONパスを使用したクエリの例
SELECT tags-> "$[0]" as 'tag' FROM article`;
データを更新します
例えば、記事に「dev」タグを追加したい場合、更新条件は「Mysql」タグはすでに含まれており、「dev」タグのデータはまだありません
更新ステートメントは次のとおりです:
UPDATE article` SET tags = JSON_MERGE(tags, '["dev"]' ) WHERE JSON_SEARCH(tags, 'one' , 'dev' ) IS NULL AND JSON_SEARCH(tags, 'one' , 'Mysql' ) IS NOT NULL ;
「dev」ラベルが正常に追加されたことがわかります
別の例として、「Mysql」ラベルを「Mysql 5.7.13」に更新する場合、更新ステートメントは次のようになります:
UPDATE Article` set tags = JSON_SET(tags, '$[0] ' , 'Mysql 5.7.13' ) ;<code>UPDATE article` set tags = JSON_SET(tags, ‘$[0] ', ‘Mysql 5.7.13' ) ;<br>
上面体验了 JSON_MERGE 和 JSON_SET ,用于修改JSON的函数还有很多,例如:
JSON_INSERT(doc, path, val[, path, val]…)
插入数据
JSON_REPLACE(doc, path, val[, path, val]…)
替换数据
JSON_ARRAY_APPEND(doc, path, val[, path, val]…)
向数组尾部追加数据
JSON_REMOVE(doc, path[, path]…)<br>
私は上記の JSON_MERGE と JSON_SET を経験しましたが、次のような JSON を変更する関数がたくさんあります:
JSON_INSERT(doc, path, val[, path, val]…)
JSON_REPLACE(doc, path, val[, path, val]…)
🎜🎜🎜データを置換🎜🎜JSON_ARRAY_APPEND (doc, path, val[, path, val]…)
🎜🎜🎜配列の末尾にデータを追加します🎜🎜JSON_REMOVE(doc, path [, path]…)🎜
🎜🎜指定した場所からデータを削除します🎜🎜 最初の操作経験を通して、Mysql の JSON 操作は比較的スムーズであると感じました。確かに、将来 mysql でドキュメント構造を使用するのは非常に便利です。以上がMysql5.7でのJSON関数の操作例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。