Mysql 5.7 新特性之 json 类型的增删改查操作和用法

yizhihongxing

Mysql 5.7 新特性之 json 类型的增删改查操作和用法

什么是json类型

JSON是JavaScript Object Notation的缩写,是一种用于数据交换的轻量级文本格式。MySQL 5.7支持JSON类型,可以在表的列中存储JSON格式的数据,这些数据可以在MySQL中进行查询和修改,支持JSON文档中的各种数据类型如字符串、数字、数组和对象。

json类型的创建

要使用JSON类型,必须在创建表时包含JSON类型,可以使用以下语法创建带有JSON类型的表:

CREATE TABLE tablename (
  columnname JSON,
  ...
)

json类型的增删改查操作

json类型数据在MySQL中可以直接进行增删改查等操作。

插入数据

使用INSERT INTO语句可以插入json类型数据,例如:

INSERT INTO tablename(columnname) VALUES('{"name":"Tom","age":18,"gender":"Male"}');

查询数据

使用SELECT语句可以查询json类型数据,可以使用JSON_EXTRACT函数来获取特定的数据,例如:

SELECT JSON_EXTRACT(columnname, '$.name') AS name, JSON_EXTRACT(columnname, '$.age') AS age
FROM tablename;

此时返回:

+------+------+ 
| name | age  | 
+------+------+ 
| Tom  | 18   |
+------+------+ 

更新数据

使用UPDATE语句可以更新json类型数据,可以使用JSON_SET函数来更新特定的数据,例如:

UPDATE tablename
SET columnname = JSON_SET(columnname, '$.age', 20)
WHERE JSON_EXTRACT(columnname, '$.name') = 'Tom';

此时会将age从18更改为20

删除数据

使用DELETE语句可以删除json类型数据,例如:

DELETE FROM tablename 
WHERE JSON_EXTRACT(columnname, '$.name') = 'Tom';

该语句将删除name为Tom的json类型数据。

示例

以下是一些实际示例:

示例1

创建一个含有json类型字段的表:

CREATE TABLE person_info (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(30) NOT NULL,
    info JSON
);

向person_info表中插入一个json类型数据:

INSERT INTO person_info(name, info)
VALUES('Tom', '{"age": 18, "gender":"Male", "hobbies":["reading", "basketball"]}'); 

查询person_info表中所有人的年龄和性别:

SELECT name, JSON_EXTRACT(info, '$.age') AS age, JSON_EXTRACT(info, '$.gender') AS gender 
FROM person_info;

示例2

创建一个含有json类型字段的表:

CREATE TABLE student (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(30) NOT NULL,
    courses JSON
);

向student表中插入一个json类型数据:

INSERT INTO student(name, courses) 
VALUES('Tom', '{"math":{"score": 90}, "english":{"score":80}}');

更新Tom的英语成绩:

UPDATE student 
SET courses = JSON_SET(courses, '$.english.score', 85) 
WHERE name = 'Tom';

查询Tom的全部课程分数:

SELECT name, JSON_EXTRACT(courses, '$.math.score') AS math_score, JSON_EXTRACT(courses, '$.english.score') AS eng_score 
FROM student 
WHERE name = 'Tom';

示例3

创建一个含有json类型字段的表:

CREATE TABLE order_info (
    id INT PRIMARY KEY AUTO_INCREMENT,
    customer VARCHAR(30) NOT NULL,
    ordered JSON
);

向order_info表中插入一个json类型数据:

INSERT INTO order_info(customer, ordered)
VALUES('Tom', '[{"product": "book", "price": 10}, {"product": "pen", "price":2}]');

查询Tom的所有订单中的产品和价格:

SELECT JSON_EXTRACT(ordered, '$[0].product') AS product, JSON_EXTRACT(ordered, '$[0].price') AS price 
FROM order_info 
WHERE customer = 'Tom';

