テスト環境: MySQL8.0.19
準備
CREATE TABLE json_demo ( `id` INT ( 11 ) NOT NULL PRIMARY KEY, `content` json NOT NULL ); INSERT INTO json_demo ( id, content ) VALUES /*这条是数组*/ ( 1, '[{"key": 1, "order": 1, "value": "34252"},{"key": 2, "order": 2, "value": "23423"}]' ), /*这条是数组*/ ( 2, '[{"key": 4, "order": 4, "value": "234"},{"key": 5, "order": 5, "value": "234324523"}]' ), /*这条是对象*/ ( 3, '{"key": 3, "order": 3, "value": "43242"}' ), /*这条是对象*/ ( 4, '{"key": 6, "order": 6, "value": "5423"}' );
JSONオブジェクトの基本操作
指定したフィールド値をクエリする
/* 基础查询 */ SELECT content -> '$.key' AS 'key', JSON_EXTRACT(content, '$.key') AS 'key2', content -> '$.value' AS 'value', JSON_EXTRACT(content, '$.value') AS 'value2', content ->> '$.value' AS 'value3', JSON_UNQUOTE(JSON_EXTRACT(content, '$.value')) AS 'value4' FROM json_demo WHERE id > 2;
TIPS:
- ##-> および ->> は MySQL によって設計された構文ですのうち、-> は MySQL5.7 でサポートされ、->> は MySQL8.0 でサポートされます。
- -> JSON_EXTRACT() と同等で、クエリ フィールドが文字列の場合、戻り値にも "" が含まれます。
- ->> JSON_UNQUOTE(JSON_EXTRACT()) と同等で、クエリ フィールドが文字列の場合、戻り値には "" が含まれません。
条件付きクエリに使用されます
content -> '$.key' はフィールドと見なすことができ、実行できる操作は次のとおりです。フィールド上で行われることは基本的に彼が行うことができます。SELECT id, content -> '$.key' AS 'key', content ->> '$.value' AS 'value3' FROM json_demo WHERE id > 2 AND content -> '$.key' > 1 AND content -> '$.value' like '%2%';
/* 修改 */ UPDATE json_demo SET content = JSON_REPLACE( content, /* 将content.key值 + 1 */ '$.key', content -> '$.key' + 1, /* 将content.value值后拼接'abc' */ '$.value', concat(content ->> '$.value', 'abc') ) WHERE id = 3; /* JSON_SET也可以 */ UPDATE json_demo SET content = JSON_SET( content, /* 将content.key值 + 1 */ '$.key', content -> '$.key' + 1, /* 将content.value值后拼接'abc' */ '$.value', concat(content ->> '$.value', 'abc') ) WHERE id = 3; /* 查询修改结果 */ SELECT id,content,content -> '$.key' AS 'key',content ->> '$.value' AS 'value3' FROM json_demo WHERE id = 3; /* 重新赋值 */ UPDATE json_demo SET content = JSON_REPLACE(content,'$.key',3,'$.value','43242') WHERE id = 3;
TIPS:
- JSON_REPLACE と JSON_SET は両方とも、特定のフィールドの値を変更するために使用できます。違いは、JSON_REPLACE が存在しない属性を置き換える場合、操作は無効になるのに対し、JSON_SET は存在しない属性を挿入することです。 。
- つまり、JSON_INSERT と同様に、JSON_SET を使用して属性を追加することもできます。違いは、既存の属性が挿入されると JSON_INSERT 操作が失敗するのに対し、JSON_SET はそれを置き換えることです。
UPDATE json_demo
SET content = JSON_INSERT(content, '$.key', 234)
WHERE id = 3;
SELECT id,content,content -> '$.key' AS 'key' FROM json_demo WHERE id = 3;
UPDATE json_demo
SET content = JSON_INSERT(content, '$.temp', 234)
WHERE id = 3;
SELECT id,content,content -> '$.key' AS 'key' FROM json_demo WHERE id = 3;
UPDATE json_demo
SET content = JSON_SET(content, '$.temp2', 432)
WHERE id = 3;
SELECT id,content,content -> '$.key' AS 'key' FROM json_demo WHERE id = 3;
##JSON 配列操作
クエリ仕様フィールドvalue
SELECT id, content -> '$[*].key' AS 'key', content ->> '$[*].value' AS 'value', content -> '$[0].key' AS 'key2', content ->> '$[0].value' AS 'value2', /* 查询数组长度 */ JSON_LENGTH(content) AS 'length' FROM json_demo WHERE id < 3;
は条件付きクエリに使用されます
SELECT id, content -> '$[*].key' AS 'key', content ->> '$[*].value' AS 'value' FROM json_demo WHERE id < 3 /* content.value的值中存在like'%34%'的值 */ AND content ->> '$[*].value' like '%34%' /* content.key的值中有4 */ AND JSON_OVERLAPS(content ->> '$[*].key', '4' );
指定されたフィールド値を変更します。
基本的な操作は JSON オブジェクトとあまり変わりません。つまり、対応するインデックス ビット '$[0]' を '$' の後に追加し、すべての '$ を指定します。 [*]」。配列に配列が含まれている場合は、「$[1][2][3]」を通じて深い配列要素を指定できます。
要素の追加
JSON_ARRAY_APPEND と JSON_ARRAY_INSERT の両方で配列要素を追加できます。違いは、JSON_ARRAY_APPEND ではインデックス ビットを指定する必要がなく、その場合は最後の位置に追加されますが、JSON_ARRAY_INSERT ではインデックス ビットを指定する必要があり、指定しない場合はエラーが報告されます。
JSON_ARRAY_APPEND は指定されたインデックス ビットの後に追加され、JSON_ARRAY_INSERT は指定されたインデックス ビットの前に挿入されます。その他の操作
名前 | 説明 |
---|---|
JSON_ARRAY() | JSON 配列の作成 |
##JSON ドキュメントへのデータの追加 | JSON_ARRAY_INSERT( ) |
JSON_CONTAINS() | |
JSON_CONTAINS_PATH() | |
JSON_DEPTH() | |
JSON_EXTRACT() | |
JSON_INSERT() | |
JSON_KEYS() | |
JSON_LENGTH() | |
JSON_MERGE() (非推奨) | |
#JSON_MERGE_PATCH() | |
JSON_MERGE_PRESERVE() | |
JSON_OBJECT() | |
JSON_OVERLAPS() (8.0.17 で導入) | |
JSON_PRETTY() | |
##JSON_QUOTE() | 参照 JSON ドキュメント |
JSON_REMOVE() | JSON ドキュメントからデータを削除 |
JSON_REPLACE() | ## JSON ドキュメント内の値を置換 |
JSON_SCHEMA_VALID() (8.0.17 で導入) | JSON スキーマに対して JSON ドキュメントを検証します。ドキュメントがスキーマの場合は TRUE/1 を返し、それ以外の場合は FALSE/0 を返します。 |
JSON_SCHEMA_VALIDATION_REPORT() (8.0.17 で導入) | JSON スキーマに対して JSON ドキュメントを検証し、成功を含む検証結果に関するレポートを JSON 形式で返します。または失敗と失敗理由 |
JSON_SEARCH() | JSON ドキュメント内の値のパス |
#JSON_SET() | JSON ドキュメントにデータが挿入されます |
JSON_STORAGE_FREE() | 部分更新後の JSON 列値のバイナリ表現の空き領域 |
JSON_STORAGE_SIZE() | JSON ドキュメントのバイナリ表現を保存するために使用されるスペース |
JSON_TABLE() | 戻り値のデータリレーショナル テーブルとしての JSON 式から |
#JSON_TYPE() | JSON 値の型 |
JSON_UNQUOTE() | JSON 値の逆参照 |
JSON_VALID() | JSON 値が有効かどうか |
#JSON_VALUE() (8.0 で導入) .21) | 指定されたパスが指す場所にある JSON ドキュメントから値を抽出し、この値を VARCHAR (512) または指定された型 |
として返します。 MEMBER OF() (8.0.17 導入) | 最初のオペランドが 2 番目のオペランドとして渡された JSON 配列の要素と一致する場合は true (1) を返し、それ以外の場合は false (0) を返します |
以上がMySQL で JSON タイプのフィールドを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Innodbbufferpoolは、データをキャッシュしてページをインデックス作成することにより、ディスクI/Oを削減し、データベースのパフォーマンスを改善します。その作業原則には次のものが含まれます。1。データ読み取り:Bufferpoolのデータを読む。 2。データの書き込み:データを変更した後、bufferpoolに書き込み、定期的にディスクに更新します。 3.キャッシュ管理:LRUアルゴリズムを使用して、キャッシュページを管理します。 4.読みメカニズム:隣接するデータページを事前にロードします。 BufferPoolのサイジングと複数のインスタンスを使用することにより、データベースのパフォーマンスを最適化できます。

