MySQL高阶语句

Posted 还行少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL高阶语句相关的知识,希望对你有一定的参考价值。

1.正则表达式

mysql 的正则表达式使用 REGEXP 这个关键字来指定正则表达 式的匹配模式,REGEXP 操作符所支持的匹配模式如表所示。

元字符作用
^匹配字符串的开始位置
$匹配字符串的结束位置
.匹配除\\n(换行)之外的任意一个字符
*匹配前面的字符串0次或多次
[list]匹配list列表中的一个字符
[^list]匹配不在list列表中的一个字符
{n}匹配前面的字符串n次
{n,}匹配前面的字符串不少于n次
{n,m}匹配前面的字符串n到m次

1.1 查询以…开头的信息

在这里插入图片描述

1.2 查询以…结尾的信息

在这里插入图片描述

1.3 查询包含…的信息

在这里插入图片描述

1.4 查询以zh开头,中间包含g,后面起码三个字符的记录

在这里插入图片描述

1.5 查询包含…或。。的信息

在这里插入图片描述

1.5 查询…出现一次或零次的记录

在这里插入图片描述

1.6 查询…出现一次或多次的记录

在这里插入图片描述

1.7 查询…出现零次或多次的记录

在这里插入图片描述

1.8 查询以【…】开头的记录

在这里插入图片描述

1.9查询不以【…】开头的记录

在这里插入图片描述

2.运算符

MySQL 的运算符用于对记录中的字段值进行运算。MySQL 的运算符共有四种,分别 是:算术运算符、比较运算符、逻辑运算符和位运算符

2.1 算术运算符

运算符描述
+加法
-减法
*乘法
/除法
%取余

在这里插入图片描述
在除法运算和求余数运算中,除数不能为 0,若除数是 0,返回的结果则为 NULL。需 要注意的是,如果有多个运算符,按照先乘除后加减的优先级进行运算,相同优先级的运算 符没有先后顺序

2.2 比较运算符

运算符描述
=等于
>大于
<小于
>=大于等于
<=小于等于
!=或<>不等于
is null判断一个值是否为 NULL
IS NOT NULL判断一个值是否不为 NULL
BETWEEN AND两者之间
IN在集合中
LIKE通配符匹配
GREATEST两个或多个参数时返回最大值
LEAST两个或多个参数时返回最小值
  • 如果两者都是整数,则按照整数值进行比较。
  • 如果一个整数一个字符串,则会自动将字符串转换为数字,再进行比较。(在程序中,一般是不会吧这两者进行相比较的)
  • 如果两者都是字符串,则按照字符串进行比较。
  • 如果两者中至少有一个值是 NULL,则比较的结果是 NULL。
  • 与linux返回值表达相反,linux 中运行正常返回值是0,运行异常返回值是非0

2.2.1 比较

在这里插入图片描述

2.2.2 NULL

在这里插入图片描述

2.2.3 between and

between and 覆盖的范围是>= 和 <=关系d

在这里插入图片描述
在这里插入图片描述

2.2.4 least 和greatest

  • LEAST:当有两个或者多个参数时,返回其中的最小值。如果其中一个值为 NULL,则 返回结果就为 NULL

  • GREATEST:当有两个或者多个参数时,返回其中的最大值。如果其中一个值为NULL, 则返回结果就为 NULL
    在这里插入图片描述

2.2.5 IN 和 NOT IN

  • IN 判断一个值是否在对应的列表中,如果是返回 1,否则返回 0
  • NOT IN 判断一个值是否不在对应的列表中,如果不是返回 1,否则返回 0

在这里插入图片描述

2.2.6 LIKE 和 NOT LIKE

  • LIKE 支持两种通配符:’%’ 用于匹配任意数目的字符,而’_’只能匹配一个字符
  • NOT LIKE 正好跟 LIKE 相反,如果没有匹配成功则返回 1,反之返回 0

在这里插入图片描述

2.3 逻辑运算符

逻辑运算符又被称为布尔运算符,通常用来判断表达式的真假,如果为真返回 1,否则 返回 0,真和假也可以用 TRUE 和 FALSE 表示。MySQL 中支持使用的逻辑运算符有四种, 具体如表所示

