Mysql数据库(九)——mysql高阶语句(下)

  • 一、函数
    • 1、数学函数
    • 2、聚合函数
    • 3、字符串函数
    • 4、日期时间函数
  • 二、存储过程
    • 1、简介
    • 2、优点
    • 3、语法
      • ①、例
      • ②、参数分类
      • ③、带参数的存储过程
      • ④、修改存储过程
      • ⑤、删除存储过程

一、函数

  • Mysql 数据库函数提供了能够实现各种功能的方法,使我们在查询记录时能够更高效的输出。
  • Mysql 内建了很多函数,常用的包括数学函数、聚合函数、字符串函数和日期时间函数

1、数学函数

数学函数 描述
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…) 返回集合中最小的值
select abs(-1),rand(),mod(5,3),power(2,3),round(5.5),round(5.785,2),round(5.784,2),sqrt(4);

select truncate(3.755,2),ceil(5.2),floor(5.2),greatest(1,2,3),greatest(1,2,'a'),least('a','b','c'),least(1,2,null);

2、聚合函数

  • Mysql 数据库函数中专门有一组函数特意为库内记录求和或者对表中的数据进行几种概括而设计的,这些函数被称作聚合函数。
聚合函数 描述
avg() 返回指定列的平均值
count() 返回指定列中非 NULL 值的个数
min() 返回指定列的最小值
max() 返回指定列的最大值
sum(x) 返回指定列的所有值之和
select avg(id) from ljm;
select count(id) from ljm;
select min(id) from ljm;
select max(id) from ljm;
select sum(id) from ljm;

3、字符串函数

字符串函数 描述
trim() 返回去除指定格式的值
concat(x,y) 将提供的参数 x 和 y 拼接成一个字符串
substr(x,y) 获取从字符串 x 中的第 y 个位置开始的字符串,跟substring()函数作用相同
substr(x,y,z) 获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串
length(x) 返回字符串 x 的长度
replace(x,y,z) 将字符串 z 替代字符串 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 个空格
strcmp(x,y) 比较 x 和 y,返回的值可以为-1,0,1
reverse(x) 将字符串 x 反转
select trim('   123abc');select concat('abc',123);select substr('abcdefg',3);
select substr('abcdefg',3,2);select length('abcdefg');select replace('abcdefg','a','1');select upper('abc');select lower('ABC');select left('abcdefg',3);select right('abcdefg',3);select repeat('abc',2);select length(space(3)); select strcmp(1,2),strcmp(2,2),strcmp(3,2);select reverse('abcdefg');

4、日期时间函数

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

二、存储过程

1、简介

  • MysQL数据库存储过程是一组为了完成特定功能的SQL语句的集合。
  • 存储过程这个功能是从5.0版本才开始支持的,它可以加快数据库的处理速度,增强数据库在实际应用中的灵活性。
  • 存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来,这个过程经编译和优化后存储在数据库服务器中。当需要使用该存储过程时,只需要调用它即可。
  • 操作数据库的传统SQL语句在执行时需要先编译,然后再去执行,跟存储过程一对比,明显存储过程在执行上速度更快,效率更高。存储过程在数据库中创建并保存,它不仅仅是SQL语句的集合,还可以加入一些特殊的控制结构,也可以控制数据的访问方式。

2、优点

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

3、语法

create procedure <过程名> ([过程参数……]) <过程体>
[过程参数……] 格式
<过程名>:尽量避免与内置的函数或字段重名
<过程体>:语句
[in|out|inout] <参数名><类型>

①、例

例:
delimiter $$                                    #将语句的结束符号从分号;临时修改,以防出问题,可以自定义
create procedure ee(in inname varchar(16))      #创建存储过程,过程名自定义,()可带参数begin                                     #过程体以关键字BEGIN开始select * from test1 where a_name='aaaa';      #过程体语句end$$                                     #过程体以关键字END结尾
delimiter ;                                     #将语句的结束符号恢复为分号
call ee('aaaa');                              #调用存储过程--------------查看存储过程--------------
show create procedure XXX\G                      #查看某个储存过程的具体信息


②、参数分类

  • 存储过程的主体部分,即过程体
  • 以 begin 开始,end 结束,若只有一条SQL语句,可省略 begin 和 end
  • 以 delimiter 开始和结束

③、带参数的存储过程

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

④、修改存储过程

alter procedure <过程名> [<特征>……]
alter procedure ff modifies sql data sql security invoker;modifies sql data:表名子程序包含写程序的语句security:安全等级invoker:当定义为 invoker 时,只要执行者有执行权,就可以成功执行

⑤、删除存储过程

drop procedure if exists ff;