他のプログラミング言語と比較して、MySQLは主にデータの保存と管理に使用されますが、Python、Java、Cなどの他の言語は論理処理とアプリケーション開発に使用されます。 MySQLは、データ管理のニーズに適した高性能、スケーラビリティ、およびクロスプラットフォームサポートで知られていますが、他の言語は、データ分析、エンタープライズアプリケーション、システムプログラミングなどのそれぞれの分野で利点があります。

MySQLは、データストレージ、管理、分析に適した強力なオープンソースデータベース管理システムであるため、学習する価値があります。 1)MySQLは、SQLを使用してデータを操作するリレーショナルデータベースであり、構造化されたデータ管理に適しています。 2)SQL言語はMySQLと対話するための鍵であり、CRUD操作をサポートします。 3)MySQLの作業原則には、クライアント/サーバーアーキテクチャ、ストレージエンジン、クエリオプティマイザーが含まれます。 4)基本的な使用には、データベースとテーブルの作成が含まれ、高度な使用にはJoinを使用してテーブルの参加が含まれます。 5)一般的なエラーには、構文エラーと許可の問題が含まれ、デバッグスキルには、構文のチェックと説明コマンドの使用が含まれます。 6)パフォーマンスの最適化には、インデックスの使用、SQLステートメントの最適化、およびデータベースの定期的なメンテナンスが含まれます。

