首页 > 数据库 >mysql 奇淫技巧

mysql 奇淫技巧

时间:2022-12-19 18:12:55浏览次数:57  
标签:返回 技巧 doc JSON json mysql path NULL 奇淫

1.统计同一张表的多个值

啥意思?比如,一张人员表,要同时统计出男女人数,正常来说 ,我们是要两句sql,但是有没有办法,一句sql 直接统计出来呢?有的!!

例:

SELECT
  count(sex = '男' OR NULL), 
  count(sex = '密切接触者'  and age = 16 or NULL)
FROM person

需要注意的是 count 里面的条件都要加 OR NULL,这里有个问题 为啥 有条件 还要 加上 OR NULL, 这是因为

COUNT(字段):统计该"字段"不为NULL 的记录。

sex 不等 '男' 这时候返回的是 false 不是 null,不加的话 统计数据就不太准确

2.解析json

MySQL从5.7后引入了json数据类型以及json函数,可以有效的访问json格式的数据。json数据类型相对于字符串,具有以下优点:

1)对于json列数据提供自动校验json格式,错误格式会提示错误;

2)优化存储类型。数据以二进制方式保存,读取效率快;

3)允许通过键值或者数据索引查找对象,无需把整个数据读取出来;

除此之外,json还有以下特点:

1)json存储空间大致于longblob或longtext差不多;

2)mysql8.0.13之后,json允许默认值为null;

3)json列不能设置索引,可通过json中的键值设置索引来提高查询效率;

4)json中null、true、false必须使用小写

参考:https://dev.mysql.com/doc/refman/8.0/en/json.html

相关函数

分类 函数 语法 描述
创建JSON JSON_ARRAY JSON_ARRAY(val1, val2…) 创建json数组
JSON_OBJECT JSON_OBJECT(key1, value1, key2, value2…) 创建ison对象
JSON_QUOTE JSON_QUOTE(string) 将参数用双引号括起来
JSON_UNQUOTE JSON_UNQUOTE(json_val) 去掉结果的双引号
查询JSON JSON_CONTAINS JSON_CONTAINS(json_doc, val[, path]) 指定path是否包含指定数据,包含返回1,否则返回0.如果有参数为NULL或path不存在,则返回null
JSON_CONTAINS_PATH JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] …) 检查是否存在指定路径,是否满足一个或者所有,存在返回1,否则返回0.如果有参数为null,则返回null。one_or_all:"one"表示查询到一个即返回;"all"表示查询所有。
JSON_EXTRACT JSON_EXTRACT(json_field, path[, path] …) 提取son字段某个路径的值
COLUMN->PATH json_model -> '$.name’ json_extract的简洁写法,MySQL 5.7.9开始支持
COLUMN->>PATH json_model ->> '$.name’ json_unquote(column -> path)的简洁写法
JSON_KEYS JSON_KEYS(json_field) 提取json中的键值为json数组
JSON_SEARCH JSON_SEARCH(json_doc, one_or_all, search_str[, escape_char[, path] …]) 按给定字符串关键字搜索json,返回匹配的路径查询包含指定字符串的paths,并作为一个json array返回。如果有参数为NUL或path不存在,则返回NULL。one_or_all:"one"表示查询到一个即返回;"all"表示查询所有。search_str:要查询的字符串。 可以用LIKE里的’%'或‘_’匹配。path:在指定path下查。
JSON_LENGTH JSON_LENGTH(json_doc[, path]) 返回数组的长度,如果是object则是属性个数,常量则为1,1. 标量的长度为1;2. json array的长度为元素的个数;3. json object的长度为key的个数。
JSON_DEPTH JSON_DEPTH(json_doc) 返回doc深度空的json array、json object或标量的深度为1
JSON_PRETTY JSON_PRETTY(json_field) 返回格式化json数据
修改JSON JSON_SET JSON_SET(json_doc, path, val[, path, val] …) 修改json_field数据中的指定path的值,存在修改,不存在插入
JSON_ARRAY_APPEND JSON_ARRAY_APPEND(json_doc, path, val[, path, val] …) 给指定的节点,添加元素,如果节点不是数组,则先转换成[doc]

MySQL里的JSON分为json array和json object。

$表示整个json对象(数组或者对象)

  1. 数组使用$[i] ,从0开始。
  2. 对象使用$.key

例:查询json列 depp=dd的员工

SELECT * from (
SELECT *,json_value->'$.deptName’ as deptName FROM dept
) t WHERE JSON_CONTAINS(deptName,JSON_OBJECT("depp","dd"));

标签:返回,技巧,doc,JSON,json,mysql,path,NULL,奇淫
From: https://www.cnblogs.com/makalochen/p/16992781.html

相关文章

  • 定位网线的小技巧
    写个脚本,每隔几秒开启/关闭网卡,循环往复,在交换机上找一会亮一会灭的端口。CMD:@echooffCHCP65001for/l%%xin(1,1,100000)do(timeout1netshinterfaceset......
  • MySQL 中 NULL 导致唯一键失效
    最近遇到一个问题,我为一张表中创建了一个唯一键,并且键中字段为NULL,最终导致了唯一约束失效。这里做下分析:首先新建一张表,包含work_no,name,age三个字段:DROPTABLEIFE......
  • mysql服务器查询慢原因分析方法
    ​​MySQL​​​​数据库​​在查询的时候会出现查询结果很慢,超过1秒,项目中需要找出执行慢的sql进行优化,应该怎么找呢,mysql数据库提供了一个很好的方法,如下: mysql5.0以上......
  • 【mysql-01】开放远程连接权限遇到的问题
    环境电脑本机ip:192.xxx.xxx.xxx虚拟机A的ip:192.168.132.100虚拟机B的ip:192.168.132.101虚拟机A上的mysql用户权限情况:如图,在虚拟机A上的mysql开放了本地电脑ip的......
  • MySQL 8.0 还能为你自动创建主键?!
    MySQL8.0.31版本引入了一个参数​​sql_generate_invisible_primary_key​​​,开启这个参数,会在建表时,检查表中是否有主键,如果没有主键,则会自动创建。该参数非常实用,减少了......
  • 数据库文件导入报错"MySQL server has gone away"
    今天mysql从一个mysql库中导入另一个mariadb库中是总是报:ERROR2006(HY000)atline176infile:'xxx.sql':MySQLserverhasgoneaway但我是在当前服务器上导入的......
  • mysql查询当天所有数据sql语句
    mysql查询当天的所有信息:select*fromtestwhereyear(regdate)=year(now())andmonth(regdate)=month(now())andday(regdate)=day(now())这个有一些繁琐,还有简单的写......
  • VC 编程技巧 (一)
    (1)如何通过代码获得应用程序主窗口的指针?主窗口的指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。AfxGetMainWnd()->ShowWindow(SW_SHOWMAXMIZED)//使......
  • MySQL用户管理
    1.查看用户及用户权限mysql中的用户信息和权限等都存储在一个名为mysql的数据库中。其中主要用到的是user、db、tables_priv、columns_priv、procs_priv这五张表,最重要的......
  • docker-compose入门以及部署SpringBoot+Vue+Redis+Mysql(前后端分离项目)以若依前后端
    场景若依前后端分离版手把手教你本地搭建环境并运行项目:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662上面在搭建起来前后端分离版的项目后。......