Mysql数据库(九)——mysql高阶语句(下)相关推荐

  1. Mysql数据库基础及高阶

    基础篇 通用语法及分类 DDL: 数据定义语言,用来定义数据库对象(数据库.表.字段) DML: 数据操作语言,用来对数据库表中的数据进行增删改 DQL: 数据查询语言,用来查询数据库中表的记录 DC ...

  2. Mysql数据库(七)——mysql高阶语句(上)

    Mysql数据库(七)--mysql高阶语句(上) 一.按关键字排序 1.单字段排序 2.多字段排序 二.或/且的运用 三.查询不重复记录 四.对结果进行分组 五.限制结果条目 六.设置别名 使用场景 ...

  3. MySQL——高阶语句、存储过程(下)

    MySQL--高阶语句(下) 一.数据库函数 1.数学函数 2.聚合函数 3.字符串函数 4.日期时间函数 二.存储过程 1.概述 2.简介 3.优点 4.创建存储过程 调用存储过程 带参数的存储过程 ...

  4. Mysql数据库(八)——mysql高阶语句(中)

    Mysql数据库(八)--mysql高阶语句(中) 一.正则表达式(同shell脚本的正则表达式) 1.以"."代替任意一个字符 2.匹配前面字符多次 3.匹配前面字符至少一次 4 ...

  5. MySQL——高阶语句(上)

    MySQL高阶语句(上) 一.MySQL高级语句 1.ORDER BY----按关键字排序 单字段排序 多字段排序 2.OR/AND----或/且 3.DISTINCT----查询不重复记录 4.GR ...

  6. MYSQL sql 高阶语句 (sequel)

    sql 高阶语句 一.空值(NULL) 和 无值('') 的区别 · 无值的长度为 0,不占用空间的:而 NULL 值的长度是 NULL,是占用空间的. · S NULL 或者 IS NOT NULL ...

  7. mysql高阶语句一

    高阶语句一 1.按关键字排序 (1)按一个字段排序: (2)多字段排序 2.区间判断及查询不重复记录 2.1 AND/OR --且/或 2.2.对结果进行分组统计 3.限制结果条目 4.设置别名(al ...

  8. MySQL——高阶语句(中)

    MySQL--高阶语句(中) 一.正则表达式 二.运算符 三.比较运算符 四.逻辑运算符 五.位运算符 六.连接查询 1.内连接 2.左连接 3.右连接 一.正则表达式 MySQL 正则表达式通常是在 ...

  9. MYSQL数据库 增删改查基础语句

    MYSQL数据库 增删改查基础语句 **********************DDL 语句 *********************   ( DDL 是数据定义语言的缩写,简单的说,就是对数据库内 ...

最新文章

  1. 算法题26 复杂链表的复制
  2. 目前最全:52 个深度学习目标检测模型汇总,论文、源码一应俱全!
  3. 使用 Java 11 安装 SAP Commerce Cloud 1905 的一些常见问题
  4. 联想ThinkCentre M8400t-n000等高配电脑重装成xp蓝屏0xc000007b代码
  5. Bailian4015 邮箱验证【字符串】
  6. 如何解决Ubuntu桥接模式无法联网
  7. 系统学习深度学习(二十一)--GoogLeNetV4与Inception-ResNet V1,V2
  8. Visio网络及设备模板库
  9. 2022年iOS面试题简答题
  10. html js 跑马灯效果,Javascript实现跑马灯效果的简单实例
  11. 乐安全 支持x86_不用苦等五一 四款近期主打平板推荐
  12. python绘制直线的垂线_p countour中的Python垂直线
  13. Unity发布WebGL运行Js代码报错:‘Pointer_stringify‘ is obsoleted and will be removed in a future Unity version.
  14. 做百度竞价推广的好处与坏处?
  15. Vue动态设置路由title
  16. 每周推荐阅读第一季结束
  17. 与贸易有关的知识产权协议 (转)
  18. H5监听摇一摇和手机倾斜事件(重力感应)
  19. Java-web实现用户登录、注册功能
  20. 【十年磨一剑】我们能从阿里架构师的身上学到什么?

热门文章

  1. Qt的Socket通信
  2. Quibi:我轻轻地咬一口 你最爱的Netflix和TikTok
  3. Apple 低延迟HLS分析
  4. Facebook批量优化360照片
  5. 学习方法之01高效学习方程式,你的学习到底是哪里出了问题
  6. PMP之项目整合管理之变更管理计划
  7. 融合CDN,纾解数据拥塞之困
  8. NASA告诉你四翼飞行器的飞行原理
  9. MapReduce太慢了,记一次对它的调优建议。
  10. 怎么改变github的用户名字,身份?