加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MYSQL的函数分类及储存进程行使履历

发布时间:2017-07-22 07:08:35 所属栏目:编程 来源:站长网
导读:Mysql储存进程是一组为了完成特定成果的SQL语句集,颠末编译之后存储在数据库中,当必要行使该组SQL语句时用户只必要通过指定储存进程的名字并给定参数就可以挪用执行它了,简而言之就是一组已经写好的呼吁,必要行使的时辰拿出来用就可以了。想要快速的了

Mysql储存进程是一组为了完成特定成果的SQL语句集,颠末编译之后存储在数据库中,当必要行使该组SQL语句时用户只必要通过指定储存进程的名字并给定参数就可以挪用执行它了,简而言之就是一组已经写好的呼吁,必要行使的时辰拿出来用就可以了。想要快速的相识Mysql储存进程吗,就一同看一下下文的“Mysql储存进程-道理、语法、函数具体声名”吧!

一、Mysql储存进程简介:

储存进程是一个可编程的函数,它在数据库中建设并生涯。它可以有SQL语句和一些非凡的节制布局构成。当但愿在差异的应用措施或平台上执行沟通的函数,可能封装特定成果时,存储进程长短常有效的。数据库中的存储进程可以看做是对编程中面向工具要领的模仿。它应承节制数据的会见方法。存储进程凡是有以下利益:

1)存储进程能实现较快的执行速率。

假如某一操纵包括大量的Transaction-SQL代码或别离被多次执行,那么存储进程要比批处理赏罚的执行速率快许多。由于存储进程是预编译的。在初次运行一个存储进程时查询,优化器对其举办说明优化,而且给出最终被存储在体系表中的执行打算。而批处理赏罚的Transaction-SQL语句在每次运行时都要举办编译和优化,速率相对要慢一些。

心得:编译优化,快!

2)存储进程应承尺度组件是编程。

存储进程被建设后,可以在措施中被多次挪用,而不必从头编写该存储进程的SQL语句。并且数据库专业职员可以随时对存储进程举办修改,对应用措施源代码毫无影响。

心得:封装与抽象,简朴挪用

3)存储进程可以用流节制语句编写,有很强的机动性,可以完成伟大的判定和较伟大的运算。

心得:成果强盛,逻辑强盛

4)存储进程可被作为一种安详机制来充实操作。

体系打点员通过执行某一存储进程的权限举办限定,可以或许实现对响应的数据的会见权限的限定,停止了非授权用户对数据的会见,担保了数据的安详。

心得:限定与安详

5)存储进程能过镌汰收集流量。

针对统一个数据库工具的操纵(如查询、修改),假如这一操纵所涉及的Transaction-SQL语句被组织程存储进程,那么当在客户计较机上挪用该存储进程时,收集中传送的只是该挪用语句,从而大大增进了收集流量并低落了收集负载。

心得:镌汰收集流量(封装的好)

mysql> DELIMITER //

mysql>

CREATE PROCEDURE proc1(OUT s int)

BEGIN

SELECT COUNT(*) INTO s FROM user;

END

//

mysql> DELIMITER ;

存储措施中的变量

1)DECLARE局部变量

DECLARE var_name[,...] type [DEFAULT value]

这个语句被用来声明局部变量。

要给变量提供一个默认值,请包括一个DEFAULT子句。值可以被指定为一个表达式,不必要为一个常数。假如没有DEFAULT子句,初始值为NULL。 局部变量的浸染范畴在它被声明的BEGIN ... END块内。它可以被用在嵌套的块中,除了那些用沟通名字声明变量的块。

2)变量SET语句

SET var_name = expr [, var_name = expr]

在存储措施中的SET语句是一样平常SET语句的扩展版本。

被参考变量大噶?鲇措施内声明的变量,可能是全局处事器变量。 在存储措施中的SET语句作为预先存在的SET语法的一部门来实现。这应承SET a=x, b=y, ...这样的扩展语法。个中差异的变量范例(局域声明变量及全局和集团变量)可以被殽杂起来。这也应承把局部变量和一些只对体系变量故意义的选项归并起来。

3)SELECT ... INTO 语句

SELECT col_name[,...] INTO var_name[,...] table_expr

