一、数据库函数
1.数学函数
数据库内存存储的记录,经常要进行一系列的算术操作,所以MySQL支持很多数学函数
数学函数 | 描述 |
---|---|
abs(x) | 返回 x 的绝对值 |
rand() | 返回 0 到 1 的随机数 |
mod(x,y) | 返回 0 到 1 的随机数 |
power(x,y) | 返回 x 的 y 次方 |
round(x) | 返回离 x 最近的整数 |
round(x,y | ) 保留 x 的 y 位小数四舍五入后的值 |
sqrt(x) | 返回 x 的算术平方根 |
truncate(x,y) | 返回 x 截断为 y 位小数的值 |
ceil(x) | 返回大于或等于 x 的最小整数 |
floor(x) | 返回小于或等于 x 的最大整数 |
greatest(x1,x2,x3…) | 返回集合中最大的值 |
least(x1,x2,x3…) | 返回集合中最小的值 |
1.1 返回 x 的绝对值
1.2 返回 0 到 1 的随机数
1.3 返回 x 除以 y 以后的余数
1.4 返回 x 的 y 次方
1.5 返回离 x 最近的整数
1.6 保留 x 的 y 位小数四舍五入后的值 和 返回 x 截断为 y 位小数的值
1.7 返回 x 的算术平方根
1.8 返回大于或等于 x 的最小整数 和 返回小于或等于 x 的最大整数
1.9 返回集合中最大的值 和 返回集合中最小的值
2.聚合函数
MySQL数据库函数中专门有一组函数是特意为库内记录求和或者对表中的数据进行集中概括而设计的
聚合函数 | 描述 |
---|---|
avg() | 返回指定列的平均值 |
count() | 返回指定列中非NULL值的个数 |
min() | 返回指定列的最小值 |
max() | 返回指定列的最大值 |
sum() | 返回指定列的所有值之和 |
2.1 返回指定列的平均值
2.2 返回指定列中非NULL值的个数
2.3 返回指定列的最小值和最大值
2.4 返回指定列的所有值之和
3.字符串函数
字符串函数 | 描述 |
---|---|
length(x) | |
space(x) | 返回 x 个空格 |
trim() | 返回去除指定格式的值 |
concat(x,y) | 将字符串 x 和 y 拼接成一个字符串 |
upper(x) | 将字符串 x 的所有字母变成大写 |
lower(x) | 将字符串 x 的所有字母变成小写 |
left(x,y) | 返回字符串 x 的前 y 个字符 |
right(x,y) | 返回字符串 x 的 后 y 个字符 |
repeat(x,y) | 将字符串 x 重复 y 次 |
replace(x,y,z) | 将字符串 z 代替字符串 x 中的字符串 y |
strcmp(x,y) | 比较 x 和 y |
substring(x,y,z) | 获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串 |
reverse(x) | 将字符串 x 反转 |
3.1 返回字符串的长度
3.2 返回去除指定格式的值
3.3 将字符串 x 和 y 拼接成一个字符串
3.4 将字符串 x 的所有字母变成大写或小写
3.5 返回字符串 x 的前 y 个字符 或 后 y 个字符
3.6 将字符串 x 重复 y 次并反转
3.8 获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串
3.9 比较 x 和 y
4.日期时间函数
日期时间函数 | 描述 |
---|---|
curdate() | 返回当前时间的年月日 |
curtime() | 返回当前时间的时分秒 |
now() | 返回当前时间的日期和时间 |
month(x) | 返回日期 x 中的月份值 |
week(x) | 返回日期 x 是年度第几个星期 |
hour(x) | 返回日期 x 中的小时值 |
minute(x) | 返回 x 中的分钟值 |
second(x) | 返回 x 中的秒钟值 |
dayofweek(x) | 返回 x 是本周的第几天,从1开始,为星期日 |
dayofmonth()x | 返回日期 x 是本月的第几天 |
dayofyear(x) | 返回日期 x 是本年的第几天 |
4.1 返回当前时间
4.2 返回日期中的各个值
4.3 返回该日期在周,月,年的第几位
二、存储过程
1.简介
- 存储过程是一组为了完成特定功能的SQL语句集合
- 存储过程在执行上比传统SQL速度更快、执行效率更高
2.优点
- 执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率
- SQL语句+控制语句的集合,灵活性高
- 在服务器端存储,客户端调用时,降低网络负载
- 可多次重复被调用,可随时修改,不影响客户端调用
- 可完成所有的数据库操作,也可控制数据库的信息访问权限
3.实验
3.1 创建存储过程
3.2 查看存储过程
3.3 删除存储过程
三、正则表达式
MySQL 的正则表达式使用 REGEXP 这个关键字来指定正则表达 式的匹配模式,REGEXP 操作符所支持的匹配模式如表所示。
元字符 | 作用 |
---|---|
^ | 匹配字符串的开始位置 |
$ | 匹配字符串的结束位置 |
. | 匹配除\n(换行)之外的任意一个字符 |
* | 匹配前面的字符串0次或多次 |
[list] | 匹配list列表中的一个字符 |
[^list] | 匹配不在list列表中的一个字符 |
{n} | 匹配前面的字符串n次 |
{n,} | 匹配前面的字符串不少于n次 |
{n,m} | 匹配前面的字符串n到m次 |
1 查询以la开头的信息
2 查询以qi结尾的信息
3 查询包含is的信息
4 查询以l开头中间有两个字符,以i为结尾的记录
5.查询l和b中间可以有可以没有的信息(*不能出现在结尾,不然匹配所有)
6.匹配name中有l或者z的信息
查询以 ^A 开头的信息
select id,name from 表名 where name regexp '^A ';
查询以 B$ 结尾的信息
select id,name from 表名 where name regexp ' B$';
查询名字中包含 的信息
select id,name from 表名 where name regexp ' ';
查询名字是 C开头, D结尾,中间不知道是一个什么字符的信息
select id,name from 表名 where name regexp ' C.D';
查询名字中包含 E或者 F 的学生信息
select id,name from 表名 where name regexp ' E | F ';
查询名字中有 G, 可有可无的学生信息
必须要有的部分是' ’而' '可有可无
select id,name from 表名 where name regexp ' *' ;
查询名字中含有 H , 至少出现一次的学生信息
select id, name from 表名 where name regexp ' H +' ;
查询名字以 - 开头的学生信息
select id,name from 表名 where name regexp '^[ - ]';
查询名字不是 的学生信息
select id,name from 表名 where name regexp ' [^ ]';
查询学生名字不以 ... 开头的学生信息
select id,name from 表名 where name regexp '^[^ ]';
四.运算符
MySQL 的运算符用于对记录中的字段值进行运算。MySQL 的运算符共有四种,分别 是:算术运算符、比较运算符、逻辑运算符和位运算符
1 算术运算符
运算符 | 描述 |
---|---|
+ | 加法 |
- | 减法 |
* | 乘法 |
/ | 除法 |
% | 取余 |
在除法运算和求余数运算中,除数不能为 0,若除数是 0,返回的结果则为 NULL。需 要注意的是,如果有多个运算符,按照先乘除后加减的优先级进行运算,相同优先级的运算 符没有先后顺序
2 比较运算符
运算符 | 描述 |
---|---|
= | 等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
!=或<> | 不等于 |
is null | 判断一个值是否为 NULL |
IS NOT NULL | 判断一个值是否不为 NULL |
BETWEEN AND | 两者之间 |
IN | 在集合中 |
LIKE | 通配符匹配 |
GREATEST | 两个或多个参数时返回最大值 |
LEAST | 两个或多个参数时返回最小值 |
- 如果两者都是整数,则按照整数值进行比较。
- 如果一个整数一个字符串,则会自动将字符串转换为数字,再进行比较。(在程序中,一般是不会吧这两者进行相比较的)
- 如果两者都是字符串,则按照字符串进行比较。
- 如果两者中至少有一个值是 NULL,则比较的结果是 NULL。
- 与linux返回值表达相反,linux 中运行正常返回值是0,运行异常返回值是非0
1 比较
2 NULL
3 between and
between and 覆盖的范围是>= 和 <=关系d
4 least 和greatest
-
LEAST:当有两个或者多个参数时,返回其中的最小值。如果其中一个值为 NULL,则 返回结果就为 NULL
-
GREATEST:当有两个或者多个参数时,返回其中的最大值。如果其中一个值为NULL, 则返回结果就为 NULL
5 IN 和 NOT IN
- IN 判断一个值是否在对应的列表中,如果是返回 1,否则返回 0
- NOT IN 判断一个值是否不在对应的列表中,如果不是返回 1,否则返回 0
6 LIKE 和 NOT LIKE
- LIKE 支持两种通配符:’%’ 用于匹配任意数目的字符,而’_’只能匹配一个字符
- NOT LIKE 正好跟 LIKE 相反,如果没有匹配成功则返回 1,反之返回 0
3 逻辑运算符
逻辑运算符又被称为布尔运算符,通常用来判断表达式的真假,如果为真返回 1,否则 返回 0,真和假也可以用 TRUE 和 FALSE 表示。MySQL 中支持使用的逻辑运算符有四种, 具体如表所示
运算符 | 描述 |
---|---|
not 或 ! | 逻辑非 |
and 或 && | 逻辑与 |
or | 逻辑或 |
xor | 逻辑异或 |
1 逻辑非
逻辑运算符中最简单的运算符就是逻辑非,逻辑非使用 NOT 或!表示。逻辑非将跟在它后面的逻辑测试取反,把真变为假,把假变为真。如果 NOT 后面的操作数为 0 时,所得值为 1;如果操作数为非 0 时,所得值为 0;如果操作数为 NULL 时,所得值为 NULL
2 逻辑与
- 当所有的操作数都为非0值且不为null时,返回值为1,否则为0(null与0比较特殊)
- null and 0 返回值为0
- 逻辑与使用 AND 或者&&表示
3 逻辑或
- 逻辑或表示包含的操作数,任意一个为非零值并且不是 NULL 值时,返回 1,否则返回 0。
- 当有一个操作数为null时,如果另一个操作数为非0值,则返回值为1,否则为null
- 如两个操作数均为null,则返回值为null
4 逻辑异或
- 两个非 NULL 值的操作数,如果两者都是 0 或者都是非 0,则返回 0;
- 如果一个为 0, 另一个为非 0,则返回结果为 1;
- 当任意一个值为 NULL 时,返回值为 NULL
4 位运算符
位运算符实际上是对二进制数进行计算的运算符。MySQL 内位运算会先将操作数变成二进制格式(1010 1111),然后进行位运算,最后在将计算结果
从二进制变回到十进制格式,方便用户查 看。MySQL 支持 6 种位运算符,具体如表所示
位运算符 | 描述 |
---|---|
& | 按位与 |
| | 按位或 |
~ | 按位取反 |
^ | 按位异或 |
<< | 按位左移 |
>> | 按位右移 |
5 小结
以上不管哪种运算符,在使用过程中都有优先级问题。运算符的优先级决定了不同的运 算符在计算过程中的先后顺序。级别高的运算符会先进行计算,如果运算符的级别相同, MySQL 会按照顺序从左到右依次进行计算,优先级如下表所示:
优先级 | 运算符 |
---|---|
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 | := |