亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL操作之JSON數據類型操作詳解

2024-07-24 13:14:50
字體:
來源:轉載
供稿:網友

上一篇文章我們介紹了mysql數據存儲過程參數實例詳解,今天我們看看MySQL操作之JSON數據類型的相關內容。

概述

mysql自5.7.8版本開始,就支持了json結構的數據存儲和查詢,這表明了mysql也在不斷的學習和增加nosql數據庫的有點。但mysql畢竟是關系型數據庫,在處理json這種非結構化的數據時,還是比較別扭的。

創建一個JSON字段的表

首先先創建一個表,這個表包含一個json格式的字段:

CREATE TABLE table_name (  id INT NOT NULL AUTO_INCREMENT,   json_col JSON,  PRIMARY KEY(id));

上面的語句,主要注意json_col這個字段,指定的數據類型是JSON。

插入一條簡單的JSON數據

INSERT INTO  table_name (json_col) VALUES  ('{"City": "Galle", "Description": "Best damn city in the world"}');  

上面這個SQL語句,主要注意VALUES后面的部分,由于json格式的數據里,需要有雙引號來標識字符串,所以,VALUES后面的內容需要用單引號包裹。

插入一條復雜的JSON數據

INSERT INTO table(col) VALUES('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}');

這地方,我們插入了一個json數組。主要還是注意單引號和雙引號的問題。

修改JSON數據

之前的例子中,我們插入了幾條JSON數據,但是如果我們想修改JSON數據里的某個內容,怎么實現了?比如我們向 variations 數組里增加一個元素,可以這樣:

UPDATE myjson SET dict=JSON_ARRAY_APPEND(dict,'$.variations','scheveningen') WHERE id = 2;

這個SQL語句中,$符合代表JSON字段,通過.號索引到variations字段,然后通過JSON_ARRAY_APPEND函數增加一個元素。現在我們執行查詢語句:

SELECT * FROM myjson

得到的結果是:

+----+-----------------------------------------------------------------------------------------+| id | dict                                          |+---+-----------------------------------------------------------------------------------------+| 2 | {"opening": "Sicilian", "variations": ["pelikan", "dragon", "najdorf", "scheveningen"]} |+----+-----------------------------------------------------------------------------------------+1 row in set (0.00 sec)

關于MySQL中,JSON數據的獲取方法,參照官方鏈接JSON Path Syntax

創建索引

MySQL的JSON格式數據不能直接創建索引,但是可以變通一下,把要搜索的數據單獨拎出來,單獨一個數據列,然后在這個字段上鍵一個索引。下面是官方的例子:

mysql> CREATE TABLE jemp (  ->   c JSON,  ->   g INT GENERATED ALWAYS AS (c->"$.id"),  ->   INDEX i (g)  -> );Query OK, 0 rows affected (0.28 sec)mysql> INSERT INTO jemp (c) VALUES   >  ('{"id": "1", "name": "Fred"}'), ('{"id": "2", "name": "Wilma"}'),   >  ('{"id": "3", "name": "Barney"}'), ('{"id": "4", "name": "Betty"}');Query OK, 4 rows affected (0.04 sec)Records: 4 Duplicates: 0 Warnings: 0mysql> SELECT c->>"$.name" AS name   >   FROM jemp WHERE g > 2;+--------+| name  |+--------+| Barney || Betty |+--------+2 rows in set (0.00 sec)mysql> EXPLAIN SELECT c->>"$.name" AS name   >  FROM jemp WHERE g > 2/G*************************** 1. row ***************************      id: 1 select_type: SIMPLE    table: jemp  partitions: NULL     type: rangepossible_keys: i     key: i   key_len: 5     ref: NULL     rows: 2   filtered: 100.00    Extra: Using where1 row in set, 1 warning (0.00 sec)mysql> SHOW WARNINGS/G*************************** 1. row *************************** Level: Note  Code: 1003Message: /* select#1 */ select json_unquote(json_extract(`test`.`jemp`.`c`,'$.name'))AS `name` from `test`.`jemp` where (`test`.`jemp`.`g` > 2)1 row in set (0.00 sec)

