欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql5.7 新增的json字段類型用法實(shí)例分析

 更新時(shí)間:2020年02月19日 10:30:07   作者:懷素真  
這篇文章主要介紹了mysql5.7 新增的json字段類型用法,結(jié)合實(shí)例形式分析了mysql5.7 新增的json字段類型具體功能、使用方法及操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了mysql5.7 新增的json字段類型用法。分享給大家供大家參考,具體如下:

一、我們先創(chuàng)建一個(gè)表,準(zhǔn)備點(diǎn)數(shù)據(jù)

CREATE TABLE `json_test` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
 `json` json DEFAULT NULL COMMENT 'json數(shù)據(jù)',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

二、檢索json列的字段

通過使用 -> 或 ->> 運(yùn)算符檢索json列的字段

select id, json->'$[0].items[0].name' from json_test;

select id, json->>'$[0].items[0].name' from json_test;

使用 -> 和 ->> 的區(qū)別是結(jié)果用了引號(hào)包裹。

三、處理json的一些函數(shù)

JSON_PRETTY(json_val) 以優(yōu)雅的格式顯示json值

select id, JSON_PRETTY(json) from json_test\G;

JSON_CONTAINS(target, candidate[, path]) 判斷給定的candidate是否包含在target中,如果指定了path,則在指定路徑中進(jìn)行查找。

注意,注意,注意,這里的candidate如果是數(shù)字,需要用單引號(hào)包裹,如果是字符串,單引號(hào)里再加上雙引號(hào)包裹。

select JSON_CONTAINS(json->'$[0].name', '"1號(hào)籃子"') from json_test;
select JSON_CONTAINS(json, '"1號(hào)籃子"', '$[0].name') from json_test;

JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...)  判斷json_doc中的路徑是否存在,通俗點(diǎn)說就是json中的key是否存在

select JSON_CONTAINS_PATH(json, 'one', '$[0].name', '$[0].test') from json_test;

第二個(gè)參數(shù)'one'表示只要有一個(gè)key存在就返回1,否則為0

select JSON_CONTAINS_PATH(json, 'all', '$[0].name', '$[0].test') from json_test;

第二個(gè)參數(shù)'all'表示所有key存在才返回1,否則為0

JSON_SET(json_doc, path, val[, path, val] ...) 插入或更新數(shù)據(jù)并返回結(jié)果

select JSON_SET(json, '$[0].name', '2號(hào)籃子', '$[0].test', 'test') from json_test;

我們修改$[0].name的值,并添加一個(gè)key為test,值為test的項(xiàng)

JSON_INSERT(json_doc, path, val[, path, val] ...) 插入數(shù)據(jù)并返回結(jié)果,但不替換現(xiàn)有值。

select JSON_INSERT(json, '$[0].name', '2號(hào)籃子', '$[0].exts', '擴(kuò)展') from json_test;

這時(shí)$[0].name不會(huì)被更新,只會(huì)新增一個(gè)字段$[0].exts

JSON_REPLACE(json_doc, path, val[, path, val] ...) 替換現(xiàn)有值并返回結(jié)果

select JSON_REPLACE(json, '$[0].name', '替換') from json_test;

將$[0].name中的值替換成新值

JSON_REMOVE(json_doc, path[, path] ...)  刪除數(shù)據(jù)并返回結(jié)果

select JSON_REMOVE(json, '$[0].name') from json_test;

刪除$[0].name這項(xiàng)數(shù)據(jù)

JSON_KEYS(json_doc[, path]) 獲取json文檔中的所有鍵

select JSON_KEYS(json, '$[0]') from json_test;

獲取$[0]路徑下的所有鍵

JSON_LENGTH(json_doc[, path]) 獲取json文檔的長(zhǎng)度

select JSON_LENGTH(json, '$[0]') from json_test;

獲取$[0]下的元素?cái)?shù)量

JSON_EXTRACT(json_doc, path[, path] ...)  返回json文檔中的數(shù)據(jù)

select JSON_EXTRACT(json, '$[0]') from json_test;
select JSON_EXTRACT(json, '$[0].name') from json_test;

返回json文檔指定路徑下的數(shù)據(jù)

JSON_ARRAY([val[, val] ...])  創(chuàng)建json數(shù)組

select JSON_ARRAY(1, '2', true, 5.6, null, now());

JSON_OBJECT([key, val[, key, val] ...]) 通過鍵值對(duì), 創(chuàng)建json對(duì)象

select JSON_OBJECT('name', 'xiaoxu', 'age', 28, 'height', 1.72);

