MySQL 5.7 json の紹介の序文
MySQL 5.7 では、Json と Generated という 2 つの新しいフィールド タイプが追加されています。Generated タイプがなければ、Json タイプは強力であり、Json では使用できません。 Json はインデックスをサポートしていないため、Json でデータをクエリする場合、実行効率の観点からは完全なテーブル スキャンになりますが、生成された環境では使用できません。 Generated 型は単なる仮想フィールドであり、値は他のフィールド、またはフィールド間の変換から取得されます。この型は、Generated の特性を使用して間接的にインデックスを作成できます。 Json 型のキーのインデックスを使用すると、Json がインデックスを作成できない問題が解決されます。つまり、Generated 型の生成により、Json 型のインデックス作成の問題がサポートされます。 JSON 値には、単一値、配列、タプル、注釈付き Json 形式などのいくつかの形式が含まれます。
Json型の登場は、客観的には研究開発に利便性をもたらし、NoSQLと同様のサポートを提供しますが、DBAの運用保守の観点から見ると、この問題は大きな問題と一致する可能性があります。はい、実際の運用では json がテキスト フィールドのバリアントになる可能性があります。DBA が今後 5.7 を使用する際にはこのタイプに細心の注意を払うことを願っています。
JSONフィールドを含むテーブルを作成する
JSONフィールドを含むテストテーブルを直接作成する
CREATE TABLE json_test ( id int(11) NOT NULL AUTO_INCREMENT, group_name varchar(20) DEFAULT NULL, user_info json DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
またはJSONタイプのフィールドをテーブルに追加する
ALTER TABLE json_test ADD COLUMN user_info JSON DEFAULT NULL;
データを挿入する
JSONフィールド関連のクエリ
1.すべての結果
2: JSON_EXTRACT クエリ
JSON_EXTRACT この関数は主に、user_info で age=21 のレコードを検索したり、name='wangwei' または ' %wangwei% のような名前でレコードをクエリしたりするなど、完全一致に使用されます。 'ファジークエリ:
SELECT * FROM json_test WHERE JSON_EXTRACT(user_info,'$.age')=21;
値が配列の場合、配列の開始位置の値は 0 です。同時に、MySQL はバージョン 5.5.9 で -> などを追加しました。 JSON_EXTRACT の代替は次のように記述されます:
SELECT * FROM json_test WHERE user_info->"$.age"=21;
3. JSON_SEARCH クエリ
JSON_SEARCH 文字列検索関数は、すべての JSON キーのキー値が文字列 'wangwei' であるレコードを検索します。プラス % は、次のような意味です。
SELECT * FROM json_test WHERE JSON_SEARCH(user_info,'all','wangwei') IS NOT NULL; SELECT * FROM json_test WHERE JSON_SEARCH(user_info,'all','wangwei%') IS NOT NULL; SELECT * FROM json_test WHERE JSON_SEARCH(user_info,'all','%wangwei%') IS NOT NULL;
純粋な JSON タイプ:
OBJECT: JSON オブジェクト; ARRAY: JSON 配列; BOOLEAN: JSON の true および false リテラル
数値タイプ:
INTEGER: MySQL TINYINT、SMALLINT、MEDIUMINT、INT および BIGINT スカラー;DOUBLE: MySQL DOUBLE FLOAT スカラー;DECIMAL: MySQL DECIMAL および NUMERIC スカラー
時間タイプ:DATETIME: MySQL DATETIMEおよび TIMESTAMP スカラー。 DATE: MySQL DATE スカラー;TIME: MySQL TIME スカラー
バイナリ型:
BLOB: MySQL バイナリ型スカラー;BINARY、VARBINARY、BLOB;BIT: MySQL BIT スカラー
他のすべてのタイプ:
OPAQUE (生ビット)
9. JSON_UNQUOTE は前後の特殊文字を削除します
JSON_UNQUOTE は主に前後の特殊文字を削除し、値をフォーマットするために使用されます。現在、次の文字がサポートされています。 Json 列と生成された列 ((上)、その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) にご注意ください。