这个SELECT语法把选定的列直接存储到变量。因此,只有单一的行可以被取回。 SELECT id,data INTO x,y FROM test.t1 LIMIT 1;

MySQL存储函数-根基常用函数

1、字符串类

1)mysql储存进程函数-字符串函数:

CHARSET(str) //返回字串字符集

CONCAT (string2 [,... ]) //毗连字串

INSTR (string ,substring ) //返回substring初次在string中呈现的位置,不存在返回0

LCASE (string2 ) //转换成小写

LEFT (string2 ,length ) //从string2中的左边起取length个字符

LENGTH (string ) //string长度

LOAD_FILE (file_name ) //从文件读取内容

LOCATE (substring , string [,start_position ] ) 同INSTR,但可指定开始位置

LPAD (string2 ,length ,pad ) //一再用pad加在string开头,直到字串长度为length

LTRIM (string2 ) //去除前端空格

REPEAT (string2 ,count ) //一再count次

REPLACE (str ,search_str ,replace_str ) //在str顶用replace_str替代search_str

RPAD (string2 ,length ,pad) //在str后用pad增补,直到长度为length

RTRIM (string2 ) //去除后端空格

STRCMP (string1 ,string2 ) //逐字符较量两字串巨细。来自www.bianceng.cn

SUBSTRING (str , position [,length ]) //从str的position开始,取length个字符,

TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) //去除指定位置的指定字符

UCASE (string2 ) //转换成大写

RIGHT(string2,length) //取string2最后length个字符

SPACE(count) //天生count个空格

注:mysql中处理赏罚字符串时,默认第一个字符下标为1,即参数position必需大于便是1

2、数学类

1)mysql储存函数-数学函数:

ABS (number2 ) //绝对值

BIN (decimal_number ) //十进制转二进制

CEILING (number2 ) //向上取整

CONV(number2,from_base,to_base) //进制转换

FLOOR (number2 ) //向下取整

FORMAT (number,decimal_places ) //保存小数位数

HEX (DecimalNumber ) //转十六进制

注:HEX()中可传入字符串,则返回其ASC-11码,如HEX('DEF')返回4142143

也可以传入十进制整数,返回其十六进制编码,如HEX(25)返回19

LEAST (number , number2 [,..]) //求最小值

MOD (numerator ,denominator ) //求余

POWER (number ,power ) //求指数

RAND([seed]) //随机数

ROUND (number [,decimals ]) //四舍五入,decimals为小数位数]

注:返回范例并非均为整数,如下文:

SIGN (number2 ) //

3、日期时刻类

ADDTIME (date2 ,time_interval ) //将time_interval加到date2

CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //转换时区

CURRENT_DATE ( ) //当前日期

CURRENT_TIME ( ) //当前时刻

CURRENT_TIMESTAMP ( ) //当前时刻戳

DATE (datetime ) //返回datetime的日期部门

DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或时刻

DATE_FORMAT (datetime ,FormatCodes ) //行使formatcodes名目表现datetime

DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上减去一个时刻

DATEDIFF (date1 ,date2 ) //两个日期差

DAY (date ) //返回日期的天

DAYNAME (date ) //英文礼拜

DAYOFWEEK (date ) //礼拜(1-7) ,1为礼拜天

DAYOFYEAR (date ) //一年中的第几天

EXTRACT (interval_name FROM date ) //从date中提取日期的指定部门

MAKEDATE (year ,day ) //给出年及年中的第几天,天生日期串

MAKETIME (hour ,minute ,second ) //天生时刻串

MONTHNAME (date ) //英文月份名

NOW ( ) //当前时刻

SEC_TO_TIME (seconds ) //秒数转成时刻

STR_TO_DATE (string ,format ) //字串转成时刻,以format名目表现

TIMEDIFF (datetime1 ,datetime2 ) //两个时刻差

TIME_TO_SEC (time ) //时刻转秒数]

WEEK (date_time [,start_of_week ]) //第几周

YEAR (datetime ) //年份

DAYOFMONTH(datetime) //月的第几天

HOUR(datetime) //小时

LAST_DAY(date) //date的月的最后日期

MICROSECOND(datetime) //微秒

MONTH(datetime) //月

MINUTE(datetime) //分返回标记,正负或0

SQRT(number2) //开平方

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读