发布时间: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...) 返回集合最小的值
mysql> select round (2.59);
mysql> select round(1.299,2);
mysql> select sqrt(8);
mysql> select truncate(2.496,2);
mysql> select ceil (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反转
mysql> select length('abcd');
mysql> select length('ab cd');
mysql> select trim(' li');
mysql> select concat('abc','def');
mysql> select concat('abc',trim(' def'));
mysql> select upper('abc');
mysql> select lower('abc');
mysql> select left('abcdefg',4);
mysql> select right('abcdefg',4);
mysql> select concat(left('abcdef',4),right('abcdef',4));
mysql> select repeat('abc',3);
mysql> select length(space(4));
mysql> select replace('hello','ll','cc');
mysql> select substring('abcdefg',4,5);
mysql> select strcmp(18,19);
mysql> select reverse('gfedcba');
mysql> select reverse(left('gfedcba',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)