深入理解高级语句(三)

本文详细介绍了MySQL中的数学函数,如abs(), rand(), 和日期时间函数如curdate()和curtime(),并重点讲解了聚合函数如avg()和count(),以及储存过程的实例,展示了如何利用这些工具进行数据库操作和性能优化。
摘要由CSDN通过智能技术生成

一、数据库函数

一、数学函数

数据库内存储的记录,经常要进行一系列的算术操作,所以 MysQL支持很多数学函数。

数学函数描述
abs (x)返回x的绝对值
rand ()返回o到1 的随机数
mod (x,y)返回x除以y以后的余数
power (x, y)返回x的y次方
round (x)返回离x最近的整数
round (x , y)保留x 的y位小数四舍五入后的值
sqrt (x)返回×的平方根
truncate (x, y)返回数字x截断为y位小数的值
ceil (×)返回大于或等于x的最小整数
floor (x)返回小于或等于x的最大整数
greatest (×1,×2…)返回集合中最大的值
least(×1,x2…)返回集合中最小的值
格式:
select 函数

二、聚合函数

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

聚合函数描述
avg ()返回指定列的平均值
count()返回指定列中非NUL,L值的个数
min ()返回指定列的最小值
max ()返回指定列的最大值
sum (x)返回指定列的所有值之和
格式:
select 函数(字段名) from 表名

三、字符串函数

字符串函数描述
length (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次
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)将字符串x反转
格式:
select 函数

四、4、日期时间函数

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

二、储存过程

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

实例

mysql> delimiter @@ #修改结束符
mysql> create procedure a() #创建存储过程a
    -> begin 				#开始
    -> select * from wz;
    -> update wz set score=40 where name='anjila';
    -> select * from wz;
    -> end @@				#结束
Query OK, 0 rows affected (0.05 sec)

mysql> delimiter ;			#将结束符改回;
mysql> call a(); #调用存储过程
+----+------------+--------+------------+--------+
| id | name       | score  | address    | hobbid |
+----+------------+--------+------------+--------+
|  1 | xiaoqiao   |  80.00 | beijing    |      2 |
|  2 | yuji       |  60.00 | shanghai   |      2 |
|  3 | jialuo     | 100.00 | hangzhou   |      4 |
|  4 | ganjiang   |  99.00 | hangzhou   |      4 |
|  5 | luban      |  98.00 | shengzheng |      5 |
|  6 | zhangliang |  60.00 | nanjing    |      3 |
|  7 | anjila     |  15.00 | suzhou     |      5 |
+----+------------+--------+------------+--------+
7 rows in set (0.00 sec)

+----+------------+--------+------------+--------+
| id | name       | score  | address    | hobbid |
+----+------------+--------+------------+--------+
|  1 | xiaoqiao   |  80.00 | beijing    |      2 |
|  2 | yuji       |  60.00 | shanghai   |      2 |
|  3 | jialuo     | 100.00 | hangzhou   |      4 |
|  4 | ganjiang   |  99.00 | hangzhou   |      4 |
|  5 | luban      |  98.00 | shengzheng |      5 |
|  6 | zhangliang |  60.00 | nanjing    |      3 |
|  7 | anjila     |  40.00 | suzhou     |      5 |
+----+------------+--------+------------+--------+
7 rows in set (0.02 sec)

Query OK, 0 rows affected (0.02 sec)

mysql> show create procedure a\G; #查看存储过程的具体信息

在这里插入图片描述

mysql> show procedure status like 'a'\G; #查看指定存储过程信息

在这里插入图片描述

mysql> drop procedure if exists a; #删除存储过程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值