ホームページ データベース mysql チュートリアル 【原创】MySQL5.7JSON类型使用介绍

【原创】MySQL5.7JSON类型使用介绍

Jun 07, 2016 pm 02:56 PM
json 導入 使用 オリジナル タイプ

JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写。对机器来说易于解析和生成,并且会减少网络带宽的传输。 JSON的格式非常简单:名称/键值。之前MySQL版本里面要实现这样的存储,要么用VARCHAR要么用T

JSON是一种轻量级的数据交换格式,采用了独立于语言的文本格式,类似XML,但是比XML简单,易读并且易编写。对机器来说易于解析和生成,并且会减少网络带宽的传输。

JSON的格式非常简单:名称/键值。之前MySQL版本里面要实现这样的存储,要么用VARCHAR要么用TEXT大文本。 MySQL5.7发布后,专门设计了JSON数据类型以及关于这种类型的检索以及其他函数解析。 我们先看看MySQL老版本的JSON存取。


示例表结构:

CREATE TABLE json_test(
id INT,
person_desc TEXT
)ENGINE INNODB;
ログイン後にコピー

我们来插入一条记录:

INSERT INTO json_test VALUES (1,'{
    "programmers": [{
        "firstName": "Brett",
        "lastName": "McLaughlin",
        "email": "aaaa"
    }, {
        "firstName": "Jason",
        "lastName": "Hunter",
        "email": "bbbb"
    }, {
        "firstName": "Elliotte",
        "lastName": "Harold",
        "email": "cccc"
    }],
    "authors": [{
        "firstName": "Isaac",
        "lastName": "Asimov",
        "genre": "sciencefiction"
    }, {
        "firstName": "Tad",
        "lastName": "Williams",
        "genre": "fantasy"
    }, {
        "firstName": "Frank",
        "lastName": "Peretti",
        "genre": "christianfiction"
    }],
    "musicians": [{
        "firstName": "Eric",
        "lastName": "Clapton",
        "instrument": "guitar"
    }, {
        "firstName": "Sergei",
        "lastName": "Rachmaninoff",
        "instrument": "piano"
    }]
}');
ログイン後にコピー


那一般我们遇到这样来存储JSON格式的话,只能把这条记录取出来交个应用程序,有应用程序来解析。



现在到了MySQL5.7,我们重新修改下表结构:

ALTER TABLE json_test MODIFY person_desc json;
ログイン後にコピー


先看看插入的这行JSON数据有哪些KEY:

mysql> SELECT id,json_keys(person_desc) as "keys" FROM json_test\G
*************************** 1. row ***************************
  id: 1
keys: ["authors", "musicians", "programmers"]
1 row in set (0.00 sec)
ログイン後にコピー


我们可以看到,里面有三个KEY,分别为authors,musicians,programmers。那现在找一个KEY把对应的值拿出来:

mysql> SELECT json_extract(AUTHORS,'$.lastName[0]') AS 'name', AUTHORS FROM
    -> (
    -> SELECT id,json_extract(person_desc,'$.authors[0][0]') AS "authors" FROM json_test
    -> UNION ALL
    -> SELECT id,json_extract(person_desc,'$.authors[1][0]') AS "authors" FROM json_test
    -> UNION ALL
    -> SELECT id,json_extract(person_desc,'$.authors[2][0]') AS "authors" FROM json_test
    -> ) AS T1
    -> ORDER BY NAME DESC\G
*************************** 1. row ***************************
   name: "Williams"
AUTHORS: {"genre": "fantasy", "lastName": "Williams", "firstName": "Tad"}
*************************** 2. row ***************************
   name: "Peretti"
AUTHORS: {"genre": "christianfiction", "lastName": "Peretti", "firstName": "Frank"}
*************************** 3. row ***************************
   name: "Asimov"
AUTHORS: {"genre": "sciencefiction", "lastName": "Asimov", "firstName": "Isaac"}
3 rows in set (0.00 sec)
ログイン後にコピー



现在来把详细的值罗列出来:

mysql> SELECT
    -> json_extract(AUTHORS,'$.firstName[0]') AS "firstname",
    -> json_extract(AUTHORS,'$.lastName[0]') AS "lastname",
    -> json_extract(AUTHORS,'$.genre[0]') AS "genre"
    -> FROM
    -> (
    -> SELECT id,json_extract(person_desc,'$.authors[0]') AS "authors" FROM json
_test
    -> ) AS T\G
