json 插入数据_SQL-mysql操作json

本文详细介绍了MySQL如何操作JSON数据,包括插入、查询、修改和删除操作,并举例说明了cast、JSON_TYPE、JSON_MERGE等函数的使用方法。
摘要由CSDN通过智能技术生成

9a5c7ac34273721f215f67c35fddb8ef.png

一 前言

MySQL 5.7.8 之后 支持 JSON (由rfc7159规定)数据类型,其能在字段中使用json 类型,做到了自动校验是否为json类型数据,否则插入数据会报异常;其次,储存json数据内部做到了优化储存,能够快速读取json类型数据,比如无需将二进制json转为文本形式后读取;

《SQL-你真的了解什么SQL么?》

《SQL-小白最佳入门sql查询一》

《SQL-小白最佳入门sql查询二》

《SQL- 多年开发人员都不懂的插入与更新删除操作注意点》

《SQL-SQL事物操作》

《SQL-Mysql数据类型》

《SQL-mysql视图的前世今生》

《SQL-mysql储存过程》

《SQL-mysql游标与触发器》

《SQL-mysql用户权限管理》

《SQL-mysql架构入门》

《SQL-mysql锁等待与死锁》

公众号:知识追寻者

知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)

二 操作 JOSN

建表语句如下,为 area 字段 声明为 JSON 类型;

CREATE TABLE `order` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单编号',
  `order_name` varchar(255) DEFAULT NULL COMMENT '订单名称',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `year` year(4) DEFAULT NULL COMMENT '年份',
  `area` json DEFAULT NULL COMMENT '地区',
  PRIMARY KEY (`id`),
  UNIQUE KEY `order_name` (`order_name`,`create_time`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

MySQL 中支持 json 对象 和json 数组,他们之间可以相互嵌套;json类似map,在java中json就是map得实现类,初学者若不懂何为json,就当作map来用,即储存 key - value 形式得数据结构;注意点是 json 数据 得key 必须是字符串,可以有key无value

2.1 插入 josn数据

插入 json 对象,east 得值 为 50 , sourth 值为65 得 json对象;

INSERT INTO `order`(`order_name`, `year`, `area`) 
VALUES ('荷小花的订单', 2020, '{"east": "50", "south": "65"}');

等效于使用 JSON_OBJECT

实现省市区三级联动的关键是建立好数据库,并且编写好对应的 SQL 语句。以下是一个简单的数据库设计: - 省份表 province,包括字段 id 和 name。 - 城市表 city,包括字段 id、name 和省份的外键 province_id。 - 区县表 district,包括字段 id、name 和城市的外键 city_id。 接下来是建表语句: ```sql -- 省份表 CREATE TABLE `province` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 城市表 CREATE TABLE `city` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `province_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `province_id` (`province_id`), CONSTRAINT `city_ibfk_1` FOREIGN KEY (`province_id`) REFERENCES `province` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 区县表 CREATE TABLE `district` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `city_id` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `city_id` (`city_id`), CONSTRAINT `district_ibfk_1` FOREIGN KEY (`city_id`) REFERENCES `city` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` 接下来是查询省份、城市、区县的 SQL 语句: ```sql -- 查询所有省份 SELECT id, name FROM province; -- 查询某个省份下的所有城市 SELECT id, name FROM city WHERE province_id = ?; -- 查询某个城市下的所有区县 SELECT id, name FROM district WHERE city_id = ?; ``` 在 Java Web 项目中,可以使用 Ajax 和 JSON 技术实现省市区三级联动。前端页面发送 Ajax 请求,后端通过 JDBC 连接数据库,查询对应的省份、城市、区县信息,并以 JSON 格式返回给前端页面。前端页面再解析 JSON 数据,更新页面的省份、城市、区县下拉框选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值