ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

存储过程和函数

2022-09-12 19:35:16  阅读:209  来源: 互联网

标签:存储 函数 -- 数据库 格式 过程 select 属性


存储过程和函数

高级语言都有自己的库函数,数据库也不例外,在数据库中也提供了一些用于实现特定功能的函数。

一、数据库函数

1、聚合函数
在数据库函数中,聚集函数是我们最常用的一类。所谓的聚合,就是对一组值进行组合计算,返回单个值。

-- ① count
计数函数,对元组或者属性计数。
一般格式:count(属性名)。
select count(*) from 表名;  -- ‘*’是对整个表的元组进行计数
select count(属性名) from 表名 where 条件表达式;
-- count 支持条件计数,只计算有效值,不计算null值


-- ② max
求最大值函数,查询字段中的最大的数。
一般格式:max(属性名)
如:select max(属性名) from 表名 [where 条件表达式];
select max(S_age) from student;
 
-- ③ min
求最小值函数,查询字段中的最小的数。
一般格式:min(属性名)
如:select min(属性名) from 表名 [where 条件表达式];

-- ④ avg
求平均值函数,查询字段中所有数的平均值。
一般格式:avg(属性名)
select avg(属性名) from 表名 [where 条件表达式];

-- ⑤ sum
求和函数,查询属性中所有数的和。
一般格式:sum(属性名)
select sum(属性名) from 表名 [where 条件表达式];
-- 除了通过函数计算还能直接用运算符计算
如:select 属性名1*2,属性名2+属性名3 from 表名;


2、日期时间函数

-- ① now
求当前的日期和时间。
一般格式:now()。
如:select now();

-- ② date
求日期函数。
一般格式:date(日期时间类型的属性名)。
如:select date(birthday) from student;

-- ③ time
求时间函数。
一般格式:time(日期时间类型的属性名)。
如:select time(birthday) from student;

-- ④ date_format
时间日期类型转字符串类型函数。
一般格式:date_fromat(日期时间类型,格式字符串)
如:select date_format(now(),'%Y%m%d:%H%i%s');
-- 格式字符串可用变量来代替(之后会有学到变量)


3、常用的一般函数
-- ① upper
小写字母转大写字母函数。
一般格式:upper(字符型属性名);
如:select upper('abc');
-- 也可用 ucase函数代替,如:select ucase('abc');

-- ② lower
大写字母转小写字母函数。
一般格式:lower(字符型属性名);
如:select upper('ABC');
-- 也可用 lcase函数代替,如:select lcase('ABC');

-- ③ substring
提取字串函数,以给定的参数求字符串中的一个子串。
一般格式:substring(字符串,start,lenth);
-- 从字符串中第start个字符开始取出长度为lenth的字符串。
如:select substring('abc123@#$',4,3);# 结果为123
-- 也可以用mid函数代替,如:select mid('abc123@#$',4,3);

-- ④ round
四舍五入函数。(可代替floor函数,用于取整)
一般格式:round(数值类型[,精确位数]);
如:select round(1234.56); # 不加精确位数默认精确到整数位
select round(123.456,2); #加上精确位数就保留多少位小数

-- ⑤ power
求次方函数
一般格式:power(底数,指数);
如:select power(2,3);	-- 求2的3次方的值
-- 可以用pow函数代替power函数,如:select pow(2,3);
-- 既然有求次方函数,是不是也有求次方根(开方)函数呢?
答:没有求次方根函数。
-- 那用什么求次方根(开方)?
答:还是用pow函数。
如:pow(9,1/2);	pow(4,0.5) -- 只需要把指数改成小数或分数

-- ⑥ length
返回字符串的长度
一般格式:length(字符串)
-- ⑦ concat
字符串连接函数,连接多个字符串
一般格式:concat(字符串1,字符串2,……,字符串n)
-- ⑧ database
返回当前数据库名
一般格式:database()
-- ⑨ user
获取当前用户名
基本格式:user()

除了之前讲的函数之外,库函数中还有其他函数,如:求余mod,随机数rand,三角函数sin、cos、tan、arc tan,圆周率pi等。
数据库的库函数相当于C语言的库函数差不多,C语言库函数里有的数据处理函数,数据库中基本都会有;但是mysql 中的函数不同于C语言中的函数,mysql中的函数只用于数据处理,不会进行其他命令行操作。

二、自定义函数

数据库中自定义函数使用的特别少,不用详细了解。

数据库函数中无法执行SQL语句,数据库中的函数只用于数据处理,不能用于实现其它功能。

数据库中的函数必须要有返回值。

数据库中的数据处理需要用到函数的,一般使用数据库的库函数就能够完成,不常用自定义函数。

1、自定义函数的创建
-- 创建自定义函数的基本格式:
create function 函数名(函数参数 数据类型)
returns 返回值类型
begin
	-- 函数体
	return(函数返回值)
end;


-- 8.0版本的数据库,增加了一个数据库安全选项,需要执行以下代码才能创建函数
set global log_bin_trust_function_creators=TRUE;


2、函数的调用与删除

-- ① 函数调用
-- 函数调用的基本格式:
select 函数名(函数参数);
SELECT sum1(123,456);

-- ② 用表格数据作为函数参数
select 函数名(表格属性) from 表名;

-- ③ 删除函数
drop function 函数名;
drop function sum1;

三、存储过程

存储过程和函数类似,都是一个事先写好命令并编译后存在数据库中的MySQL语句集合,用于简化开发人员的工作,减少数据在数据库和应用服务器之间传输,提高处理效率。

既然都是函数,那就会有值的传入和传出,其中也存在一些区别。

存储过程:参数的传递(参数类型)能用 IN 、 OUT 、 INOUT ,并且没有直接的返回值。IN 表示数据传入,OUT 表示数据传出,INOUT 表示既可传入又可传出。存储过程内不能使用 use 切换数据库。

函数:参数只能使用IN,并且必须要有返回值。

标签:存储,函数,--,数据库,格式,过程,select,属性
来源: https://www.cnblogs.com/Mr-black-7/p/16687038.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有