目录
一、正则表达式
1、介绍
MySQL 正则表达式通常是在检索数据库记录的时候,根据指定的匹配模式匹配记录中 符合要求的特殊字符串。MySQL 的正则表达式使用 regexp 这个关键字来指定正则表达 式的匹配模式
2、常用匹配类型
匹配 | 描述 |
^ | 匹配文本的开始字符 |
$ | 匹配文本的结束字符 |
. | 匹配任何单个字符 |
* | 匹配零个或多个在它前面的字符 |
+ | 匹配前面的字符 1 次或多次 |
字符串 | 匹配包含指定的字符串 |
| | 或 |
[…] | 匹配字符集合中的任意一个字符 |
[^…] | 匹配不在括号中的任何字符 |
{n} | 匹配前面的字符串 n 次 |
{n,m} | 匹配前面的字符串至少 n 次,至多 m 次 |
3、查询方式
以什么开头
select * from ly where name regexp '^sh';
以什么结尾
select * from ly where name regexp 'n$';
lu中间有任意一个字符的
select * from ly where name regexp 'l.u';
匹配有ha的
select * from ly where name regexp 'han*';
匹配有han的
select * from ly where name regexp 'han+';
包含an
select * from ly where name regexp 'an';
有han或者li的
select * from ly where name regexp 'han|li';
匹配含有a或者l等字母的
select * from ly where name regexp '[al]';
配不是以a或者g为结尾的
select * from ly where name regexp '[^ag]$';
#注意'[^sss]'只能精确取反
二、运算符
1、算术运算符
运算符 描述
+ 加法
- 减法
* 乘法
/ 除法
% 取余
select 1+1,2-1,3*2,4/2,5/2;
2、比较运算符
运算符 描述
= 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!=或<> 不等于
is null 判断一个值是否为 NULL
is not null 判断一个值是否不为 NULL
between and 两者之间
in 在集合中
like 通配符匹配
grertest 两个或多个参数时返回最大值
least 两个或多个参数时返回最小值
regexp 正则表达式
在此用的是ascii码有:a、A、0(97、65、48)
如果两者都是整数,则按照整数值进行比较
如果一个整数一个字符串,则会自动将字符串转换为数字,再进行比较。(在程序中,一般是不会吧这两者进行相比较的)
如果两者都是字符串,则按照字符串进行比较
如果两者中至少有一个值是 NULL,则比较的结果是 NULL
3、逻辑运算符(布尔值)
运算符 描述
not 或 ! 逻辑非 有null返null,有0返1,非0返0
and 或 && 逻辑与 有null返null,有0返0,非0返1
or 逻辑或 有非0null返1,有null返null,全0返0
xor 逻辑异或 有null返null,有0返1,全0非0返0
4、位运运算符
位运算符 描述
& 按位与 11得1,否则0
| 按位或 有1得1,否则0
~ 按位取反 取反计算
^ 按位异或 不同得1,否则0
<< 按位左移
>> 按位右移
位运算符实际上是对二进制数进行计算的运算符
优先级 运算符
1 !
2 ~
3 ^
4 *、/、%
5 +,-
6 >>,<<
7 &
8 |
9 =,<=>,>=,>,<=,<,<>,!=,IS,LIKE,REGEXP,IN
10 BETWEEN,CASE,WHEN,THEN,ELSE
11 NOT
12 &&,AND
13 ||,OR,XOR
14 :=
三、连接查询
1、内连接
MySQL 中的内连接就是两张或多张表中同时符合某种条件的数据记录的组合,同时有多个表时,也可以连续使用 INNER JOIN 来实现多表的内连接,不过为了更好的性能,建议最好不要超过三个表
SELECT column_name(s)FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;
#简单说就是两表的共用条件的交集,显示结果
select * from shi inner join shi02 on shi.id=shi02.id;
2、左连接
左连接也可以被称为左外连接,左连接以左侧表为基础表,接收左表的所有行,并用这些行与右侧参 考表中的记录进行匹配,也就是说匹配左表中的所有行以及右表中符合条件的行
select * from shi02 left join shi on shi.id=shi02.id;
#left显示左表信息,右表显示条件交集,其他补null
3、右连接
右连接也被称为右外连接,右连接跟左连接正好相反,它是以右表为基础表,用于接收右表中的所有行,并用这些记录与左表中的行进行匹配
select * from shi02 left join shi on shi.id=shi02.id;
#right显示右表信息,左表显示条件交集,其他补null
总结
正则表达式:主要是正常的查询,加where 字段 regexp 用正则进行匹配查询
运算符主要就是常见的算术,比较,逻辑,位运算符
算术运算符:select 数字(+-*/%)数字
比较运算符:select 字符 (>,<>,is null,between and ,in ,like ,grertest,leastd等)字符;语句正确显示1,错误显示0,或者显示最大,最小
逻辑运算符:逻辑非not或!,意思就是取反,有null返null,有0返1,非0返0;逻辑与and或&&,意思就是交集,有null返null,有0返0,非0返1;逻辑或or,就是取并集,有非0null返1,有null返null,全0返0;逻辑异或xor
位运算符:转化成二进制运算;&按位与, 11得1,否则0;| 按位或 ,有1得1,否则0;~ 按位取反 取反计算;^ 按位异或, 不同得1,否则0;
内连接:主要就是说按取两表条件的交集,左接连,就是按左条件,取右表数据,没有用null补齐,就是按右条件,取左表数据,没有用null补齐