麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久久久久久久久久久国产精品 | 日本在线看片 | 黄色久| 亚洲最黄视频 | 色诱亚洲精品久久久久久 | 久久久www成人免费精品 | 亚洲一区二区三区视频 | 欧美一级黄色片免费观看 | 视频一区二区三区在线播放 | 亚洲天堂成人在线 | 91综合在线观看 | 女人叉开腿让男人桶 | 日韩激情一区二区三区 | 久久免费视频一区二区三区 | 亚洲片在线 | 精品亚洲一区二区三区 | 97人人草| 国产精品久久久久久久久久久天堂 | 国产精品久久久久久久久久妇女 | 成人羞羞在线观看网站 | 久久综合给合久久狠狠狠97色69 | 视频一区二区视频 | 黄色免费影片 | 狠狠干91| 天天操天天看 | 欧美一区二区三区中文字幕 | 国产91极品 | 午夜伦情电午夜伦情电影 | 国产成人精品视频在线 | 国产视频精品在线 | 国产成人免费精品 | 美女污污视频在线观看 | 久章草在线视频 | 激情夜色| 久久性生活免费视频 | 国产免费中文字幕 | 一区二区三区四区视频在线观看 | 美女久久久久 | 欧美国产免费 | 黄色毛片视频在线观看 | 中文字幕一区久久 |