欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql学习【第4篇】:MySQL函数

程序员文章站 2022-03-09 14:33:49
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! mysql学习【第4篇】:MySQL函数 官方文档 : 官方文档 常用函数 分类: 数学函数 , 字符串函数 , 日期和时间函数 , 系统信息函数 聚合函数 mysql之自定义函数 什么是函数: ......

狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! 

mysql学习【第4篇】:mysql函数

官方文档 :

常用函数

分类: 数学函数 , 字符串函数 , 日期和时间函数 , 系统信息函数

# 数学函数 (这里只列出一些常用的)

select abs(-8);  /*绝对值*/

select ceiling(9.4);  /*向上取整*/

select floor(9.4);  /*向下取整*/

select rand();  /*随机数,返回一个0-1之间的随机数*/

select sign(0); /*符号函数: 负数返回-1,正数返回1,0返回0*/


#字符串函数

select char_length('狂神说坚持就能成功'); /*返回字符串包含的字符数*/

select concat('我','爱','程序');  /*合并字符串,参数可以有多个*/

select insert('我爱编程helloworld',1,2,'超级热爱');  /*替换字符串,从某个位置开始替换某个长度*/

select lower('kuangshen'); /*小写*/

select upper('kuangshen'); /*大写*/

select left('hello,world',5);  /*从左边截取*/

select right('hello,world',5);  /*从右边截取*/

select replace('狂神说坚持就能成功','坚持','努力');  /*替换字符串*/

select substr('狂神说坚持就能成功',4,6); /*截取字符串,开始和长度*/

select reverse('狂神说坚持就能成功'); /*反转*/


#日期和时间函数

select current_date();   /*获取当前日期*/
select curdate();   /*获取当前日期*/

select now();   /*获取当前日期和时间*/
select localtime();   /*获取当前日期和时间*/
select sysdate();   /*获取当前日期和时间*/

/*获取年月日,时分秒*/
select year(now());
select month(now());
select day(now());
select hour(now());
select minute(now());
select second(now());


#系统信息函数
select version();  /*版本*/
select user();  /*用户*/


# 查询姓李的同学,改成立
select replace(studentname,'李','历') as 新名字
from student where studentname like '李%';

 聚合函数

mysql学习【第4篇】:MySQL函数

#聚合函数

/*count:非空的*/
select count(studentname) from student;
select count(*) from student;
select count(1) from student;  /*推荐*/


select sum(studentresult) as 总和 from result;
select avg(studentresult) as 平均分 from result;
select max(studentresult) as 最高分 from result;
select min(studentresult) as 最低分 from result;


# 查询不同课程的平均分,最高分,最低分
# 前提:根据不同的课程进行分组

select subjectname,avg(studentresult) as 平均分,max(studentresult) as 最高分,min(studentresult) as 最低分
from result as r
inner join `subject` as s
on r.subjectno = s.subjectno
group by r.subjectno
having 平均分>80;

/*
where写在group by前面.
要是放在分组后面的筛选
要使用having..
*/

 

 mysql之自定义函数

什么是函数:

    函数存储着一系列sql语句,调用函数就是一次性执行这些语句。所以函数可以降低语句重复。
    但注意的是函数注重返回值,不注重执行过程,所以一些语句无法执行。所以函数并不是单纯的sql语句集合。

    函数与存储过程的区别:函数只会返回一个值,不允许返回一个结果集。函数强调返回值,所以函数不允许返回多个值的情况,即使是查询语句。

函数的创建:

/*语法*/
create function 函数名([参数列表]) returns 数据类型
begin
 sql语句;
 return 值;
end;

/*参数列表的格式是:  变量名 数据类型*/

-- 最简单的仅有一条sql的函数
create function myselect2() returns int return 666;
select myselect2(); -- 调用函数

--
create function myselect3() returns int
begin 
    declare c int;
    select id from class where cname="python" into c;
    return c;
end;
select myselect3();
-- 带传参的函数
create function myselect5(name varchar(15)) returns int
begin 
    declare c int;
    select id from class where cname=name into c;
    return c;
end;
select myselect5("python");

补充:

    还可以有一些特别的选项,特别的选项写在return 之后,begin之前,如:
        comment:一个关于函数的描述
         还有一些比如sql security等选项,有兴趣可以自行百度。这里不讲解,仅一提有此知识点。