mysql中自己定义函数编程
语法:
新建:
Create function
function_name(參数列表)returns返回值类型
函数体
函数名,应该合法的标识符,而且不应该与已有的keyword冲突。
一个函数应该属于某个数据库,能够使用db_name.funciton_name的形式运行当前函数所属数据库,否则为当前数据库。
參数部分,由參数名和參数类型组成。
返回值类类型
函数体由多条可用的mysql语句,流程控制,变量声明等语句构成。
多条语句应该使用begin end语句块包括。
注意,一定要有return返回值语句。
删除:
Dropfunction if existsfunction_name;
查看:
Show function status like ‘partten’
Show create functionfunction_name;
改动:
Alter functionfunction_name函数选项。
样例:
Hello world!
IF语句
IF search_conditionTHEN
statement_list
[ELSEIF search_conditionTHENstatement_list]
...
[ELSE statement_list]ENDIF;
CASE语句
CASE case_value
WHEN when_valueTHENstatement_list
[WHEN when_value THENstatement_list]
...
[ELSE statement_list]
END CASE;
循环:
While
[begin_label:]WHILEsearch_conditionDO
statement_list
END WHILE [end_label];
假设须要在循环内提前终止 while循环,则须要使用标签;标签须要成对出现。
退出循环
退出整个循环leave 相当于break
退出当前循环iterate 相当于 continue
通过退出的标签决定退出哪个循环。
变量声明:
语法:
DECLARE var_name[,...] type [DEFAULT value]
这个语句被用来声明局部变量。要给变量提供一个默认值,请包括一个DEFAULT子句。值能够被指定为一个表达式,不须要为一个常数。假设没有DEFAULT子句,初始值为NULL。
使用
语序使用 set 和 select into语句为变量赋值。
注意在函数内是能够使用全局变量(用户自己定义的变量的)@XXX 全局变量不用声明 能够直接@XXX使用。
样例:获取当前班级内,最大的学号。
參考学生表
create table join_student(
stu_id int not
null auto_increment,stu_no char(10),
class_id int not
null,stu_name varchar(10),
stu_info text,
primary key (stu_id)
);
计算新增学号
drop function if existssno;
delimiter $$ #在包括有语句块时 能够更换语句结束符“;” 为“$$”
create function
sno(c_id int)returns
char(10)begin
declare last_no char(10); #声明一个局部变量 用来保存当前最大的学号, 假设没有就为null
declare class_name char(10);
select stu_no from join_student where class_id=c_id order
by stu_no desc limit
1 into last_no;if last_no is null then #假设为空代表当前班级没有学生 从1開始,获得班级名字
return concat ((select c_name from join_class where
id=c_id into class_name),'001'); #concat() 函数的作用是连接字符串。else
return concat(left(last_no,7),lpad(right(last_no,3)
+ 1, 3, '0'));end if;
#return @last_no;
end
$$
delimiter ;
随机获得学生名字。
drop function if exists sname;
delimiter $$
create function
sname() returns char(2)begin
declare first_name char(16) default '赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨';
declare last_name char(10) default '甲乙丙丁戊己庚辛壬癸';
declare full_name char(2);
set full_name=concat(substring(first_name,floor(rand()*16+1),
1), substring(last_name,floor(rand()*10+1), 1));return full_name;
end
$$
delimiter ;
========================================================================================
mysql经常使用内置函数
数值函数
Abs(X),绝对值abs(-10.9) = 10
Format(X,D),格式化千分位数值format(1234567.456, 2) =1,234,567.46
Ceil(X),向上取整ceil(10.1) = 11
Floor(X),向下取整floor (10.1) = 10
Round(X),四舍五入去整
Mod(M,N) M%N M MOD N 求余 10%3=1
Pi(),获得圆周率
Pow(M,N) M^N
Sqrt(X),算术平方根
Rand(),随机数
TRUNCATE(X,D) 截取D位小数
时间日期函数
Now(),current_timestamp(); 当前日期时间
Current_date();当前日期
current_time();当前时间
Date(‘yyyy-mm-dd HH;ii:ss’);获取日期部分
Time(‘yyyy-mm-dd HH;ii:ss’);获取时间部分
Date_format(‘yyyy-mm-dd HH;ii:ss’,’%D %y %a %d %m %b %j');
Unix_timestamp();获得unix时间戳
From_unixtime();//从时间戳获得时间
字符串函数
LENGTH(string ) //string长度,字节
CHAR_LENGTH(string) //string的字符个数
SUBSTRING(str ,position [,length ]) //从str的position開始,取length个字符
REPLACE(str ,search_str ,replace_str) //在str中用replace_str替换search_str
INSTR(string ,substring ) //返回substring首次在string中出现的位置
CONCAT(string [,... ]) //连接字串
CHARSET(str) //返回字串字符集
LCASE(string ) //转换成小写
LEFT(string ,length ) //从string2中的左边起取length个字符
LOAD_FILE(file_name) //从文件读取内容
LOCATE(substring , string [,start_position ]) //同INSTR,但可指定開始位置
LPAD(string ,length ,pad ) //反复用pad加在string开头,直到字串长度为length
LTRIM(string ) //去除前端空格
REPEAT(string ,count ) //反复count次
RPAD(string ,length ,pad) //在str后用pad补充,直到长度为length
RTRIM(string ) //去除后端空格
STRCMP(string1 ,string2 ) //逐字符比較两字串大小
流程函数:
CASE WHEN [condition]THEN result[WHEN [condition]THEN result ...][ELSE result]END 多分支
IF(expr1,expr2,expr3) 双分支。
聚合函数
Count()
Sum();
Max();
Min();
Avg();
Group_concat()
其它经常使用函数
Md5();
Default();
mysql中自己定义函数编程的更多相关文章
- 在MySql中如何定义像Java中类型的Boolean类型
在MySql中如何定义像Java中类型的Boolean类型数据..其实,mysql中 是没有直接定义成Boolean这种数据类型.它只能定义成 tinyint(1) ;如果长度是1,tinyint(1 ...
- mysql中实现行号,oracle中的rowid
mysql中实现行号需要用到MYSQL的变量,因为MySql木有rownumber. MYSQL中变量定义可以用 set @var=0 或 set @var:=0 可以用=或:=都可以,但是如果变量用 ...
- [转载]mysql中实现行号,oracle中的rowid
mysql中实现行号需要用到MYSQL的变量,因为MySql木有rownumber. MYSQL中变量定义可以用 set @var=0 或 set @var:=0 可以用=或:=都可以,但是如果变量用 ...
- mysql 函数在源码中的定义
大牛那海蓝蓝 MySQL提供了较为丰富的SQL语句,用以支持MySQL提供的主要功能.在数据库内部,MySQL又是怎么知道自己能够处理哪些对象.处理哪些事情的? 如果我们输入一条SQL语句,MySQL ...
- MySQL中变量的定义和变量的赋值使用(转)
说明:现在市面上定义变量的教程和书籍基本都放在存储过程上说明,但是存储过程上变量只能作用于begin...end块中,而普通的变量定义和使用都说的比较少,针对此类问题只能在官方文档中才能找到讲解. 前 ...
- mysql中变量的定义
mysql中的变量定义 mysql的变量分为系统变量和用户变量,mysql系统定义的变量是系统变量,用户自己定义的变量为用户变量.对于系统变量,用户只能够改变它的值不能够创建新的系统变量.对于用户变量 ...
- 转:MySQL中变量的定义和变量的赋值使用(转)
MySQL中变量的定义和变量的赋值使用(转) 说明:现在市面上定义变量的教程和书籍基本都放在存储过程上说明,但是存储过程上变量只能作用于begin...end块中,而普通的变量定义和使用都说的比较 ...
- 【转】MySql中的函数
原文:http://www.cnblogs.com/kissdodog/p/4168721.html MySQL数据库提供了很多函数包括: 数学函数: 字符串函数: 日期和时间函数: 条件判断函数: ...
- MySQL中有关TIMESTAMP和DATETIME的总结
一.MySQL中如何表示当前时间? 其实,表达方式还是蛮多的,汇总如下: CURRENT_TIMESTAMP CURRENT_TIMESTAMP() NOW() LOCALTIME LOCALTIME ...
随机推荐
- 让IE6IE7IE8支持CSS3属性的8种方法介绍
我们都知道,IE浏览器暂不支持CSS3的一些属性.国外的工程师们,不安于此现状,他们总是尽量使用一些手段使IE浏览器也能支持CSS3属性,我觉得这些都是很有意义,很有价值的工作,可以推动整个技术领域的 ...
- 上海洋码头(www.ymatou.com)急招技术人才(职位:互联网软件开发工程师,.NET网站架构师,Web前端开发工程师,高级测试工程师,产品经理)
对公司招聘职位有兴趣的童鞋可以把简历发送到zhangzhiqiang@ymatou.com,我们HR会快速给你答复. 互联网软件开发工程师 岗位职责: 1.参与洋码头各个平台(www.ymatou.c ...
- iOS App中数据加载的6种方式
我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以 ...
- [Lua]入门教程
什么是Lua Lua 是一个小巧的脚本语言.是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Rober ...
- jboss服务器配置多实例
jboss配置多实例的重要性 在开发, 测试项目的过程中, 我们经常需要在同一台主机上, 同一个服务器上配置多个运行实例.这样做有一下几点好处: 在项目开发, 调试阶段能最大限度的节省资源 某个实例出 ...
- linux命令 screen的简单使用
在远程命令行下某些长时间的操作,一旦网络出现故障,后果可能会很严重,在这种情况下可以使用screen命令来解决.screen可以创建一个session,在不小心断开以后还可以继续恢复session保存 ...
- 使用arm开发板搭建无线mesh网络(一)
由于项目的需要,老板让我使用arm开发板(友善之臂的tiny6410)搭建无线mesh网络.一般而言,无线自组织网络的网络设备都是由用户的终端设备来充当,这些终端设备既要处理用户的应用数据,比如娱乐, ...
- AS3垃圾回收整理
AS3垃圾回收整理 转自 http://bbs.wefdc.com/thread-2366-1-1.html 来源页面: http://www.adobe.com/devnet/actionscrip ...
- VMWare高可用集群在企业的应用
650) this.width=650;" border="0" src="http://img1.51cto.com/attachment/201011/21 ...
- Linux下Python获取IP地址
<lnmp一键安装包>中需要获取ip地址,有2种情况:如果服务器只有私网地址没有公网地址,这个时候获取的IP(即私网地址)不能用来判断服务器的位置,于是取其网关地址用来判断服务器在国内还是 ...