以上就是Mysql 5.7 新特性之 json 类型的增删改查操作和用法的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mysql 5.7 新特性之 json 类型的增删改查操作和用法 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • MySQL存储过程的概念与用法实例

    下面是关于“MySQL存储过程的概念与用法实例”的详细攻略。 什么是MySQL存储过程? MySQL存储过程是一种预编译的SQL代码块,其中包含一系列SQL语句。它可以接受参数、执行流程控制语句(如if语句、while循环等)和异常处理语句,可以增加SQL脚本的灵活性和可重用性。 如何创建MySQL存储过程? 我们可以在MySQL客户端中使用CREATE P…

    database 2023年5月22日
    00
  • C#操作mysql数据库的代码实例

    下面我将给你详细讲解“C#操作mysql数据库的代码实例”的完整攻略。 简介 MySQL是一种常见的数据库管理系统,C#语言可以通过访问MySQL提供的API来实现操作MySQL数据库。在本攻略中,我们将以Visual Studio 2019为例,演示如何使用C#语言操作MySQL数据库。 准备工作 在开始之前,我们需要准备好以下工具: Visual Stu…

    database 2023年5月21日
    00
  • 一文详解Redis中的持久化

    一文详解Redis中的持久化 什么是Redis中的持久化? Redis是一种内存型的key-value数据库,内存中的数据易于快速读写,但是内存数据易失,一旦进程退出或意外宕机,数据将丢失。为了避免这种情况,Redis提供了持久化功能,将内存中的数据同步到磁盘上,以便数据可以在服务器重启或意外崩溃后进行恢复。 Redis支持的持久化方式 Redis支持两种持…

    database 2023年5月22日
    00
  • redis基本安装判断、启动使用方法示例

    下面是关于Redis基本安装、判断、启动和使用的攻略: Redis基本安装 下载Redis官方源码文件(官网下载地址),解压到目标文件夹位置。 在解压目录中打开终端,使用以下命令执行编译:make 编译完成后,使用以下命令执行安装:make install Redis安装完成后,可以使用以下命令检查Redis是否安装成功:redis-server –ver…

    database 2023年5月22日
    00
  • AnzoGraph和MongoDB的区别

    AnzoGraph和MongoDB是两种不同类型的数据库管理系统,它们在数据存储、查询、处理等方面有很大差异。 首先,AnzoGraph是一种图数据库,广泛应用于语义网、知识图谱等领域,能够处理大量的图数据。MongoDB是一种文档型数据库,数据以文档的形式存储。 其次,在数据存储方面,AnzoGraph采用的是三元组模型,即以主语、谓语、宾语的形式存储数据…

    database 2023年3月27日
    00
  • WinXP下的Apache-PHP-MySQL安装和配置

    WAMP=WIN+APACHE+MYSQL+PHP 在配置的时候我用了摆动工坊的方法,下面就我自己的实际情况根据自己的实践做相应修改,这是我经历了一次复制php.ini和相关dll文件成功之后然后再对这种方法进行测试的,方法是这一个较为简单,而且可移植性强,据说可以不用重装升级的…. 本文包含了在WinXP上基于Apache 2.2.13的PHP 5.3…

    MySQL 2023年4月13日
    00
  • 无法加载 DLL xpstar90.dll 的解决办法

    问题描述: 当使用 SQL Server 2005 Management Studio 连接 SQL Server 2005 实例时,可能会出现以下错误提示: “无法加载 DLL xpstar90.dll 找不到指定的模块。” 此错误提示表示 SQL Server 2005 Management Studio 试图加载一个名为 xpstar90.dll 的 …

    database 2023年5月21日
    00
  • MySQL索引优化实例分析

    下面我将详细讲解“MySQL索引优化实例分析”的完整攻略。 引言 MySQL索引优化是提升MySQL查询性能的重要手段。在进行索引优化时,需要对SQL语句进行优化,选择合适的索引类型,了解索引的使用情况等等。本篇文章将结合实例,介绍MySQL索引优化的一些实践经验。 示例一:使用覆盖索引 假设我们有一个名为“orders”的表,包含以下列: CREATE T…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部