目录
一、正则表达式(同shell脚本的正则表达式)
二、运算符
1、算数运算
2、比较运算符
2.1、通配符匹配
3、逻辑运算符
①、逻辑非(not 或 !)
②、逻辑与(and 或 &&)
③、逻辑或(or)
④、逻辑异或(xor)
4、位运算符
5、优先级
三、连接查询
1、内连接
2、左连接
3、右连接
一、正则表达式(同shell脚本的正则表达式)
- MysQL正则表达式通常是在检索数据库记录的时候,根据指定的匹配模式匹配记录中符合要求的特殊字符串。
- MysQL的正则表达式使用REGEXP这个关键字来指定正则表达式的匹配模式
- REGEXP操作符所支持的匹配模式如下
匹配模式 | 描述 |
^ | 匹配文本的开始字符 |
$ | 匹配文本的结束字符 |
. | 匹配任何单个字符 |
* | 匹配零个或多个在它前面的字符 |
+ | 匹配前面的字符 1 次或多次 |
字符串 | 匹配包含指定的字符串 |
p1Ip2 | 匹配 p1 或 p2 |
[…] | 匹配字符集合中的任意一个字符 |
[^…] | 匹配不在括号中的任何字符 |
{n} | 匹配前面的字符串 n 次 |
{n,m} | 匹配前面的字符串至少 n 次,至多m 次 |
二、运算符
- MysQL的运算符用于对记录中的字段值进行运算。
- MysQL的运算符共有四种,分别是:算术运算符、比较运算符、逻辑运算符和位运算符。
1、算数运算
运算符 | 描述 |
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
- 在除法运算中,除数不能为0,若除数是0,则返回的结果为 null 。
- 如果有多个运算符,按照先乘除后加减的优先级进行运算,相同优先级的运算,没有先后顺序
2、比较运算符
字符串的比较默认不区分大小写,可使用 binary 来区分
常用比较运算符 | 说明 |
= | 等于 |
!=或<> | 不等于 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
is null | 判断是否为null |
is not null | 判断是否不为null |
between and | 两者之间 |
greatest | 两个或多个参数时返回最大值 |
least | 两个或多个参数时返回最小值 |
in | 在集合中 |
2.1、通配符匹配
- LIKE用来匹配字符串,如果匹配成功则返回1,反之返回0
- LIKE支持两种通配符:‘g’用于匹配任意数目的字符,而’_'只能匹配一个字符。
3、逻辑运算符
- 逻辑运算符又被称为布尔运算符,通常用来判断表达式的真假,如果为真返回1,否则返回0,真和假也可以用TRUE和FALSE表示。
- MySQL中支持使用的逻辑运算符有四种
- not 或 ! :逻辑非
- and 或 && :逻辑与
- or :逻辑或
- xor :逻辑异或
①、逻辑非(not 或 !)
- 逻辑非将跟在他后面的值取反,如果NOT后面的操作数为0时,所得值为1
- 如果操作数为非0时,所得值为0
- 如果操作数为NULL时,所得值为NULL
②、逻辑与(and 或 &&)
- 当所有操作数都为非零值并且不为NULL时,返回值为1
- 当一个或多个操作数为0时,返回值为0
- 操作数中有任何一个为NULT时,返回值为NULL
③、逻辑或(or)
- 当两个操作数都为非NULL值时,如果有任意一个操作数为非零值,则返回值为1,否则结果为0
- 当有一个操作数为NULL时,如果另一个操作数为非零值,则返回值为1,否则结果为NULL
- 假如两个操作数均为NULL时,则返回值为NULL。
④、逻辑异或(xor)
- 当任意一个操作数为NULL时,返回值为NULL
- 对于非NULL的操作数,如果两个操作数都是非0值或者都是0值,则返回值为0
- 如果一个为0值,另一个为非0值,返回值为1
4、位运算符
- 位运算符是在二进制数上进行计算的运算符
- 位运算会先将操作数变成二进制数,进行位运算
- 然后再将计算结果从二进制数变回十进制数
位运算符 | 描述 |
& | 按位与 |
I | 按位或 |
^ | 按位异或 |
! | 取反 |
<< | 左移 |
>> | 右移 |
- 按位与:对应的二进制位都为1,则运算结果为1,否则为0
- 按位或:对应的二进制位有一个为1则为1,否则为0
- 按位异或:对应的二进制位不同时,运算结果为1,否则为0
- 取反:对应的二进制数逐位反转,0取反为1,1取反为0
5、优先级
1. !
2. ~
3. ^
4. *、/、%
5. +、-
6. <<、>>
7. &
8. |
9. =、<=>、>=、>、<=、<、<>、!=、like、regexp、in
10. between、case、when、then、else
11. not
12. &&、and
13. or、xor
14. :=
三、连接查询
- MysQL的连接查询,通常都是将来自两个或多个表的行结合起来,基于这些表之间的共同字段,进行数据的拼接。
- 首先,要确定一个主表作为结果集,然后将其他表的行有选择性的连接到选定的主表结果集上。
- 使用较多的连接查询包括:内连接、左连接和右连接
1、内连接
MySQL中的内连接就是两张或多张表中同时符合某种条件的数据记录的组合。
通常在 from 子句中使用关键字 inner join 来连接多张表,并使用 on 子句设置连接条件
内连接是系统默认的表连接,所以在 from 子句后可以省略 inner 关键字,只使用关键字 join ,同时有多个表时,也可以连续使用 inner join 来实现多表的内连接,不过为了更好的性能,建议最好不要超过三个表
select 字段 from 表1 inner join 表2 on 表1.字段=表2.字段
2、左连接
左连接也可以被称为左外连接,在 from 子句中用 left join 或者 left out join 关键字来表示。
左连接以左侧表为基础表,接收左表的所有行,并用这些行与右侧参考表中的记录进行匹配,也就是说匹配左表中的所有行以及右表中符合条件的行。
左连接中,左表的记录会全部表示出来,而右表只会显示符合搜索条件的记录,不足的地方均为 null
3、右连接
- 右连接也被称为右外连接,在 from 子句中用 right join 或者 right out join 关键字来表示。
- 右连接跟左连接正好相反,它是以右表为基础表,用于接收右表中的所有行,并用这些记录与左表中的行进行匹配