序文 JSON は、言語に依存しないテキスト形式を使用する軽量のデータ交換形式で、XML に似ていますが、XML よりもシンプルで、読み書きが簡単です。マシンによる解析と生成が容易になり、ネットワーク帯域幅の伝送が削減されます。 JSON の形式は非常にシンプルです: 名前/キー値。以前の MySQL バージョンでは、このようなストレージを実装するために、VARCHAR または TEXT のラージ テキストが使用されていました。 MySQL 5.7 のリリース以降、JSON データ型と、この型の取得およびその他の関数解析が特別に設計されました。 実践してみましょう。 JSONフィールドを持つテーブルを作成する たとえば、「記事」テーブルには次のようなフィールドがあります。 ID、タイトル、タグ 記事には複数のタグを付けることができ、タグはJSON型に設定できます。 テーブル作成ステートメントは次のとおりです。 CREATE TABLE記事`( id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, タイトル`varchar (200) NOT NULL, tags` json デフォルト NULL 、 主キー (`id`) )ENGINE=InnoDB; データの挿入 JSON コンテンツを含むデータを挿入するには、挿入ステートメントを実行します。 記事に挿入します (`title`, `tags`) 値 ( 「Mysql JSONを体験する」 '["Mysql", "データベース"]' ); ここで挿入されるのはJOSN配列["Mysql", "Database"]です article テーブル内のすべてのコンテンツをクエリすると、新しく挿入されたデータを確認できます。 クエリ JSON関数を使用して2つの簡単なクエリを実行する 1. タグ「MySQL」が付いたすべての記事を検索します 記事から*を選択` WHERE JSON_CONTAINS(タグ、'["Mysql"]'); 2. 「データ」で始まるタグが付いた記事を検索する 記事から*を選択` JSON_SEARCH(tags, 'one', 'Data%') が NULL ではない場合; JSON_SEARCH 関数の 3 つのパラメータの意味: 1. 発見すべき文書 2. 検索範囲には 2 つのオプションがあります。条件を満たす最初のものを検索する「1 つ」と、条件を満たすものをすべて検索する「すべて」です。 3. 検索条件 JSONパス JSONパスは、ドキュメント内のターゲットフィールドを見つけるために使用されます。例: JSON_EXTRACTを選択します( '{"id": 1, "name": "mysql"}' 、 '$.名前' ); 結果は次のようになります:mysql JSON_EXTRACT() は JSON 抽出関数です。$.name は JSON パスであり、見つかったドキュメントの名前フィールドを意味します。 JSON パスは $ で始まります。さらにいくつか例を見てみましょう。 { 「数字」: 123, 「arr」: [1, 2], オブジェクト: { 「あ」: 3, 「バ」: 4 } } $.num //結果: 123 $.arr //結果: [1, 2] $.arr[1] //結果: 1 $.obj.a //結果: 3 $**.b //結果: 4 JSON パスを使用したクエリの例 選択 tags-> "$[0]" を 'tag' として 記事より`; データの更新 たとえば、記事に「dev」タグを追加する場合、更新条件は、すでに「MySQL」タグが含まれていて、「dev」タグの付いたデータがまだ存在しないことです。 更新ステートメントは次のとおりです。 記事を更新 SET tags = JSON_MERGE(tags, '["dev"]') どこ JSON_SEARCH(タグ、'one'、'dev') は NULL です そして JSON_SEARCH(tags, 'one', 'Mysql') は NULL ではありません。 「dev」タグが正常に追加されたことがわかります たとえば、「Mysql」タグを「Mysql 5.7.13」に更新する場合、更新ステートメントは次のようになります。 上記では JSON_MERGE と JSON_SET について説明しました。JSON を変更するための関数は他にもたくさんあります。 データの挿入
データを置き換える
配列の末尾にデータを追加する
指定された場所からデータを削除する 初期操作経験を通して、Mysql の JSON 操作は比較的スムーズだと感じました。今後 MySQL でドキュメント構造を使用するのは本当に便利です。 以下もご興味があるかもしれません:
|
<<: vue3.0共通コンポーネントの自動インポート方法の例
>>: CentOSバージョンにDockerをインストールする際のエラーの解決方法
目次1. proxy_pass を設定した後に Nginx が 404 を返す問題のトラブルシューテ...
方法1: 送信ボタンから送信する <!DOCTYPE html> <html>...
ネットワーク データを読み込むときは、ユーザー エクスペリエンスを向上させるために、通常は円形の読み...
写真をアップロードするので、まずはダウンロード可能な画像リソースかどうかを判断する必要があります。正...
Nginx は、リバース プロキシ機能を使用して負荷分散を実装できるほか、フォワード プロキシ機能を...
1. 2 列レイアウトとは何ですか? 2 列レイアウトには、左側が固定幅で右側が適応幅のレイアウトと...
目次1. レンダリング2. データをバインドし、ツリーテーブルにラベルを追加する3. すべてのコード...
1. Apache 2.4.41 のインストールと設定最初のステップは、以下に示すように、https...
詳細には立ち入らずに、コードに直接進みましょう。一緒にコミュニケーションを取り、学びましょう。月ごと...
HTML を初めて使用する多くの人にとって、テーブル <table> は最もよく使用され...
目次ネプローダーをインストールするプラグインのインポート始める配置折りたたみディスプレイノードをクリ...
目次背景問題の説明原因分析シミュレーションする総括する背景日常の使用において、MySQL で個別また...
1 問題の説明この記事では、確立された複合インデックスをソートし、レコード内の非インデックス フィー...
サーバー: Ubuntu Server 16.04 LSSクライアント: Ubuntu 16.04 ...
この記事では主に、リクエストを転送したり、静的リソース ファイルにアクセスしたりする nginx の...