前回の記事では、MySQL データ保存手順パラメータの詳細な例を紹介しました。今日は、JSON データ型に対する MySQL 操作の関連内容を見てみましょう。 概要 MySQL はバージョン 5.7.8 以降、JSON 構造化データの保存とクエリをサポートしており、これは MySQL も NoSQL データベースの利点を継続的に学習して追加していることを示しています。しかし、MySQL は結局のところリレーショナル データベースであり、JSON などの非構造化データを処理する際には依然として扱いにくいです。 JSONフィールドを持つテーブルを作成する まず、json 形式のフィールドを含むテーブルを作成します。 テーブルテーブル名を作成する ( id INT NOT NULL AUTO_INCREMENT、 json_col JSON、 主キー(id) ); 上記のステートメントでは、データ型を JSON として指定する json_col フィールドに注意してください。 シンプルなJSONデータを挿入する 挿入する テーブル名 (json_col) 価値観 ('{"都市": "ゴール", "説明": "世界で最高の都市"}'); 上記の SQL 文では、VALUES の後の部分に注意してください。JSON 形式のデータでは文字列を識別するために二重引用符が必要なので、VALUES の後の内容を一重引用符で囲む必要があります。 複雑なJSONデータを挿入する テーブルに挿入(列) VALUES('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}'); ここでは、json 配列を挿入しました。重要なのは、一重引用符と二重引用符の問題に注意することです。 JSONデータの変更 前の例では、いくつかの JSON データを挿入しましたが、JSON データ内の特定のコンテンツを変更したい場合はどうすればよいでしょうか。たとえば、バリエーション配列に要素を追加する場合は、次のようにします。 myjson を更新します。SET dict=JSON_ARRAY_APPEND(dict,'$.variations','scheveningen') WHERE id = 2; この SQL ステートメントでは、$ は JSON フィールドを表し、ドットはバリエーション フィールドのインデックス作成に使用され、その後、JSON_ARRAY_APPEND 関数を使用して要素が追加されます。次にクエリを実行します。 myjsonから*を選択 結果は次のとおりです。 +----+------------------------------------------------------------------------------------------------------+ | ID | 辞書 | +---+------------------------------------------------------------------------------------------------------+ | 2 | {"opening": "シチリア", "variations": ["ペリカン", "ドラゴン", "ナドルフ", "スケベニンゲン"]} | +----+------------------------------------------------------------------------------------------------------+ セット内の 1 行 (0.00 秒) MySQLでJSONデータを取得する方法の詳細については、公式リンクJSONパス構文を参照してください。 インデックスを作成 MySQL の JSON 形式のデータは直接インデックスを作成することはできませんが、検索するデータを別のデータ列に分離し、このフィールドにインデックスを作成することで回避できます。公式の例は次のとおりです。 mysql> テーブル jemp を作成します ( -> c JSON、 -> g INTは常に(c->"$.id")として生成されます。 -> インデックス i (g) -> ); クエリは正常、影響を受けた行は 0 行 (0.28 秒) mysql> jemp (c) 値に挿入 > ('{"id": "1", "name": "フレッド"}'), ('{"id": "2", "name": "ウィルマ"}'), > ('{"id": "3", "name": "バーニー"}'), ('{"id": "4", "name": "ベティ"}'); クエリは正常、4 行が影響を受けました (0.04 秒) 記録: 4 重複: 0 警告: 0 mysql> SELECT c->>"$.name" AS name > jemp から g > 2; +--------+ | 名前 | +--------+ | バーニー | | ベティ | +--------+ セット内の 2 行 (0.00 秒) mysql> EXPLAIN SELECT c->>"$.name" AS name > jemp から g > 2\G ************************** 1. 行 **************************** id: 1 選択タイプ: シンプル テーブル: jemp パーティション: NULL タイプ: 範囲 可能なキー: i キー: i キーの長さ: 5 参照: NULL 行数: 2 フィルター: 100.00 追加: where の使用 セットに 1 行、警告 1 件 (0.00 秒) mysql> 警告を表示\G ************************** 1. 行 **************************** レベル: メモ コード: 1003 メッセージ: /* select#1 */ select json_unquote(json_extract(`test`.`jemp`.`c`,'$.name')) AS `name` from `test`.`jemp` where (`test`.`jemp`.`g` > 2) セット内の 1 行 (0.00 秒) この例は非常にシンプルです。JSON フィールドの id フィールドを取得し、それをフィールド g に分割します。次に、フィールド g にインデックスが作成され、クエリ条件もフィールド g に設定されます。 文字列をJSON形式に変換する json 形式の文字列を MySQL の JSON 型に変換します。 SELECT CAST('[1,2,3]'をJSONとして) ; SELECT CAST('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}' as JSON); すべてのMySQL JSON関数
要約する 以上が、MySQL における JSON データ型の操作の詳細説明に関するこの記事の内容です。皆様のお役に立てれば幸いです。興味のある方は、引き続きこのサイトを参照してください。MySQL データ ストレージ プロセス パラメータの詳細な例、Redis と MySQL の違いの簡単な説明、いくつかの重要な MySQL 変数など。不足がある場合は、メッセージを残して指摘してください。編集者は適時に返信して修正し、大多数のプログラミング愛好家と労働者に優れた記事と読書体験を提供するよう努めます。以下に、MySQL 操作に関連する参考書籍をいくつか示します。 MySQL データベース アプリケーション 初心者からマスターまで (第 2 版) PDF スキャン版 https://www.jb51.net/books/361239.html MySQL5 決定版ガイド (第 3 版) 中国語版 PDF スキャン版 https://www.jb51.net/books/367031.html 気に入っていただければ幸いです。さらに興味深いコンテンツについては、https://www.jb51.net/ をご覧ください。 以下もご興味があるかもしれません:
|
<<: VMWare14.0.0のUbuntu仮想マシンで共有フォルダを設定する
>>: React-Native環境のセットアップと基本的な紹介
序文Oracle や SQL Server などのデータベースには、ストレージ エンジンが 1 つだ...
独自のデモを作成するときに、display:flex を使用して垂直方向の中央揃えを実現したいと思い...
最初のステップは、対応するデータベースモジュール(sql)をプロジェクトファイル( .pro )に追...
MySQL 5.5 のインストールと構成のチュートリアル ノートを整理し、全員と共有します。 1.公...
Linux環境変数の設定ソフトウェアのインストールをカスタマイズする場合、多くの場合、環境変数を設定...
休憩中に、眠気を完全に吹き飛ばす電話がかかってきました。「開発者が更新 SQL を書くときに whe...
目次1. ElementUIで基本的なスタイルを構築する2. [送信]ボタンをクリックして、アカウン...
doctype もその 1 つです。 <!DOCTYPE HTML PUBLIC "...
マインドマップ彼はおそらく次のように見えるでしょう: インターネット上の実装のほとんどは d3.js...
この記事では、CSS フロートの特徴を紹介します。皆さんと共有し、自分用のメモとして残したいと思いま...
0. 概要Zabbix は非常に強力なオープンソースの監視ツールです。以下では、Zabbix がテー...
前回の記事では、MySQL ステートメントの実行時間をチェックする 2 つの方法を紹介しました。今日...
プロジェクトのテスト環境データベースのデータが失われてしまったので、記録しておきたいと思います。当時...
多くの場合、 Web デザインが完成した後でデザイナーの無知が露呈し、批判されることがあります。彼ら...
ミラーを探すDocker Hubのウェブサイトからイメージを検索できます。Docker Hubのウェ...