MySQL高阶语句(三)

发布时间:2024-03-05 16:01

常用的数学函数如表示所示

数学函数                 描述
abs(x)              返回x的绝对值
rand()               返回0到1的随机数
mod(x,y)          返回x除以y以后的余数
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...)   返回集合中最大的值
least(x1,x2...)       返回集合最小的值

离2.59最近的整数

mysql> select round (2.59);

MySQL高阶语句(三)_第1张图片

1.299保留小数点后2位,这里会四舍五入

mysql> select round(1.299,2);

MySQL高阶语句(三)_第2张图片

返回平方根

mysql> select sqrt(8);

MySQL高阶语句(三)_第3张图片

保留小数点后2位,但truncate函数不会四舍五入

mysql> select truncate(2.496,2);

MySQL高阶语句(三)_第4张图片

返回大于或等于6.2的最小整数

mysql> select ceil (6.2);

MySQL高阶语句(三)_第5张图片

返回小于或等于6.2的最大整数

mysql> select floor(6.2);

MySQL高阶语句(三)_第6张图片

返回最大值

mysql> select greatest(1,2,3);

MySQL高阶语句(三)_第7张图片

返回最小值

mysql> select least(1,2,3);

MySQL高阶语句(三)_第8张图片

聚合函数

数据库函数中专门有一组函数是特意为库内记录求和或者对表中的数据进行集中概括而设计的,这些函数被称作聚合函数。

聚合函数       描述
avg()     返回指定列的平均值
count()   返回指定列中非NULL值的个数
min()     返回指定列的最小值
max()     返回指定列的最大值
sum(x)    返回指定列的所有值之和

返回分数的总和

mysql> select sum(score) from info;

MySQL高阶语句(三)_第9张图片

返回分数字段的个数

mysql> select count(score) from info;

MySQL高阶语句(三)_第10张图片

返回分数的最小值

mysql> select min(score) from info;

MySQL高阶语句(三)_第11张图片

返回分数的平均值

mysql> select avg(score) from info;

MySQL高阶语句(三)_第12张图片

字符串函数

字符串函数       描述
length (x)     返回字符串x的长度
trim ()        返回去除指定格式的值
concat (x,y)   将提供的参数x和 y拼接成一个字符串
upper (x)      将字符串x的所有字母变成大写字母
lower (×)      将字符串×的所有字母变成小写字母
left (x, y)    返回字符串x的前y个字符
right (x, y)   返回字符串x的后y个字符
repeat (x, y)  将字符串x重复y次
space (x)      返回x个空格
replace (x,y,z) 将字符串 z替代字符串 x中的字符串y
strcmp (x,y)    比较x和y,返回的值可以为-1,0,1
substring (x,y,z) 获取从字符串 x中的第y个位置开始长度为z的字符串
reverse (×)      将字符串x反转

length(x)返回字符串x的长度

返回abcd的长度,空格也算一个字符

mysql> select length('abcd');

MySQL高阶语句(三)_第13张图片

mysql> select length('ab cd');

MySQL高阶语句(三)_第14张图片

trim()返回去除格式的值

mysql> select trim('  li');

MySQL高阶语句(三)_第15张图片

concat(x,y)将提供的参数x和y拼接成一个字符串

mysql> select concat('abc','def');

MySQL高阶语句(三)_第16张图片

还可以结合其他函数,如trim(将后面的函数删除格式)

mysql> select concat('abc',trim(' def'));

MySQL高阶语句(三)_第17张图片

upper(x)将字符串x的所有字母变成大写字母

mysql> select upper('abc');

MySQL高阶语句(三)_第18张图片

lower(x)将字符串x的所有字母变成小写字母

mysql> select lower('abc');

MySQL高阶语句(三)_第19张图片

left(x,y)返回字符串x的前提y个字符

mysql> select left('abcdefg',4);

MySQL高阶语句(三)_第20张图片

right(x,y)返回字符串x的后y个字符

mysql> select right('abcdefg',4);

MySQL高阶语句(三)_第21张图片

把字符串的前3个字母和后3个字母拼接起来

mysql> select concat(left('abcdef',4),right('abcdef',4));

MySQL高阶语句(三)_第22张图片

repeat(x,y)将字符串x重复y次

mysql> select repeat('abc',3);

MySQL高阶语句(三)_第23张图片

space(x)返回x个空格

mysql> select length(space(4));

MySQL高阶语句(三)_第24张图片