*************************** 1. row ***************************
firstname: "Isaac"
 lastname: "Asimov"
    genre: "sciencefiction"
1 row in set (0.00 sec)
ログイン後にコピー


我们进一步来演示把authors 这个KEY对应的所有对象删掉。

mysql> UPDATE json_test
    -> SET person_desc = json_remove(person_desc,'$.authors')\G
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
ログイン後にコピー

查找下对应的KEY,发现已经被删除掉了。

mysql> SELECT json_contains_path(person_desc,'all','$.authors') as authors_exist
s FROM json_test\G
*************************** 1. row ***************************
authors_exists: 0
1 row in set (0.00 sec)
ログイン後にコピー



总结下, 虽然MySQL5.7 开始支持JSON数据类型,但是我建议如果要使用的话,最好是把这样的值取出来,然后在应用程序段来计算,毕竟数据库是用来处理简单数据的。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

NetEase メールボックス マスターの使用方法 NetEase メールボックス マスターの使用方法 Mar 27, 2024 pm 05:32 PM

NetEase Mailbox は、中国のネットユーザーに広く使用されている電子メール アドレスとして、その安定した効率的なサービスで常にユーザーの信頼を獲得してきました。 NetEase Mailbox Master は、携帯電話ユーザー向けに特別に作成された電子メール ソフトウェアで、電子メールの送受信プロセスが大幅に簡素化され、電子メールの処理がより便利になります。 NetEase Mailbox Master の使い方と具体的な機能について、以下ではこのサイトの編集者が詳しく紹介しますので、お役に立てれば幸いです。まず、モバイル アプリ ストアで NetEase Mailbox Master アプリを検索してダウンロードします。 App Store または Baidu Mobile Assistant で「Ne​​tEase Mailbox Master」を検索し、画面の指示に従ってインストールします。ダウンロードとインストールが完了したら、NetEase の電子メール アカウントを開いてログインします。ログイン インターフェイスは次のとおりです。

Baidu Netdisk アプリの使用方法 Baidu Netdisk アプリの使用方法 Mar 27, 2024 pm 06:46 PM

クラウド ストレージは今日、私たちの日常生活や仕事に欠かせない部分になっています。中国有数のクラウド ストレージ サービスの 1 つである Baidu Netdisk は、強力なストレージ機能、効率的な伝送速度、便利な操作体験により多くのユーザーの支持を得ています。また、重要なファイルのバックアップ、情報の共有、オンラインでのビデオの視聴、または音楽の聴きたい場合でも、Baidu Cloud Disk はニーズを満たすことができます。しかし、Baidu Netdisk アプリの具体的な使用方法を理解していないユーザーも多いため、このチュートリアルでは Baidu Netdisk アプリの使用方法を詳しく紹介します。まだ混乱しているユーザーは、この記事に従って詳細を学ぶことができます。 Baidu Cloud Network Disk の使用方法: 1. インストール まず、Baidu Cloud ソフトウェアをダウンロードしてインストールするときに、カスタム インストール オプションを選択してください。

BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? Apr 26, 2024 am 09:40 AM

MetaMask (中国語ではリトル フォックス ウォレットとも呼ばれます) は、無料で評判の高い暗号化ウォレット ソフトウェアです。現在、BTCC は MetaMask ウォレットへのバインドをサポートしており、バインド後は MetaMask ウォレットを使用してすぐにログイン、値の保存、コインの購入などが可能になり、初回バインドで 20 USDT のトライアル ボーナスも獲得できます。 BTCCMetaMask ウォレットのチュートリアルでは、MetaMask の登録方法と使用方法、および BTCC で Little Fox ウォレットをバインドして使用する方法を詳しく紹介します。メタマスクウォレットとは何ですか? 3,000 万人を超えるユーザーを抱える MetaMask Little Fox ウォレットは、現在最も人気のある暗号通貨ウォレットの 1 つです。無料で使用でき、拡張機能としてネットワーク上にインストールできます。

PHP 配列を JSON に変換するためのパフォーマンス最適化のヒント PHP 配列を JSON に変換するためのパフォーマンス最適化のヒント May 04, 2024 pm 06:15 PM

PHP 配列を JSON に変換するためのパフォーマンスの最適化方法には、JSON 拡張機能と json_encode() 関数の使用、文字エスケープを回避するためのバッファーの使用、およびサードパーティのエンコード結果の使用の検討が含まれます。 JSONエンコーディングライブラリ。

