mysql的学习笔记(七)
1.自定义函数,函数可以返回任意类型的值,同样可接说这些类型的参数。
CREATE FUNCTION function_name
RETURNS
{STRING|INTER|REAL|DECIMAL}
routine_body
函数体由合法的SQL语句构成。
函数体可以是简单的SELECT或INSERT语句。
函数体如果为复合结构使用BEGIN_END语句。
复合结构可以包含声明,循环,控制结构。
2.创建函数
如果开启了bin-log, 我们就必须为我们的function指定一个参数。
我们先不指定参数,解决办法
set global log_bin_trust_function_creators=TRUE;
创建一个不带参的简单函数
CREATE FUNCTION f1() RETURNS VARCHAR(30) RETURN NOW();
现在运行,可得到现在时间
SELECT f1()
删除函数
DROP FUNCTION f1;
创建带有参数的自定义函数
CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)RETURNS FLOAT(10,2) UNSIGNEDRETURN (num1+num2)/2;
复合结构函数体的自定义函数
CREATE FUNCTION f3(name VARCHAR(20)) RETURNS INT UNSIGNED BEGIN INSERT Persons VALUES('A','B','C',name); RETURN LAST_INSERT_ID(); END$$
3.存储过程,SQL语句和控制语句的预编译集合。
增强SQL语句的功能和灵活,实现较快的执行速度,减少网络流量。
创建一个简单的不带参数存储过程
CREATE PROCEDURE sp1() SELECT VERSION();
调用我们创建的存储过程
CALL sp1()
有参数的存储过程
CREATE PROCEDURE sp2(IN uid INT UNSIGNED) BEGIN DELETE FROM tdb_goods WHERE id=uid; END
IN表示输入参数,向存储过程传递一个参数。必须在调用存储过程时指定。存储过程中修改该参数得值不能被返回。
CREATE PROCEDURE removeAndUser(IN p_id INT UNSIGNED,OUT userId INT UNSIGNED) BEGIN DELETE FROM tdb_goods WHERE id=p_id; SELECT COUNT(goods_id) FROM tdb_goods INTO userId; END
OUT该值可以在存储过程内被改变,并可返回
调用removeAndUser
CALL removeAndUser(50,@unms);
@nums是全局变量,跟DECLARE不同,DECLARE是在BEGIN和END之间有效,为局部变量。
删除存储过程
DROP PROCEDURE removeAndUser;
存储过程和自定义函数的区别
存储过程实现的功能复杂一些,而函数针对性更强。
存储过程可以返回多个值,函数只能有一个返回值。
存储过程一般独立执行,而函数可以作为其他SQL语句的组成部分来实现。
持续更新。。。
mysql的学习笔记(七)的更多相关文章
- MYSQL进阶学习笔记七:MySQL触发器的创建,应用及管理!(视频序号:进阶_16,17)
知识点八:MySQL触发器的应用(16,17) 触发器的定义: 什么是触发器: 触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据是触发执行,他比数据库本身标准的功能有更精细和更复杂的数据 ...
- MYSQL初级学习笔记七:MySQL中使用正则表达式!(视频序号:初级_44)
知识点九:MySQL中使用正则表达式(44) (1):REGEXP‘匹配方式’: (2):常用匹配方式: 模式字符 ^ 匹配字符开始的部分 $ 匹配字符串结尾的部分 . 代表字符串中的任意一个字符,包 ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- (转)Qt Model/View 学习笔记 (七)——Delegate类
Qt Model/View 学习笔记 (七) Delegate 类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...
- Mysql数据库学习笔记之数据库索引(index)
什么是索引: SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间. 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
随机推荐
- centos环境的python、scrapy部署
1 操作系统 Centos 6.5 64bit 或以上版本 2 软件环境 提示:(1)用什么软件:(2)运行环境(3)开发包. Python:Python-2.7.6.tgz Scrapy:Scrap ...
- python3.5中,import sqlite3 出现 no module named _sqlite3的解决方法
我用的centos7.2,系统自带python2.7. 我自己装了python3.5,但在导入sqlite3这个包的时候出现找不到包的错误. 下面给出解决方法. 第一种: 检查自己有没有安装sqlit ...
- 远程服务器使用phantomjs报错:phantomjs unexpectedly exited. Status code was: 127
原因是因为缺少phantomjs运行的依赖包 Ubuntu尝试: sudo apt-get install libfontconfig centos尝试: 用wget安装phantomjs依赖的lib ...
- [python3.5][PyUserInput]模拟鼠标和键盘模拟
一.PyUserInput安装 python3.5的PyMouse和PyKeyboard模块都集成到了PyUserInput模块中.在python3.5中,直接安装PyUserInput模块即可 Py ...
- Java 读书笔记 (十六) Java 继承
例: 开发动物类,其中动物分别为企鹅以及老鼠,要求如下: 企鹅: 属性(姓名,id), 方法(吃,睡,自我介绍) 老鼠: 属性(姓名,id), 方法(吃,睡,自我介绍) 企鹅类: public cla ...
- show()封装没有想象中那么简单
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 单台PC玩转NEUTRON(一:环境准备)
要开始从事云计算网络领域的技术研究.过去10年一直是从事传统网络相关的工作,新的事务在知识结构上还有一些差异,边学边写,作为个人总结,也共享给大家. 工欲善其事必先利其器,好的开发调测环境让人学习工作 ...
- 面试必问!Java 多线程中两个线程交替执行,一个输出偶数,一个输出奇数
前言 楼主今天在面经上看到这个题,挺有意思,小小的题目对多线程的考量还挺多.大部分同学都会使用 synchronized 来实现.楼主今天带来另外两种优化实现,让你面试的时候,傲视群雄! 第一种 sy ...
- python——报错ImportError:DLL load failed with error code -1073741795的解决方式
python中导入一个包,import cv2总是报错'ImportError:DLL load failed with error code -1073741795',报错形式: 网上找了好久的解决 ...
- solr6.6 导入索引数据
1.什么是core core是solr的一个索引库,可以理解为一个数据库,core可以根据需要,创建多个. 2.创建core 例如,创建一个core,名字叫mycore,就可以用一下命令: E:\so ...