前言
SQL语言作为高级语言,除了简单的查询语句与定义语句,还支持函数的定义(自定义函数用的较少,大多时候用库函数),当然,除了函数,MySQL还支持存储过程,由于MySQl的独特性,他的用法和其他的语言也有一些差距;
一、函数
一丶数据库的库函数
1.聚合函数
聚合函数是对一组值进行计算和返回单个值。
①.统计函数:count
select count() from class; -- 统计班级个数;
条件统计:
select count(*) from class where c_stunum>60; -- 统计学生人数大于60的班级个数;
②.求最大值:max
select max(c_stunum) from class; select * from class where c_stunum=max(c_stunum); -- 统计学生人数最多的班级人数;
③.求和函数:sum
select sum(c_strnum) from class; -- 求所有班级中学生人数的和;
除了这些函数,还有像avg,min函数,他们的用法都很相似,就不做过多的介绍;
2.日期时间函数
①.获取当前时间:now
基本格式:now();
如:insert into <表名> values now();
②.获取日期时间类型中的数据:date()
select date('2000-1-1 6:30:30'); -- 截取日期:
③.获取指定日期时间数据类型数据中的时间数据time
select time("2020-7-31 14:36:31"); -- 截取时间;
④.将日期转换为字符串类型date_format()
select date_format(now(),"% Y-%m-%d %H:%i:%s"); -- 后面的字符串类型可以自己定义;
3.常用库函数
①.小写字母转大写:upper select upper('abc'); ②.求字符串子串:substring select substring("123abc@#$XYZ",3,8); ③.四舍五入函数:round() 1.select round(123.456); -- 只保留整数 2.select round(123.456,1);-- 保留1位小数 ④.求次方函数:power,pow select power(4,5); 举一反三: select power(9,1/2);-- 求9的开根号; ⑤.获取当前数据库名:database() select database(); ⑥.获取字符串的长度:length() select length("123,456,7,dfghr"); ⑦.字符串连接函数,连接多个字符串:concat() select concat("1,34",'123','4frghy'); 上面的所有函数源代码: -- ①.小写字母转大写:`upper` select upper('abc'); -- ②.求字符串子串:`substring` select substring('123abc@#$XYZ',3,8); -- 从第三个开始,截取8个长度的子串; -- ③.四舍五入函数:`round()` select round(123.456); -- 只保留整数 select round(123.456,1);-- 保留1位小数 -- ④.求次方函数:`power,pow` select power(4,5); -- 举一反三: select power(9,1/2); -- 求9的开根号; -- ⑤.获取当前数据库名:`database()` select database(); -- ⑥.获取字符串的长度:`length()` select length("123,456,7,dfghr"); -- ⑦.字符串连接函数,连接多个字符串:`concat()` select concat("1,34",'123','4frghy');
二、自定义函数
数据库中的自定义函数和c语言类似,可以自定义函数,编辑函数所执行的代码,使其完成自己想要的功能。
1.自定义函数的创建
①.创建自定义函数的基本格式:
#自定义函数; create function power2() returns 返回值类型 begin 函数体语句 return (函数返回结果) end;
例如:创建一个函数,求两数和;
-- 创建一个求和函数 create function sum1(x int,y int) returns int return x+y; -- 单条语句可以不使用begin,end; set global log_bin_trust_function_creators=true; -- 关闭生命周期安全检查; select sum1(2,3); -- 结果查询;
函数注意事项
一.如果函数体较为复杂,或者执行语句较多,需要使用delimiter,和begin,end;由于要使用关键字:delimiter,后面介绍过后再详细讲解函数体语句较多的写法;
二.函数里面无法使用select,create等动态SQL语句;如果要使用这些,就要用到存储过程;
2.自定义结束符
MySQL数据库中默认语句的结束符为“;”,此外MySQL数据库还支持自定义结束符,自定义结束符的关键字:delimiter
自定义结束符的基本格式:
delimiter <符号>;
我们在定义函数的时候就会用到自定义结束符;
#自定义结束符delimiter在函数中的使用; delimiter // -- 定义分隔符为//,此后的结束符都是//; create function sum1(x int,y int) returns int begin return x+y end // delimiter ;
3.自定义函数的调用
函数调用的基本格式为:select 函数名(函数参数);
如:select sum1(3,2);
4.自定义函数的删除
删除自定义函数的恶基本格式:drop function 函数名;
如:drop function sum1;