MySQL中JSON类型字段的基本用法实例
在MySQL 5.7及更高版本中,引入了JSON数据类型,用于存储和操作JSON格式的数据,JSON是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,本文将介绍MySQL中JSON类型字段的基本用法实例。
1、创建表并添加JSON类型字段
我们需要创建一个包含JSON类型字段的表,以下是一个简单的示例:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, age INT, address JSON );
在这个示例中,我们创建了一个名为users
的表,其中包含一个名为address
的JSON类型字段。
2、插入JSON数据
向JSON类型字段插入数据时,可以使用JSON格式的字符串,以下是插入JSON数据的示例:
INSERT INTO users (name, age, address) VALUES ('张三', 25, '{"city": "北京", "street": "朝阳路"}');
在这个示例中,我们将一个包含城市和街道信息的JSON字符串插入到address
字段中。
3、查询JSON数据
查询JSON类型字段时,可以使用内置的JSON函数来提取和操作数据,以下是查询JSON数据的示例:
SELECT id, name, age, address->'$.city' AS city, address->'$.street' AS street FROM users;
在这个示例中,我们使用->
操作符从address
字段中提取了city
和street
属性的值,注意,我们需要使用$
符号来访问JSON对象的属性。
4、更新JSON数据
更新JSON类型字段时,可以直接修改JSON字符串,以下是更新JSON数据的示例:
UPDATE users SET address = '{"city": "上海", "street": "南京路"}' WHERE id = 1;
在这个示例中,我们将address
字段中的城市信息更新为上海。
5、删除JSON数据
删除JSON类型字段中的数据时,可以直接将其设置为空字符串,以下是删除JSON数据的示例:
UPDATE users SET address = '' WHERE id = 1;
在这个示例中,我们将address
字段中的数据删除。
6、其他常用JSON函数
除了上述示例中使用的->
操作符外,MySQL还提供了许多其他常用的JSON函数,如:
JSON_EXTRACT(json_doc, path[, path] ...)
:从JSON文档中提取指定路径的值。
JSON_UNQUOTE(json_val)
:去除JSON值的引号。
JSON_ARRAY([value[, value] ...])
:创建一个JSON数组。
JSON_OBJECT([key, value[, key, value] ...])
:创建一个JSON对象。
ISNULL(expression)
:检查表达式是否为NULL,如果表达式为NULL,则返回1;否则返回0。
IFNULL(expression1, expression2)
:如果表达式1为NULL,则返回表达式2的值;否则返回表达式1的值。
JSON_LENGTH(json_val)
:返回JSON值的长度(以字节为单位)。
JSON_TYPE(json_val)
:返回JSON值的类型(如'null'、'object'、'array'、'string'、'number'或'boolean')。
JSON_DEPTH(json_val)
:返回JSON值的深度(即嵌套层级数)。
JSON_SEARCH(json_val, one_or_all, search_str[, escape_char[, path] ...])
:在JSON值中搜索指定的字符串,如果找到匹配项,则返回其路径;否则返回NULL。
JSON_CONTAINS(json_val, one_or_all, search_str[, escape_char[, path] ...])
:检查JSON值是否包含指定的字符串,如果找到匹配项,则返回1;否则返回0。
JSON_KEYS(json_val[, path])
:返回指定路径的JSON对象的键列表,如果没有指定路径,则返回根对象的键列表。
JSON_LENGTH(json_val[, path])
:返回指定路径的JSON对象的键数量,如果没有指定路径,则返回根对象的键数量。
JSON_MERGE(json_doc1, json_doc2[, path])
:将第二个JSON文档合并到第一个JSON文档中,并覆盖相同的键值对,如果没有指定路径,则将第二个文档合并到根对象中。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/339686.html