注意,這里鍵和值要成對(duì)出現(xiàn)

JSON_MERGE_PATCH(json_doc, json_doc[, json_doc] ...)  合并json文檔,如果有重復(fù)鍵,后面的數(shù)據(jù)覆蓋前面的

select JSON_MERGE_PATCH('{"name":"test1"}', '{"name":"test2"}');

JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)  合并json文檔,如果有重復(fù)鍵,則會(huì)通過數(shù)組把值都保存起來

select JSON_MERGE_PRESERVE('{"name":"test1"}', '{"name":"test2"}');

JSON_QUOTE(string)  通過用雙引號(hào)字符包裹并轉(zhuǎn)義內(nèi)部引號(hào)和其他字符

select JSON_QUOTE('你好"世界"');

JSON_UNQUOTE(json_val)  將轉(zhuǎn)義字符轉(zhuǎn)換回普通字符

select JSON_UNQUOTE('你好\\t\"世界\"');

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務(wù)操作技巧匯總》、《MySQL存儲(chǔ)過程技巧大全》及《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總

希望本文所述對(duì)大家MySQL數(shù)據(jù)庫計(jì)有所幫助。

相關(guān)文章

  • 淺談innodb的索引頁結(jié)構(gòu),插入緩沖,自適應(yīng)哈希索引

    淺談innodb的索引頁結(jié)構(gòu),插入緩沖,自適應(yīng)哈希索引

    下面小編就為大家?guī)硪黄獪\談innodb的索引頁結(jié)構(gòu),插入緩沖,自適應(yīng)哈希索引。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • mysql使用force index的問題解決

    mysql使用force index的問題解決

    FORCE INDEX是MySQL中的一個(gè)查詢提示,本文主要介紹了mysql使用force index的問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • MySQL備份與恢復(fù)之熱拷貝(4)

    MySQL備份與恢復(fù)之熱拷貝(4)

    熱拷貝支持服務(wù)運(yùn)行中進(jìn)行備份,速度快,性能好,但它的劣勢(shì)在于只能備份MyIsam的表,無法備份InnoDB的表,對(duì)熱拷貝感興趣的朋友可以參考一下這篇文章
    2015-08-08
  • mysql.user表查看數(shù)據(jù)庫所有用戶信息SQL語句

    mysql.user表查看數(shù)據(jù)庫所有用戶信息SQL語句

    在MySQL中查看賬號(hào)信息有多種方法,最直接的是通過執(zhí)行SQL查詢,從mysql.user表中獲取用戶及其權(quán)限等詳細(xì)信息,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • 在MySQL中同時(shí)查找兩張表中的數(shù)據(jù)的示例

    在MySQL中同時(shí)查找兩張表中的數(shù)據(jù)的示例

    這篇文章主要介紹了在MySQL中同時(shí)查找兩張表中的數(shù)據(jù)的示例,即一次查詢操作返回兩張表的結(jié)果,需要的朋友可以參考下
    2015-07-07
  • mysql 5.7.27 winx64安裝配置方法圖文教程

    mysql 5.7.27 winx64安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 5.7.27 winx64安裝配置方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Centos 6.5 下安裝mysql 5.6.21的方法

    Centos 6.5 下安裝mysql 5.6.21的方法

    本文給大家?guī)鞢entos 6.5 下安裝mysql 5.6.21的方法,操作方法比較簡(jiǎn)單,介紹的非常詳細(xì),感興趣的朋友可以參考下操作步驟
    2016-09-09
  • mysql創(chuàng)建索引的3種方法實(shí)例

    mysql創(chuàng)建索引的3種方法實(shí)例

    大家應(yīng)該都知道索引的建立對(duì)于MySQL數(shù)據(jù)庫的高效運(yùn)行是很重要的,索引可以大大提升MySQL的檢索速度,下面這篇文章主要給大家介紹了關(guān)于mysql創(chuàng)建索引的3種方法,需要的朋友可以參考下
    2023-02-02
  • MySQL優(yōu)化之大字段longtext、text所生產(chǎn)的問題

    MySQL優(yōu)化之大字段longtext、text所生產(chǎn)的問題

    本文主要介紹了MySQL優(yōu)化之大字段longtext、text所生產(chǎn)的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • MySQL 函數(shù)索引的優(yōu)化方案

    MySQL 函數(shù)索引的優(yōu)化方案

    這篇文章主要介紹了MySQL 函數(shù)索引及優(yōu)化方案的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-09-09

最新評(píng)論