MySQL的JSON 数据类型

这篇具有很好参考价值的文章主要介绍了MySQL的JSON 数据类型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述:

MySQL提供了一个专门用于存储JSON数据的数据类型:JSON。JSON数据类型允许您在MySQL数据库中存储和操作JSON格式的数据。

以下是关于JSON数据类型的一些基本操作和函数:

创建表:

要在表中创建一个JSON类型的列,您可以像这样定义:

CREATE TABLE example (

    id INT AUTO_INCREMENT PRIMARY KEY,

    data JSON

);

插入数据:

要向表中插入JSON数据,您可以编写如下的INSERT语句:

INSERT INTO example (data) VALUES ('{"name": "张三", "age": 25, "address": {"city": "北京", "street": "朝阳区"}}');

查询数据:

要查询JSON数据,您可以使用各种JSON函数。以下是一些示例:

JSON_EXTRACT() 或 ->:从JSON对象中提取一个值。

JSON_EXTRACT() 例子:

SELECT JSON_EXTRACT(data, '$.name') as name FROM example;

MySQL的JSON 数据类型

-> 例子:

SELECT data->'$.name' as name FROM example;

MySQL的JSON 数据类型

JSON_UNQUOTE():此函数用于去除JSON值的双引号。

SELECT JSON_UNQUOTE(data->'$.name') as name FROM example;

MySQL的JSON 数据类型

->>:这是 -> 和 JSON_UNQUOTE() 的简写,用于提取JSON值并去除双引号

SELECT data->>'$.name' as name FROM example;

MySQL的JSON 数据类型

JSON_OBJECT():创建一个JSON对象。

SELECT JSON_OBJECT('key1', 'value1', 'key2', 'value2') AS json_object;

SELECT JSON_OBJECT('name', data->>'$.name', 'city', data->>'$.address.city') as output FROM example;

MySQL的JSON 数据类型

JSON_ARRAY():创建一个JSON数组。

SELECT JSON_ARRAY('value1', 'value2', 'value3') AS json_array;

JSON_LENGTH():此函数用于计算JSON数组或对象的长度。

INSERT INTO example (data) VALUES ('{"hobbies": ["basketball", "football", "reading"]}');

SELECT JSON_LENGTH(data, '$.hobbies') as output FROM example WHERE id = 2;

MySQL的JSON 数据类型

JSON_MERGE_PATCH():合并两个JSON文档。

SELECT JSON_MERGE_PATCH('{"key1": "value1", "key2": "value2"}', '{"key2": "new_value2", "key3": "value3"}') AS merged_json;

$ 符号:

在MySQL的JSON查询和操作函数中,$ 符号代表JSON路径表达式的根元素。它代表了整个JSON对象。使用$. 作为前缀来访问JSON对象的属性。JSON路径表达式用于定位和操作JSON数据中的特定部分。

例如,假设我们有以下JSON对象:

{

    "name": "张三",

    "age": 25,

    "address": {

        "city": "北京",

        "street": "朝阳区"

    }

}

通过使用JSON路径表达式,我们可以定位和操作这个对象的各个属性:

  • $.name:表示名字("张三")。
  • $.age:表示年龄(25)。
  • $.address:表示地址对象({"city": "北京", "street": "朝阳区"})。
  • $.address.city:表示城市("北京")。
  • $.address.street:表示街道("朝阳区")。

在MySQL中,我们可以将这些JSON路径表达式与JSON查询和操作函数一起使用,例如JSON_EXTRACT()、->、JSON_SET()等,以定位和操作JSON数据。需要注意的是,JSON_EXTRACT() 和 -> 都会返回带有双引号的字符串值,你可以使用 JSON_UNQUOTE() 函数或 ->> 运算符去除双引号。

请注意,JSON路径表达式是区分大小写的,因此$.name 和 $.Name 是不同的路径。同时,若属性名中包含特殊字符,可以用双引号将属性名括起来,如 $.address."zip-code"。

修改JSON数据:

MySQL提供了用于修改JSON数据的内置函数,例如JSON_SET()和JSON_REPLACE()。以下是一些示例:

使用JSON_SET()更新JSON对象中的某个值:

UPDATE example SET data = JSON_SET(data, '$.age', 26) WHERE id = 1;

使用JSON_REPLACE()替换JSON对象中的某个值:

UPDATE example SET data = JSON_REPLACE(data, '$.address.city', '上海') WHERE id = 1;

索引JSON数据:

虽然JSON字段不支持传统的索引,但可以使用虚拟列和生成列来创建索引。例如,为"name"键创建索引:

ALTER TABLE example ADD COLUMN name VARCHAR(255) GENERATED ALWAYS AS (data->'$.name') VIRTUAL;

CREATE INDEX idx_example_name ON example (name);

总结

这只是MySQL提供的JSON函数中的一小部分。您可以在官方文档中找到更多关于JSON函数和操作的信息:

MySQL :: MySQL 8.0 Reference Manual :: 11.5 The JSON Data Type文章来源地址https://www.toymoban.com/news/detail-429955.html