MySQLは、初心者がデータベーススキルを学ぶのに適しています。 1.MySQLサーバーとクライアントツールをインストールします。 2。selectなどの基本的なSQLクエリを理解します。 3。マスターデータ操作:テーブルを作成し、データを挿入、更新、削除します。 4.高度なスキルを学ぶ:サブクエリとウィンドウの関数。 5。デバッグと最適化:構文を確認し、インデックスを使用し、選択*を避け、制限を使用します。

MySQLは、テーブル構造とSQLクエリを介して構造化されたデータを効率的に管理し、外部キーを介してテーブル間関係を実装します。 1.テーブルを作成するときにデータ形式と入力を定義します。 2。外部キーを使用して、テーブル間の関係を確立します。 3。インデックス作成とクエリの最適化により、パフォーマンスを改善します。 4.データベースを定期的にバックアップおよび監視して、データのセキュリティとパフォーマンスの最適化を確保します。

MySQLは、Web開発で広く使用されているオープンソースリレーショナルデータベース管理システムです。その重要な機能には、次のものが含まれます。1。さまざまなシナリオに適したInnodbやMyisamなどの複数のストレージエンジンをサポートします。 2。ロードバランスとデータバックアップを容易にするために、マスタースレーブレプリケーション機能を提供します。 3.クエリの最適化とインデックスの使用により、クエリ効率を改善します。

SQLは、MySQLデータベースと対話して、データの追加、削除、変更、検査、データベース設計を実現するために使用されます。 1)SQLは、ステートメントの選択、挿入、更新、削除を介してデータ操作を実行します。 2)データベースの設計と管理に作成、変更、ドロップステートメントを使用します。 3)複雑なクエリとデータ分析は、ビジネス上の意思決定効率を改善するためにSQLを通じて実装されます。

MySQLの基本操作には、データベース、テーブルの作成、およびSQLを使用してデータのCRUD操作を実行することが含まれます。 1.データベースの作成:createdatabasemy_first_db; 2。テーブルの作成:createTableBooks(idintauto_incrementprimarykey、titlevarchary(100)notnull、authorvarchar(100)notnull、published_yearint); 3.データの挿入:InsertIntoBooks(タイトル、著者、公開_year)VA


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
