国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL5.7 JSON類型使用詳解

2024-07-24 12:51:07
字體:
供稿:網(wǎng)友

JSON是一種輕量級的數(shù)據(jù)交換格式,采用了獨立于語言的文本格式,類似XML,但是比XML簡單,易讀并且易編寫。對機器來說易于解析和生成,并且會減少網(wǎng)絡(luò)帶寬的傳輸。

    JSON的格式非常簡單:名稱/鍵值。之前MySQL版本里面要實現(xiàn)這樣的存儲,要么用VARCHAR要么用TEXT大文本。 MySQL5.7發(fā)布后,專門設(shè)計了JSON數(shù)據(jù)類型以及關(guān)于這種類型的檢索以及其他函數(shù)解析。 我們先看看MySQL老版本的JSON存取。

示例表結(jié)構(gòu):

CREATE TABLE json_test( id INT, person_desc TEXT )ENGINE INNODB;

我們來插入一條記錄:

NSERT 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格式的話,只能把這條記錄取出來交個應(yīng)用程序,有應(yīng)用程序來解析。

現(xiàn)在到了MySQL5.7,我們重新修改下表結(jié)構(gòu):

ALTER TABLE json_test MODIFY person_desc json;

先看看插入的這行JSON數(shù)據(jù)有哪些KEY:

mysql> SELECT id,json_keys(person_desc) as "keys" FROM json_test/G *************************** 1. row *************************** id: 1 keys: ["authors", "musicians", "programmers"] row in set (0.00 sec)

我們可以看到,里面有三個KEY,分別為authors,musicians,programmers。那現(xiàn)在找一個KEY把對應(yīng)的值拿出來:

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)
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 肃北| 肇东市| 乌兰浩特市| 渝北区| 鄂托克旗| 邵阳市| 靖边县| 饶阳县| 太仆寺旗| 司法| 深圳市| 什邡市| 德令哈市| 霍邱县| 上饶市| 攀枝花市| 大埔区| 贵港市| 台山市| 永嘉县| 望奎县| 罗平县| 鄂伦春自治旗| 建水县| 阿克| 固安县| 布尔津县| 耒阳市| 依兰县| 会理县| 甘肃省| 中阳县| 泉州市| 环江| 朔州市| 望都县| 光山县| 克什克腾旗| 葫芦岛市| 许昌市| 高邮市|