這個例子很簡單,就是把JSON字段里的id字段,單獨拎出來成字段g,然后在字段g上做索引,查詢條件也是在字段g上。

字符串轉JSON格式

把json格式的字符串轉換成MySQL的JSON類型:

SELECT CAST('[1,2,3]' as JSON) ;SELECT CAST('{"opening":"Sicilian","variations":["pelikan","dragon","najdorf"]}' as JSON);

所有MYSQL JSON函數

 

Name Description
JSON_APPEND() Append data to JSON document
JSON_ARRAY() Create JSON array
JSON_ARRAY_APPEND() Append data to JSON document
JSON_ARRAY_INSERT() Insert into JSON array-> Return value from JSON column after evaluating path; equivalent to JSON_EXTRACT().
JSON_CONTAINS() Whether JSON document contains specific object at path
JSON_CONTAINS_PATH() Whether JSON document contains any data at path
JSON_DEPTH() Maximum depth of JSON document
JSON_EXTRACT() Return data from JSON document->> Return value from JSON column after evaluating path and unquoting the result; equivalent to JSON_UNQUOTE(JSON_EXTRACT()).
JSON_INSERT() Insert data into JSON document
JSON_KEYS() Array of keys from JSON document
JSON_LENGTH() Number of elements in JSON document
JSON_MERGE() Merge JSON documents, preserving duplicate keys. Deprecated synonym for JSON_MERGE_PRESERVE()
JSON_MERGE_PRESERVE() Merge JSON documents, preserving duplicate keys
JSON_OBJECT() Create JSON object
JSON_QUOTE() Quote JSON document
JSON_REMOVE() Remove data from JSON document
JSON_REPLACE() Replace values in JSON document
JSON_SEARCH() Path to value within JSON document
JSON_SET() Insert data into JSON document
JSON_TYPE() Type of JSON value
JSON_UNQUOTE() Unquote JSON value
JSON_VALID() Whether JSON value is valid

 

總結

