MySQL之运算符与函数、自定义函数
一自定义函数简介
(1)自定义函数定义
用户自定义函数(user-defined function,UDF)是一种对MySQL数据库扩展的途径,其用法与内置函数相同。
(2)自定义函数的两个必要条件
1)参数:可以有零个或多个。
2)返回值:只能有一个返回值。
使用自定义函数的注意事项
1)所有函数都有返回值,但不一定都有参数。
2)函数的参数与返回值之间没有必然的内在联系。
3)函数可以返回任意类型的值,同样可以接收这些类型的参数。
(3)创建自定义函数
创建自定义函数的语法结构:
CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body;
(4)函数体
1)函数体由合法的SQL语句构成。
2)函数体可以是简单的SELECT或INSERT语句。
3)函数体如果为复合结构则使用BRGIN...END语句。
4)复合结构可以包含声明,循环,控制结构。
二创建不带参数的自定义函数
实例:
查看当前日期时间和格式化当前时间
SELECT NOW();
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒');
对于习惯使用日期时间的来说,我们并不习惯上面的第一个,第二个格式化后的时间我们比较认同。每次都去格
式化日期时间会比较麻烦,因此我们考虑把这个过程自定义为一个函数。
将上面的过程封装为一个函数
CREATE FUNCTION f1() RETURNS VARCHAR(30) RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H
点:%i分:%s秒');
调用函数
SELECT f1();
三创建带有参数的自定义函数
自定义一个求两个数的平均数的函数,要求结果保留两位小数。
CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED) RETURNS FLOAT(10,2)
UNSIGNED RETURN (num1+num2)/2;
调用函数
SELECT f2(10,15);
四创建具有复合结构函数体的自定义函数
自定义一个返回最后插入数据表的记录并且返回最后一个插入的ID号的函数
USE t1;
SELECT * FROM test;
CREATE FUNCTION adduser(username VARCHAR(20)) RETURNS INT UNSIGNED BEGIN INSERT
test(username) VALUES(username); RETURN LAST_INSERT_ID(); END;
上面报错的原因是MySQL语句结束符号报错,我们平常一般的MySQL语句都是以;结束,但是复合结构中包括插
入语句,查询语句等子SQL语句,而每个语句都会以;结束,因此MySQL数据库的客户端只会识别第一个;号,后面的
内容不再读取,因此造成语句出错。
我们做出以下修改:
修改语句的结束符号
DELIMITER //
创建自定义函数
CREATE FUNCTION adduser(username VARCHAR(20)) RETURNS INT UNSIGNED BEGIN INSERT
test(username) VALUES(username); RETURN LAST_INSERT_ID(); END//
DELIMITER ;
调用函数
SELECT adduser('Lee');
SELECT * FROM test;
五自定义函数的查找
自定义函数的查找
SHOW FUNCTION STATUS\G;
六删除函数
删除函数的语法结构:
DROP FUNCTION [IF EXISTS] function_name;
MySQL之运算符与函数、自定义函数的更多相关文章
- MySQL存储过程、触发器、自定义函数、事务
1.存储过程 MySQL中存储过程的参数中有IN.OUT.INOUT类型,但是函数的参数只能是IN类型的. “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参 ...
- 【mysql的编程专题⑤】自定义函数
用户自定义函数(user-defined function,UDF) 是一种对mysql的扩展途径,其用法与内置函数相同 创建自定义函数 语法 create function function_nam ...
- 数据库之mysql篇(6)—— mysql常用函数函数/自定义函数
常用函数 运算函数 我相信你都能看懂,所以以上的不再做过多解释 然后还有个,前面漏掉的between and: 意指10是否在0到20之间,如果是返回1,否则返回0 日期函数 这个要稍微注意一下参数, ...
- MySQL全面瓦解18:自定义函数
定义 我们之前学习了MySQL的内置函数,非常丰富,满足了我们对数据操作的大部分需求. 但是如果有一些复杂的业务逻辑在数据库层面就可以完成,无需在程序层面完成的时候,这时候就可以写成MySQL自定义函 ...
- Python学习(五)函数 —— 自定义函数
Python 自定义函数 函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print()等.也可以创建用户自定义函数. 函数定义 函数定义的简单规则: 函数代码块以de ...
- MySQL的存储函数(自定义函数)的定义和使用方法
存储函数 什么是存储函数: 封装一段sql代码,完成一种特定的功能,返回结果. 存储函数的语法: create function 函数([函数参数[,….]]) Returns 返回类型 Begin ...
- 给MySQL增加mysql-udf-http和mysql-udf-json自定义函数,让MySQL有调用http接口和查询直接回JSON的能力
1.安装mysql-udf-httpyum install -y libcurl*下载地址:http://pan.baidu.com/s/1nuYZqR3tar zxvf mysql-udf-http ...
- mysql 报错之创建自定义函数
I experienced this error while trying to alter one of my stored procedures remotely on a master serv ...
- python【内置函数&自定义函数】
=========================random函数:=======================
- Mysql - 存储过程/自定义函数
在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...
随机推荐
- Ninject之旅之五:Ninject XML配置
摘要 使用XML配置,需要添加Ninject XML扩展的引用.下一步是添加一个或多个包含类型注册的XML文件.记得这些文件应该跟应用程序一起发布.因此不要忘记将XML文件的属性设置成“Copy if ...
- 你是否经常忘记网站上的各种密码?分享个密码管理软件LastPass
现在网络那么发达,我们上网的每个人势必会在各个网站上登陆,那势必会有一堆密码需要管理,那怎么能记住那么多网站的密码呢?我之前的做法是设置几个常用的密码,好多不重要的网站用一个,重要的网站用一个,然 ...
- javascript运行模式:并发模型 与Event Loop
看了阮一峰老师的JavaScript 运行机制详解:再谈Event Loop和[朴灵评注]的文章,查阅网上相关资料,把自己对javascript运行模式和EVENT loop的理解整理下,不一定对,日 ...
- MFC创建文件和文件夹
1.使用PathIsDirectory判断文件夹是否存在需要引用下面头文件: #include "shlwapi.h"#pragma comment(lib,"shlwa ...
- Nginx ssl证书部署
查看当前安装的OpenSSL版本所支持的密码列表,可以使用下列命令:openssl ciphers 苹果ATS检测:https://www.qcloud.com/product/ssl 刚开始&quo ...
- [ 转 ] scrapy 中解决 xpath 中的中文编码问题
1.问题描述: 实现定位<h2>品牌</h2>节点 brand_tag = sel.xpath("//h2[text()= '品牌']") 报错:Value ...
- CentOS6.5上源码安装MongoDB3.2.1
1.环境准备: mkdir /home/mongodb #创建MongoDB程序存放目录 mkdir /data/mongodata -p #创建数据存放目录 mkdir /data/log/mong ...
- Sql Server中不常用的表运算符之APPLY(2)
在Sql Server中不常用的表运算符之APPLY(1)中提到,SQL2005中新支持的APPLY的特性:1.可以直接将表表达式(表值函数或者子查询)作为APPLY语句的右表连接左表.2.由于使用A ...
- 使用ping钥匙临时开启SSH:22端口,实现远程安全SSH登录管理就这么简单
设置防火墙策略时,关于SSH:22访问权限,我们常常会设置服务器只接受某个固定IP(如公司IP)访问,但是当我们出差或在家情况需要登录服务器怎么办呢? 常用两种解决方案:1.通过VPN操作登录主机: ...
- U-Mail邮件网关提醒:谨防像素图片钓鱼窃密
垃圾邮件和病毒的日益猖獗,既因为邮件在商务往来中扮演着越来越重要的角色,也因为犯罪成本低收益高.近年来,不少为非作歹者致力于通过邮件诈骗牟利,想出了种种奇思妙计,导致相关服务商在安全领域逐年加大研发投 ...