MySQL查詢和篩選存儲(chǔ)的JSON數(shù)據(jù)的操作方法
一、背景介紹
JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,在現(xiàn)代應(yīng)用程序中得到了廣泛的應(yīng)用。處理和存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù)變得越來越重要。MySQL 是一種常用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),為了支持非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)和查詢,于是 MySQL引入了對(duì)JSON數(shù)據(jù)類型的支持。
MySQL從5.7.8版本開始添加了對(duì)JSON的支持,使得我們可以在MySQL數(shù)據(jù)庫中存儲(chǔ)和查詢JSON格式的數(shù)據(jù)。本文將介紹如何使用MySQL查詢和篩選存儲(chǔ)的JSON數(shù)據(jù),并提供相應(yīng)的代碼示例。
二、支持的JSON數(shù)據(jù)類型
從MySQL 5.7.8版本開始,MySQL引入了對(duì)JSON數(shù)據(jù)類型的支持。MySQL可以存儲(chǔ)任意的JSON數(shù)據(jù),包括對(duì)象、數(shù)組、字符串等。并且MySQL還對(duì)JSON數(shù)據(jù)類型還提供了一系列的操作函數(shù)和運(yùn)算符,以便于對(duì)JSON數(shù)據(jù)進(jìn)行查詢和操作。
三、基礎(chǔ)數(shù)據(jù)
3.1 創(chuàng)建表
DROP TABLE IF EXISTS `my_table`; CREATE TABLE `my_table` ( `id` int NOT NULL, `message` json NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;
上述示例創(chuàng)建了一個(gè)名為 my_table
的表,包含一個(gè)名為 message
的JSON列。message
列可以存儲(chǔ)任意的JSON數(shù)據(jù)。
3.2 插入 JSON 數(shù)據(jù)
要在JSON列中插入數(shù)據(jù),可以使用JSON函數(shù)將JSON字符串轉(zhuǎn)換為JSON數(shù)據(jù)類型。以下是一個(gè)示例:
INSERT INTO `my_table` (`id`, `message`) VALUES (1, '{\"age\": 30, \"name\": \"John\"}'); INSERT INTO `my_table` (`id`, `message`) VALUES (2, '{\"age\": 40, \"name\": \"Mary\"}'); INSERT INTO `my_table` (`id`, `message`) VALUES (3, '{\"age\": 50, \"name\": \"Tom\"}'); INSERT INTO `my_table` (`id`, `message`) VALUES (4, '{\"age\": 60, \"name\": \"Jermy\"}');
上述示例在my_table
表中插入了4條記錄,其中 message
列包含一個(gè)JSON對(duì)象。
3.3 查詢 JSON 數(shù)據(jù)
可以使用->或者->>運(yùn)算符來查詢JSON數(shù)據(jù)。->運(yùn)算符返回JSON對(duì)象的屬性值,->>運(yùn)算符返回屬性值的字符串表示。
以下是兩個(gè)
查詢JSON數(shù)據(jù)的示例1:
SELECT message->'$.name' AS name FROM my_table;
結(jié)果如下:
查詢示例2:
SELECT * FROM my_table WHERE JSON_EXTRACT(message, '$.age') > 40
結(jié)果如下:
四、操作函數(shù)
MySQL提供了一系列的JSON數(shù)據(jù)操作函數(shù),以方便對(duì)JSON數(shù)據(jù)進(jìn)行查詢和操作。以下是一些常用的JSON數(shù)據(jù)操作函數(shù):
4.1 JSON_OBJECT
JSON_OBJECT
函數(shù)用于創(chuàng)建一個(gè)JSON對(duì)象。以下是一個(gè)示例:
SELECT JSON_OBJECT('name', 'John', 'age', 30) AS message;
上述示例創(chuàng)建了一個(gè)名為 message
的JSON對(duì)象,包含name和age屬性。
4.2 JSON_ARRAY
JSON_ARRAY
函數(shù)用于創(chuàng)建一個(gè)JSON數(shù)組。以下是一個(gè)示例:
SELECT JSON_ARRAY('apple', 'banana', 'orange') AS fruits;
上述示例創(chuàng)建了一個(gè)名為fruits的JSON數(shù)組,包含三個(gè)元素。
4.3 JSON_EXTRACT
JSON_EXTRACT
函數(shù)用于提取JSON數(shù)據(jù)中的值。以下是一個(gè)示例:
SELECT JSON_EXTRACT('{"name": "John", "age": 30}', '$.name') AS name;
上述示例從JSON數(shù)據(jù)中提取了name屬性的值。
以上只是最基本的用法,關(guān)于MySQL操作JSON數(shù)據(jù)類型的函數(shù)還有很多高級(jí)用法,等用到的時(shí)候再學(xué)。
本文完結(jié)!
到此這篇關(guān)于MySQL如何查詢和篩選存儲(chǔ)的JSON數(shù)據(jù)的文章就介紹到這了,更多相關(guān)mysql查詢JSON數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Mysql中json類型數(shù)據(jù)查詢問題
- mysql中json基礎(chǔ)查詢?cè)斀?附圖文)
- Mysql中json類型數(shù)據(jù)查詢的實(shí)現(xiàn)
- Mysql中json類型查詢方法示例
- MySQL實(shí)現(xiàn)查詢處理JSON數(shù)據(jù)的示例詳解
- Mysql如何對(duì)json數(shù)據(jù)進(jìn)行查詢及修改
- Mysql內(nèi)儲(chǔ)存JSON字符串根據(jù)條件進(jìn)行查詢
- Mysql 直接查詢存儲(chǔ)的Json字符串中的數(shù)據(jù)
- Mysql將查詢結(jié)果集轉(zhuǎn)換為JSON數(shù)據(jù)的實(shí)例代碼
- MySQL中查詢json格式的字段實(shí)例詳解
- MySQL中查詢JSON字段的實(shí)現(xiàn)示例
相關(guān)文章
MySQL循環(huán)語句之while循環(huán)測(cè)試
MySQL有循環(huán)語句操作,while 循環(huán)、loop循環(huán)和repeat循環(huán),目前我只測(cè)試了 while 循環(huán),下面與大家分享下2014-07-07MySQL存儲(chǔ)函數(shù)以及觸發(fā)器詳解
這篇文章詳細(xì)給大家介紹了MySQL-SQL存儲(chǔ)函數(shù)以及觸發(fā)器,文中有詳細(xì)的代碼示例,對(duì)我們學(xué)習(xí)MySQL有一定的幫助,感興趣的朋友可以參考閱讀下2023-06-06MySQL時(shí)間戳與日期格式的相互轉(zhuǎn)換
在MySQL數(shù)據(jù)庫中,時(shí)間戳和日期格式是常用的數(shù)據(jù)類型,在MySQL中,我們可以使用函數(shù)還相互轉(zhuǎn)換時(shí)間戳和日期格式,下面我將詳細(xì)的給大家介紹如何進(jìn)行轉(zhuǎn)換,并提供相應(yīng)的代碼示例,感興趣的小伙伴跟著小編一起來看看吧2024-01-01mysql中tonumber函數(shù)使用及注意事項(xiàng)
在MySQL中,沒有直接的TO_NUMBER函數(shù),但可以通過CAST或CONVERT實(shí)現(xiàn)字符串到數(shù)字的轉(zhuǎn)換,轉(zhuǎn)換前需明確數(shù)據(jù)類型,了解轉(zhuǎn)換語法,并注意錯(cuò)誤處理、空值處理、格式合規(guī)性和精度問題,本文介紹mysql中tonumber函數(shù)使用及注意事項(xiàng),感興趣的朋友一起看看吧2025-02-02MySQL報(bào)錯(cuò) table “xxx” doesn‘t exit的解決
本文主要介紹了MySQL報(bào)錯(cuò) table “xxx” doesn‘t exit的解決,主要原因是英文字母大小寫敏感導(dǎo)致,下面就來介紹一下解決方法,感興趣的可以了解一下2023-10-10