到了这里,关于MySQL的JSON 数据类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql 5.7 json 类型 json 数组类型 普通字符串类型 10w数据 查询速度差异

    建表语句ddl 10w 数据 插入 存储过程  json 类型 vs 普通字符串类型 建表语句ddl CREATE TABLE tb_json_array_test ( id INT NOT NULL AUTO_INCREMENT, user_no VARCHAR(100), user_name VARCHAR(100), score INT, create_time date, update_time date, remark VARCHAR(100), field1 VARCHAR(100), field2 VARCHAR(100), field3 VARCHAR(100), field4 VARCHAR(

    2024年02月04日
    浏览(48)
  • Mysql中json类型数据查询

            mysql在5.7版本之后就开始支持json数据类型,并且mysql8.0版本对json的处理已经做的非常完善了。json数据类型的优点缺点可自己查询,本文主要介绍一些关于json数据类型的查询操作。 下面用这个表来执行查询演示: 插入几条数据 查询json对象指定属性值的数据 1、函数

    2024年02月13日
    浏览(47)
  • Java语言创建包含以上数据类型的MySQL表,并提供批量新增数据、批量修改数据、删除数据以及字段的DDL语句的详细代码示例

    以下是使用Java语言创建包含以上数据类型的MySQL表,并提供批量新增数据、批量修改数据、删除数据以及字段的DDL语句的详细代码示例: 请注意,上述代码中的DB_URL、USER和PASS需要根据实际情况进行修改,以连接到正确的MySQL数据库。另外,需要确保已经导入了适当的JDBC驱动

    2024年02月15日
    浏览(75)
  • 在前后端分离的项目中,Springboot vue,前端把json传到后端,后端用一个类接收,json中的数据是怎么转换类型的

    在前后端分离的项目中,前端通常会将数据以 JSON 格式传输给后端,后端需要将接收到的 JSON 数据转换为对应的类型。这个过程可以通过后端框架和库来自动完成。 在Spring Boot中,后端可以使用相关的库来实现JSON数据的转换。常见的库包括Jackson、Gson和FastJson等。这些库提供

    2024年02月13日
    浏览(67)
  • MYSQL中JSON类型介绍

    在mysql未支持json数据类型时,我们通常使用varchar、blob或text的数据类型存储json字符串,对mysql来说,用户插入的数据只是序列化后的一个普通的字符串,不会对JSON文档本身的语法合法性做检查,文档的合法性需要用户自己保证。在使用时需要先将整个json对象从数据库读取出

    2024年02月15日
    浏览(31)
  • Mysql中json类型查询

    MySQL提供了一些函数和操作符,用于在JSON数据类型中进行查询。下面是一些常用的MySQL JSON查询使用方法: 这里的key是JSON字段中的键名。 使用JSON_CONTAINS函数可以过滤JSON数组中包含特定值的记录。例如,假设有一个名为data的JSON字段,其中包含一个名为tags的数组,可以使用以

    2024年02月16日
    浏览(46)
  • mysql中json类型字段用法

    前言 mysql从5.7.8版本开始原生支持了JSON类型数据,同时可以对JSON类型字段中的特定的值进行查询和更新等操作,通过增加JSON类型的属性可以大大的提高我们在mysql表中存储的数据的拓展性,无需每次新增字段时都进行表结构的调整,下面我们不深入讲解底层的实现原理,我们

    2024年02月04日
    浏览(57)
  • mysql存储json类型方法和利弊

    利弊 一、json类型的特性 1、保证了JSON数据类型的强校验,JSON数据列会自动校验存入此列的内容是否符合JSON格式,非正常格式则报错,而varchar类型和text等类型本身是不存在这种机制的。 2、MySQL同时提供了一组操作JSON类型数据的内置函数。 3、更优化的存储格式,存储在JS

    2024年02月05日
    浏览(33)
  • MySQL的Json类型个人用法详解

    前言 虽然MySQL很早就添加了Json类型,但是在业务开发过程中还是很少设计带这种类型的表。少不代表没有,当真正要对Json类型进行特定查询,修改,插入和优化等操作时,却感觉一下子想不起那些函数怎么使用。比如把json里的某个键和值作为SQL条件,修改某个键下的子键的

    2024年02月10日
    浏览(35)
  • mysql 字段类型为json,后端用list接收

    board` json DEFAULT NULL COMMENT \\\'信息,格式[{\\\"name\\\":\\\"net\\\",\\\"chip\\\":\\\"esp32\\\",\\\"hdVer\\\":1}]\\\' resultMap id=\\\"productDeviceAndBrand\\\" type=\\\"com.charg.product.domain.vo.ProductDeviceOperationsVo\\\" result property=\\\"brandId\\\" column=\\\"brand_id\\\"/ result property=\\\"brandName\\\" column=\\\"brand_name\\\"/ result property=\\\"productName\\\" column=\\\"product_name\\\"/ result property=\\\"productC

    2024年04月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包