replace(x,y,z)将字符串z替代字符串x中的字符串y

mysql> select replace('hello','ll','cc');

MySQL高阶语句(三)_第25张图片

substring(x,y,z)获取从字符串x中的第y个位置开始长度为z的字符串返回从字符串中第三个字符开始的4个字符

mysql> select substring('abcdefg',4,5);

MySQL高阶语句(三)_第26张图片

strcmp(x,y)比较x和y,返回的值可以为-1,0,1

mysql> select strcmp(18,19);

MySQL高阶语句(三)_第27张图片

mysql> select reverse('gfedcba');

MySQL高阶语句(三)_第28张图片

返回字符串的前4个字符,然后反转输出

mysql> select reverse(left('gfedcba',4));

MySQL高阶语句(三)_第29张图片

先将字符串反转,再输出前4个字符

mysql> select left(reverse('gfedcba'),4);

MySQL高阶语句(三)_第30张图片

日期时间函数

字符串函数           描述
curdate ()        返回当前时间的年月日
curtime ()        返回当前时间的时分秒
now ()            返回当前时间的日期和时间
month (x)         返回日期x中的月份值
week (×)          返回日期x是年度第几个星期
hour (x)          返回x中的小时值
minute (×)        返回x中的分钟值
second (x)        返回x中的秒钟值
dayofweek (×)     返回x是星期几,1星期日,2星期一
eplace (x, y,z)   将字符串 z替代字符串 x中的字符串 
ydayofmonth (x)   计算日期x是本月的第几天
dayofyear (x)     计算日期x是本年的第几天

返回年月日

mysql> select curdate();

MySQL高阶语句(三)_第31张图片

返回当前时间

mysql> select curtime();

MySQL高阶语句(三)_第32张图片

返回当前完整时间

mysql> select now();

MySQL高阶语句(三)_第33张图片

返回月份

mysql> select month('2021-07-17');

MySQL高阶语句(三)_第34张图片

返回当前日期是一年中的第几周

mysql> select week('2021-07-17');

MySQL高阶语句(三)_第35张图片

返回当前时间的小时

mysql> select hour(curtime());

MySQL高阶语句(三)_第36张图片

返回当前时间的分钟

mysql> select minute(curtime());

MySQL高阶语句(三)_第37张图片

返回当前时间的秒

mysql> select second(curtime());

MySQL高阶语句(三)_第38张图片

当前是星期几

mysql> select dayofweek(curdate());

MySQL高阶语句(三)_第39张图片

当前日期是本月的第几天

mysql> select dayofmonth(curdate());

MySQL高阶语句(三)_第40张图片

当前日期是今年的第几天

mysql> select dayofyear(curdate());

MySQL高阶语句(三)_第41张图片

存储过程

概述

前面学习的 MysQL相关知识都是针对一个表或几个表的单条soL,语句,使用这样的sQL
语句虽然可以完成用户的需求,但在实际的数据库应用中,有些数据库操作可能会非常复杂,可能会需要多条sQL语句一起去处理才能够完成,这时候就可以使用存储过程,轻松而高效的去完成这个需求,有点类似shell脚本里的函数

存储过程的优点:

(1)执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率
(2 ) sQL语句加上控制语句的集合,灵活性高
(3)在服务器端存储,客户端调用时,降低网络负载
(4)可多次重复被调用,可随时修改,不影响客户端调用
(5)可完成所有的数据库操作,也可控制数据库的信息访问权限

创建存储过程

mysql> delimiter $$
mysql> create procedure a()
    -> begin
    -> select * from info;
    -> update info set score=333 where name='lisi';
    -> select * from info;
    -> end $$
Query OK, 0 rows affected (0.01 sec)
mysql> delimiter ;
mysql> call a();

MySQL高阶语句(三)_第42张图片

mysql> show create procedure a\G

MySQL高阶语句(三)_第43张图片

存储过程的参数

IN输出参数:表示调用者向过程传入值(传入值可以是字面量或变量)
out输出参数:表示过程向调用者传入出值(可以返回多个值)(传出值只能是变量)
INOUT输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

mysql> delimiter @@
mysql> create procedure proc (in inname varchar(40))
    -> begin
    -> select * from infos where name=inname;
    -> end @@
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;
mysql> select * from infos;

MySQL高阶语句(三)_第44张图片

删除存储过程

mysql> drop procedure if exists proc;
Query OK, 0 rows affected (0.00 sec)

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号