mysql中的函数与存储过程
mysql中的函数: 1 mysql下创建函数: 1.1 语法: delimiter $$ -- 设置分隔符,默认是; 设置成其他符号,让编译器知道我们函数编写的结束,此处设置成$$ create function 函数名(参数列表) returns 返回值类型 begin 函数语句 end $$ -- 表示结束 delimiter ; -- 结束符修改成默认 例如:编写一个返回a+b的函数 delimiter $$ create function get_sum(a int , b int ) returns int begin declare res int default 0; set res = a + b; return res; end $$ delimiter ; -- 函数中不支持sql语句,唯一可用放入函数的sql就是 select... into 变量。在函数当中把查询结果赋值给变量。 1.2 函数语句: 1.2.1 定义一个变量: declare 变量名 类型 default 默认值 例如: declare x varchar(100); 1.2.2 修改变量值: set 变量名 = 值 例如: set x = "abc"; 1.2.3 判断语法: if 条件1 then 语句1; elif 条件2 then 语句2; else 语句; end if 1.2.4 循环语法: while 条件 do 语句; end while; -- leave 可以退出循环 相当于break -- iterate 结束本次循环开始下一次循环 相当于continue 1.2.5 实例:一个输出1到1000之间偶数的函数odd delimiter $$ -- 设置结束标识符 create function odd() returns varchar(300) begin declare i int default 2; declare res varchar(300) default ""; while i <= 100 do set res = concat(res ," ", i); -- 拼接字符串 set i = i + 2; end while; return res; end; $$ delimiter ; 1.3 用户变量/会话变量: 只有当前连接用户有效,其他连接用户我发访问。 -- 使用@表示声明用户变量。 set @变量名 = 值 set @ age = 20; -- 查看当前用户变量。 select @变量名; select @age; -- 为用户变量赋值。 select @age := max(age) from students; 1.4 系统变量: 任何用户都可以访问。 使用@@来标识系统变量。 使用select来查看系统变量 -- 查看所有的系统变量 show variables; -- 查看系统变量: select @@变量名; select @@max_connections; -- 当前用户/会话中修改系统变量: set 变量名 = 值; set max_connections = 1000; 2 查看函数: 所有函数(和存储过程)存储在mysql数据库下的proc表中 查看python数据库中的函数: select db , name , type from mysql.proc where db="python" 3 调用函数: select 函数名(传入参数); 比如 select get_sum(4,6); 4 删除函数: drop function 函数名称; 例如: drop function get_sum; mysql中的存储过程: 存储过程是多条sql语句的集合,是一种批处理过程。 1 存储过程的创建: 1.1 语法: delimiter // -- 更换终止分隔符 create procedure 存储过程名称(参数列表) begin sql语句; end // delimiter ; -- 改回分隔符关键字 -- sql语句结尾的;会让创建存储过程语句结束 -- 所以我们自己更改一个终止分隔符, 也可以指定其他符号。 实例:查询学生信息的存储过程 delimiter // create procedure pro_stu() begin select * from students; end // delimiter ; 1.2 参数与返回值:存储过程没有返回值,如果需要向外传递数据,可以设置参数。 参数有三种类型: in 向存储过程内部传递数据 默认就是in类型 out 存储过程向外传递数据 可以代替返回值的功能 inout 可以双向传递数据 例如: 查询指定id的学生信息 并且在外部想要获取学生总人数 delimiter // create procedure get_stu( in id int , out num int ) begin select * from students where students.id = id; select count(*) from students into num; end // delimiter ; 之后调用的借助一个用户变量: call get_stu(1,@num); 之后总人数赋值给了@num 用户变量: select @num; 2 查看存储过程: 所有存储过程和函数都放在mysql数据库下的proc表中 desc mysql.proc\G 主要字段: name 名称 type 类型 存储过程或者函数 body 正文内容 db 属于那个数据库 查看python数据库的所有存储过程 select db , name , type , body from mysql.proc where db = "python" ; 3 调用存储过程: call 存储过程名(参数列表); 例如: call proc_stu() ; 4 删除存储过程: drop procedure 存储过程名称; 例如: drop procedure proc_stu; 存储过程和函数的区别 相同点 存储过程和函数都是为了可重复的执行操作数据库的 sql 语句的集合. 存储过程和函数都是一次编译,就会被缓存起来,下次使用就直接命中缓存中已经编译好的 sql, 不需要重复编译 减少网络交互,减少网络访问流量 不同点 标识符不同,函数的标识符是 function, 过程:procedure 函数中有返回值,且必须有返回值,而过程没有返回值,但是可以通过设置参数类型(in,out)来实现多个参数或者返回值 函数使用 select 调用,存储过程需要使用 call 调用 select 语句可以在存储过中调用,但是除了 select ... into 之外的 select 语句都不能再函数中调用 通过 in out 参数,过程相关函数更加灵活,可以返回多个结果 在实际开发中根据个人喜好选择使用函数或者存储过程
转载于:https://www.cnblogs.com/Lin-Yi/p/7360779.html
mysql中的函数与存储过程相关推荐
- mysql中常用函数与存储过程的创建
mysql中常用函数与存储过程的创建 常用函数汇总 数学函数 字符串函数 日期和时间函数 条件判断函数 系统函数 加密函数 其他函数 自定义函数 自定义变量的声明和赋值 基本语法 实例 存储过程 事务 ...
- java 不能执行mysql存储过程_java无法执行mysql中的函数及存储过程的.sql备份文件...
需求:用java程序执行[包含数据&结构&函数&存储过程]的.sql备份文件 问题记录: 1.在执行完insert类型的语句后,中文内容会显示乱码. 解决:将mysql参数中c ...
- mysql数据库中count的作用_详解 MySQL中count函数的正确使用方法
1. 描述 在MySQL中,当我们需要获取某张表中的总行数时,一般会选择使用下面的语句 select count(*) from table; 其实count函数中除了*还可以放其他参数,比如常数.主 ...
- mysql中concat函数的使用相关总结
concat(str1,str2) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. mysql> select concat('11','22','33') ...
- Oracle中concat与||区别(以及与mysql中concat函数区别)
Oracle中concat使用以及与||区别 CONCAT只能连接两个字符串 The syntax for the concat function is: concat( string1, strin ...
- mysql中合并函数_MYSQL分组合并函数
MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔 ...
- mysql中find_in_set()函数的使用及in()用法详解
From: http://www.manongjc.com/article/2710.html MySQL手册中find_in_set函数的语法解释: FIND_IN_SET(str,strlist) ...
- MySQL中concat函数(连接字符串)
MySQL中concat函数(连接字符串) MySQL中concat函数 使用方法: concat(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 ...
- mysql必会语法_sql语法:sql必读必会(二)mysql中的函数大全
AVG 函数 作用:AVG 函数返回数值列的平均值.NULL 值不包括在计算中 语法:SELECT AVG(列) FROM 表 求id平均值(实在没字段了,就是意思意思) id大于平均值的记录 COU ...
- MySQL中时间函数NOW()和SYSDATE()的区别
mysql中日期函数还是比较常用的.主要有NOW()和SYSDATE()两种,虽然都表示当前时间,但使用上有一点点区别. NOW()取的是语句开始执行的时间,SYSDATE()取的是动态的实时时间. ...
最新文章
- 认识计算机ppt课件游戏,认识计算机)ppt课件
- Yann Lecun最新演讲:机器怎样进行有效学习?
- 经典的代码风格-来自微软
- 可怕的北京大学出版社--javascript也叫java
- 欧姆龙plc的IO存储器区详解
- 电商后台管理系统项目 一
- Endnote插入Word参考文献国标格式
- 慕课软件工程(第五章.初始模块结构图的设计)
- 那些年,我开发过的软件
- VS2013编译libjpeg库
- 408计算机网络学习笔记——应用层
- Java并发编程(十六):CyclicBarrier源码分析
- c语言汉诺塔实验报告,C语言汉诺塔的简单了解
- 使用WGET参数介绍大全
- 安装配有NVIDIA GRID K2服务器系统不能正常安装和其他的GPU卡如K20x不能正常安装原厂驱动
- 免费开源一套充电桩物联网平台 含源码 V2.3.2
- Linux第二周笔记
- html创建字母头像,JavaScript动态生成文字头像
- JAVA-JDBC: (2) 数据库的粗略的CRUD及SQL注入问题
- fiddle弱网测试
热门文章
- win 10 系统激活
- 在Eclipse或工作空间中 ,复制或修改项目后,把项目部署后发现还是原来的项目名称...
- 算法复习——带修改莫队(bzoj2453)
- 理解ASP.NET MVC中的ActionResult
- 《剑指offer》青蛙跳台阶
- [转]什么是lib文件,lib和dll的关系如何
- [转]一阶自回归模型和二阶自回归模型
- SignalR 服务器系统配置要求
- 全网最详细的Windows里下载与安装Sublime Text *(图文详解)
- 攻克python3-面向对象