MySQL高阶语句(三)

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

数学函数                 描述
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);

在这里插入图片描述

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

mysql> select round(1.299,2);

在这里插入图片描述

返回平方根

mysql> select sqrt(8);

在这里插入图片描述

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

mysql> select truncate(2.496,2);

在这里插入图片描述

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

mysql> select ceil (6.2);

在这里插入图片描述

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

mysql> select floor(6.2);

在这里插入图片描述

返回最大值

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

在这里插入图片描述

返回最小值

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

在这里插入图片描述

聚合函数

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

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

返回分数的总和

mysql> select sum(score) from info;

在这里插入图片描述

返回分数字段的个数

mysql> select count(score) from info;

在这里插入图片描述

返回分数的最小值

mysql> select min(score) from info;

在这里插入图片描述

返回分数的平均值

mysql> select avg(score) from info;

在这里插入图片描述

字符串函数

字符串函数       描述
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> select length('ab cd');

在这里插入图片描述

trim()返回去除格式的值

mysql> select trim('  li');

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

mysql> select upper('abc');

在这里插入图片描述

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

mysql> select lower('abc');

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

space(x)返回x个空格

mysql> select length(space(4));

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

mysql> select strcmp(18,19);

在这里插入图片描述

mysql> select reverse('gfedcba');

在这里插入图片描述

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

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

在这里插入图片描述

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

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

在这里插入图片描述

日期时间函数

字符串函数           描述
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> select curtime();

在这里插入图片描述

返回当前完整时间

mysql> select now();

在这里插入图片描述

返回月份

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

在这里插入图片描述

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

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

在这里插入图片描述

返回当前时间的小时

mysql> select hour(curtime());

在这里插入图片描述

返回当前时间的分钟

mysql> select minute(curtime());

在这里插入图片描述

返回当前时间的秒

mysql> select second(curtime());

在这里插入图片描述

当前是星期几

mysql> select dayofweek(curdate());

在这里插入图片描述

当前日期是本月的第几天

mysql> select dayofmonth(curdate());

在这里插入图片描述

当前日期是今年的第几天

mysql> select dayofyear(curdate());

在这里插入图片描述

存储过程

概述

前面学习的 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> show create procedure a\G

在这里插入图片描述

存储过程的参数

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> drop procedure if exists proc;
Query OK, 0 rows affected (0.00 sec)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值