Xiaomi Autoアプリの使い方 Xiaomi Autoアプリの使い方 Apr 01, 2024 pm 09:19 PM

Xiaomi 車用ソフトウェアは、車のリモート制御機能を提供し、ユーザーが携帯電話やコンピュータを介して車両のドアや窓の開閉、エンジンの始動、車両のエアコンやオーディオの制御など、車両を遠隔制御できるようにします。このソフトウェアの使い方や内容について、一緒に学びましょう。 Xiaomi Auto アプリの機能と使用方法の包括的なリスト 1. Xiaomi Auto アプリは 3 月 25 日に Apple AppStore で公開され、Android スマートフォンのアプリストアからダウンロードできるようになりました; 車の購入: 主要なハイライトと技術パラメータについて学びますXiaomi Auto のサービスを利用して、試乗の予約をし、Xiaomi 車の設定と注文を行い、車の受け取りの To-Do 項目のオンライン処理をサポートします。 3. コミュニティ: Xiaomi Auto ブランド情報を理解し、車の経験を交換し、素晴らしいカーライフを共有します; 4. 車の制御: 携帯電話はリモコン、遠隔制御、リアルタイム セキュリティ、簡単です。

Jackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化をどのように制御しますか? Jackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化をどのように制御しますか? May 06, 2024 pm 10:09 PM

Jackson ライブラリのアノテーションは、JSON のシリアル化と逆シリアル化を制御します。 シリアル化: @JsonIgnore: プロパティを無視します @JsonProperty: 名前を指定します @JsonGetter: get メソッドを使用します @JsonSetter: set メソッドを使用します Deserialization: @JsonIgnoreProperties: プロパティ @ JsonProperty を無視します:名前を指定 @JsonCreator: コンストラクターを使用 @JsonDeserialize: カスタム ロジック

Dewu分割払いのご利用方法 Dewu分割払いのご利用方法 Mar 24, 2024 pm 01:46 PM

Dewu の分割購入の使い方 Dewu APP では、分割払いサービスを利用して、好きな商品を購入できます。 Dewu の分割購入の使い方を知らない人がほとんどです。 次に、編集者がユーザーに提供する Dewu の分割購入です。使い方のチュートリアルもございますので、ご興味のある方はぜひご覧ください! Dewu 使い方チュートリアル Dewu 分割払いの使い方 1. まず Dewu APP を開いてメインページに入り、お気に入りの製品を選択して購入ページに入ります; 2. 次に、下の写真の製品購入ページで [今すぐ購入] をクリックします右下隅; 3、適切なコード番号を選択し、左側の価格をクリックします; 4. 次に、注文確認ページで、右下隅の [注文を送信] を選択します; 5. 最後に、支払いページで、 [Huabei 分割払い] の後ろのボタンをチェックして、分割払いの種類を選択するだけで完了です

ビデオ マトリックス アカウントを作成するにはどうすればよいですか?どのようなタイプのマトリックスアカウントがありますか? ビデオ マトリックス アカウントを作成するにはどうすればよいですか?どのようなタイプのマトリックスアカウントがありますか? Mar 21, 2024 pm 04:57 PM

ショートビデオプラットフォームの人気に伴い、ビデオマトリックスアカウントマーケティングが新たなマーケティング手法となっています。企業や個人は、さまざまなプラットフォームで複数のアカウントを作成および管理することで、ブランドのプロモーション、ファンの増加、製品の販売などの目標を達成できます。この記事では、ビデオ マトリックス アカウントの効果的な使用方法について説明し、さまざまな種類のビデオ マトリックス アカウントを紹介します。 1. ビデオ マトリックス アカウントを作成するにはどうすればよいですか?優れたビデオ マトリックス アカウントを作成するには、次の手順に従う必要があります。 まず、ブランド コミュニケーション、ファンの増加、製品の販売など、ビデオ マトリックス アカウントの目標を明確にする必要があります。明確な目標を持つことは、それに応じた戦略を立てるのに役立ちます。 2. プラットフォームの選択: 対象視聴者に基づいて、適切なショートビデオ プラットフォームを選択します。現在主流のショートビデオプラットフォームには、Douyin、Kuaishou、Huoshan Videoなどが含まれます。

See all articles