运算符描述
not 或 !逻辑非
and 或 &&逻辑与
or逻辑或
xor逻辑异或

2.3.1 逻辑非

逻辑运算符中最简单的运算符就是逻辑非,逻辑非使用 NOT 或!表示。逻辑非将跟在它后面的逻辑测试取反,把真变为假,把假变为真。如果 NOT 后面的操作数为 0 时,所得值为 1;如果操作数为非 0 时,所得值为 0;如果操作数为 NULL 时,所得值为 NULL
在这里插入图片描述

2.3.2 逻辑与

当所有的操作数都为非0值且不为null时,返回值为1,否则为0(null与0比较特殊)
null and 0 返回值为0
逻辑与使用 AND 或者&&表示
在这里插入图片描述

2.3.3 逻辑或

  • 逻辑或表示包含的操作数,任意一个为非零值并且不是 NULL 值时,返回 1,否则返回 0。
  • 当有一个操作数为null时,如果另一个操作数为非0值,则返回值为1,否则为null
  • 如两个操作数均为null,则返回值为null
    在这里插入图片描述

2.3.4 逻辑异或

  • 两个非 NULL 值的操作数,如果两者都是 0 或者都是非 0,则返回 0;
  • 如果一个为 0, 另一个为非 0,则返回结果为 1;
  • 当任意一个值为 NULL 时,返回值为 NULL
    在这里插入图片描述

2.4 位运算符

位运算符实际上是对二进制数进行计算的运算符。MySQL 内位运算会先将操作数变成二进制格式(1010 1111),然后进行位运算,最后在将计算结果
从二进制变回到十进制格式,方便用户查 看。MySQL 支持 6 种位运算符,具体如表所示

位运算符描述
&按位与
按位或
~按位取反
^按位异或
<<按位左移
>>按位右移

在这里插入图片描述

2.5 小结

以上不管哪种运算符,在使用过程中都有优先级问题。运算符的优先级决定了不同的运 算符在计算过程中的先后顺序。级别高的运算符会先进行计算,如果运算符的级别相同, MySQL 会按照顺序从左到右依次进行计算,优先级如下表所示:

优先级运算符
1
2~
3^
4*、/、%
5+,-
6>>,<<
7&
8|
9=,<=>,>=,>,<=,<,<>,!=,IS,LIKE,REGEXP,IN
10BETWEEN,CASE,WHEN,THEN,ELSE
11NOT
12&&,AND
13||,OR,XOR
14:=

3.连接查询

MySQL 的连接查询,通常都是将来自两个或多个表的记录行结合起来,基于这些表之间的 共同字段,进行数据的拼接。首先,要确定一个主表作为结果集,然后将其他表的行有选择 性的连接到选定的主表结果集上。使用较多的连接查询包括:内连接、左连接和右连接

3.1 内连接

内连查询:通过inner join 的方式将两张表指定的相同字段的记录行输出出来
在这里插入图片描述

3.2 左连接

左连接也可以被称为左外连接,在 FROM 子句中使用 LEFT JOIN 或者 LEFT OUTER JOIN 关键字来表示。左连接以左侧表为基础表,接收左表的所有行,并用这些行与右侧参 考表中的记录进行匹配,也就是说匹配左表中的所有行以及右表中符合条件的行

左连接中左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录,右表记录不足的地方均为 NULL
在这里插入图片描述

3.3 右连接

右连接也被称为右外连接,在 FROM 子句中使用 RIGHT JOIN 或者 RIGHT OUTER JOIN 关键字来表示。右连接跟左连接正好相反,它是以右表为基础表,用于接收右表中的所有行,并用这些记录与左表中的行进行匹配

在右连接的查询结果集中,除了符合匹配规则的行外,还包括右表中有但是左表中不匹 配的行,这些记录在左表中以 NULL 补足

在这里插入图片描述

以上是关于MySQL高阶语句的主要内容,如果未能解决你的问题,请参考以下文章

MySQL高阶语句二

MySQL高阶语句

mysql高阶语句一

mysql高阶语句

Mysql高阶sql语句

MySQL高阶语句