鲜为人知的MySQL语法介绍(230518+TABLE 和 VALUES ROW 语法)

版权说明: 本文由博主keep丶原创,转载请注明出处。
原文地址: https://blog.csdn.net/qq_38688267/article/details/110916171

  本文介绍一些MySQL中比较鲜为人知的语法,我们直接步入正题:

<=> 比较符

  >、<、<>、<=、>=都很常见,但你知道<=>吗?他的语法如下:

  • column <=> 'VALUE'<=>等价于=,等价于column = 'VALUE'
    在这里插入图片描述
    在这里插入图片描述
  • column <=> NULL,等价于column IS NULL
    在这里插入图片描述
  • NULL <=> NULL,返回值为1NULL = NULL的返回值为NULL
    在这里插入图片描述

  简单来说,<=>就是加强版的=,区别就是NULL = NULL的返回值为NULL;而NULL <=> NULL的返回值为1,或者说为TRUE
在这里插入图片描述

SAVEPOINT 语法

  savepoint 保存点,是用于事务中,我们可以在事务执行过程中创建保存点,然后回滚的时候可以回滚到指定保存点。

-- 开启事务
BEGIN;
-- update_by 改成 1
update sys_dict set update_by = 1 where id = 1;
-- 添加保存点
SAVEPOINT p1;
-- update_by 改成 2
update sys_dict set update_by = 2 where id = 1;
-- 回滚到保存到p1的状态
ROLLBACK TO p1;
-- 查询数据,返回值为 1
select update_by from sys_dict where id = 1;

  

ANY()/SOME()、ALL()

  ANY()、SOME()、ALL()算是比较冷门的语法了,它们只支持在用于包含子查询,其中ANY()SOME()是同义词,所以就不分别介绍ANY()SOME()了,语法如下:

  • column > ANY(1,2,3),表示大于其中一个即可,即大于其中最小值即可, 等价于 column > 1
    column > ALL(1,2,3),表示要大于其中所有值,即需要大于其中最大值, 等价于 column > 3

  • column = ANY(1,2,3),等价于column IN (1,2,3)

  • column <> ALL(1,2,3),等价于column NOT IN (1,2,3)

在这里插入图片描述
  更多详情请参见:MySQL官方文档-带有ANY,IN或SOME的子查询

->、->> 表达式

  这两个表达式也很少见,因为很少有人用MySQL的JSON数据类型。其中->是MySQL5.7中加入的,->>是MySQL8.0加入的。这个我们直接结合栗子来看:
在这里插入图片描述
  ->等价于JSON_EXTRACT(),而->>等价于JSON_UNQUOTE(JSON_EXTRACT()),区别就是->的返回值的字符串还会带"",而->>的返回值的字符串没有。
在这里插入图片描述

NULLIF()函数

  NULLIF(条件不满足时输出的值,条件)NULLIF('哈哈', 1 = 1)等价于IF(1 = 1, '哈哈', NULL),即当条件满足时返回第一个参数的值,条件不满足时返回NULL。
在这里插入图片描述

TABLE 和 VALUES ROW 语法

  MySQL8.0.19引入,TABLE可以在一定程度上替代select * from 语法。

  • TABLE t1 UNION TABLE t2相当于SELECT * FROM t1 UNION SELECT * FROM t2

  • CREATE TABLE t2 TABLE t1相当于CREATE TABLE t2 SELECT * FROM t1

  • SELECT a FROM t1 WHERE b > ANY (TABLE t2)相当于SELECT a FROM t1 WHERE b > ANY (SELECT * FROM t2)

  VALUES用于创建一行数据:
    在这里插入图片描述
    在这里插入图片描述

总结

  暂时只想到这些,后续有新的比较好用又鲜为人知的会继续更新。

  MySQL8.0新出了很多新东西,知道的人也不多,比如 公共表表达式WITHOVER、WINDOW窗口函数、8.0.19出的TABLE 语法等,这些在一定场景下都特别好用,我就不一一介绍了,感兴趣的同学可以自行百度。

  介绍了这么多,有人可能觉得这些有什么用呢?我只是希望能给大家留下一些映像,当遇到对应需求的时候,能够想到还有这种解决方案。因为只有你知道有这么个东西,你才可能用得上,如果你都不知道有这么个东西,那么你肯定用不上!

  希望本博客对大家有所帮助或启发,觉得写得不错的同学可以点赞支持一下哦~

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值