Mysql5.7でのJSON関数の操作例を詳しく解説

黄舟
リリース: 2017-07-27 15:33:28
オリジナル
1462 人が閲覧しました

この記事では、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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート