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