以上就是本文關于MySQL操作之JSON數據類型操作詳解的全部內容,希望對大家有所幫助。如有不足之處,歡迎留言指出,小編會及時回復大家并進行修改,努力為廣大編程愛好及工作者提供更好的文章和閱讀體驗。


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内精品伊人久久| 国产视频精品一区二区三区| 国产精彩精品视频| 91精品国产自产在线| 欧美亚洲国产日本| 久久久精品2019中文字幕神马| 亚洲free性xxxx护士白浆| 欧美在线视频在线播放完整版免费观看| 国产成人av网| 中文字幕亚洲无线码a| 黑人巨大精品欧美一区二区三区| 国产精品成人品| 日韩在线观看免费全集电视剧网站| 亚洲人成伊人成综合网久久久| 欧美激情一级欧美精品| 日韩av在线影院| 欧美性猛交99久久久久99按摩| 欧美最猛性xxxxx亚洲精品| 欧美在线视频一二三| 亚洲视频777| 欧美激情在线有限公司| 中文亚洲视频在线| 亚洲韩国日本中文字幕| 亚洲精品v欧美精品v日韩精品| 亚洲黄色在线看| 日韩欧美有码在线| 久久夜色精品国产欧美乱| 黑人巨大精品欧美一区二区一视频| 国产精品一区二区三区在线播放| 久久视频中文字幕| 色综合伊人色综合网| 亚洲欧美激情视频| 91性高湖久久久久久久久_久久99| 亚洲片国产一区一级在线观看| 国产精品99久久久久久久久久久久| 国产日韩欧美在线| 亚洲精品按摩视频| 欧美日产国产成人免费图片| 亚洲综合最新在线| www.99久久热国产日韩欧美.com| 伊人青青综合网站| 蜜月aⅴ免费一区二区三区| 自拍偷拍亚洲精品| 国产美女被下药99| 亚洲激情国产精品| 日本成人激情视频| 欧美激情亚洲一区| 精品视频中文字幕| 亚洲а∨天堂久久精品9966| zzijzzij亚洲日本成熟少妇| 亚洲精品资源美女情侣酒店| 亚洲国产精品女人久久久| 亚洲精品中文字幕女同| 国产福利精品在线| 欧美在线视频一区| 亚洲电影第1页| 国产精品r级在线| 国产一区二区三区精品久久久| 欧洲成人午夜免费大片| 国产精品av免费在线观看| 久久偷看各类女兵18女厕嘘嘘| 亚洲国产精品人人爽夜夜爽| 日本老师69xxx| 国产91精品久久久久| 久久久999精品免费| 欧美国产日产韩国视频| 国产精品美女免费看| 亚洲国产婷婷香蕉久久久久久| 91av在线国产| 亚洲欧美国产精品久久久久久久| 日韩成人在线视频观看| 亚洲国产第一页| 欧美俄罗斯性视频| 久久久av网站| 在线视频精品一| 亚洲国产精彩中文乱码av在线播放| 久热爱精品视频线路一| 国产精品一区二区性色av| 亚洲精品视频播放| 欧美日韩在线观看视频| 亚洲国产日韩欧美在线图片| 亚洲一区二区三| 亚洲天堂免费在线| 欧美又大粗又爽又黄大片视频| 91精品久久久久久久久久入口| 日韩在线www| 中文字幕综合一区| 国产成人福利视频| 国产精品扒开腿爽爽爽视频| 日韩精品在线观| 日韩亚洲在线观看| 国模gogo一区二区大胆私拍| 精品视频中文字幕| 亚洲自拍另类欧美丝袜| 欧美老肥婆性猛交视频| 97视频网站入口| 国产精品黄页免费高清在线观看| 成人免费在线视频网站| 91精品国产91久久久久久久久| 97婷婷大伊香蕉精品视频| 久久久久久69| 亚洲三级黄色在线观看| 亚洲人成电影在线观看天堂色| 亚洲国产精品资源| 成人福利视频在线观看| 亚洲黄色免费三级| 91久久精品视频| 久久视频在线视频| 日本精品视频在线| 国产精品久久婷婷六月丁香| www.日韩不卡电影av| 热久久免费视频精品| 欧美日韩美女在线| 亚洲国产婷婷香蕉久久久久久| 麻豆国产va免费精品高清在线| 亚洲va欧美va国产综合剧情| 国自产精品手机在线观看视频| 久久综合亚洲社区| 日韩免费在线电影| 精品视频久久久久久久| 精品亚洲国产成av人片传媒| 九色91av视频| 国产精品日韩在线播放| 不卡av电影在线观看| 久久久久久尹人网香蕉| 欧美日韩xxx| 日韩视频一区在线| 欧美成人高清视频| 国产在线视频91| 国产欧美日韩亚洲精品| 亚洲精品电影网| 在线日韩精品视频| 欧美专区日韩视频| 欧美性在线观看| 欧美激情国内偷拍| 亚洲美女www午夜| 国产精品免费视频久久久| 色小说视频一区| 国产精品一区二区久久| 奇米4444一区二区三区| 亚洲网站在线观看| 国产欧美在线播放| 在线精品视频视频中文字幕| 国产精品都在这里| 伦伦影院午夜日韩欧美限制| 欧美精品在线看| 亚洲免费一在线| www.99久久热国产日韩欧美.com| 精品久久国产精品| 欧美国产日韩xxxxx| 色妞久久福利网| 精品国产区一区二区三区在线观看| 青青草99啪国产免费| 欧美高清性猛交| 欧美老肥婆性猛交视频| 91欧美日韩一区| 国产精品久久久久久久久粉嫩av| 91高潮精品免费porn| 日韩一区在线视频| 日本欧美在线视频| 亚洲一二在线观看| 亚洲精品乱码久久久久久金桔影视| 久久亚洲精品一区二区| 在线成人中文字幕|