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中的函数与存储过程相关推荐

  1. mysql中常用函数与存储过程的创建

    mysql中常用函数与存储过程的创建 常用函数汇总 数学函数 字符串函数 日期和时间函数 条件判断函数 系统函数 加密函数 其他函数 自定义函数 自定义变量的声明和赋值 基本语法 实例 存储过程 事务 ...

  2. java 不能执行mysql存储过程_java无法执行mysql中的函数及存储过程的.sql备份文件...

    需求:用java程序执行[包含数据&结构&函数&存储过程]的.sql备份文件 问题记录: 1.在执行完insert类型的语句后,中文内容会显示乱码. 解决:将mysql参数中c ...

  3. mysql数据库中count的作用_详解 MySQL中count函数的正确使用方法

    1. 描述 在MySQL中,当我们需要获取某张表中的总行数时,一般会选择使用下面的语句 select count(*) from table; 其实count函数中除了*还可以放其他参数,比如常数.主 ...

  4. mysql中concat函数的使用相关总结

    concat(str1,str2) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. mysql> select concat('11','22','33') ...

  5. Oracle中concat与||区别(以及与mysql中concat函数区别)

    Oracle中concat使用以及与||区别 CONCAT只能连接两个字符串 The syntax for the concat function is: concat( string1, strin ...

  6. mysql中合并函数_MYSQL分组合并函数

    MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔 ...

  7. mysql中find_in_set()函数的使用及in()用法详解

    From: http://www.manongjc.com/article/2710.html MySQL手册中find_in_set函数的语法解释: FIND_IN_SET(str,strlist) ...

  8. MySQL中concat函数(连接字符串)

    MySQL中concat函数(连接字符串) MySQL中concat函数 使用方法: concat(str1,str2,-) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 ...

  9. mysql必会语法_sql语法:sql必读必会(二)mysql中的函数大全

    AVG 函数 作用:AVG 函数返回数值列的平均值.NULL 值不包括在计算中 语法:SELECT AVG(列) FROM 表 求id平均值(实在没字段了,就是意思意思) id大于平均值的记录 COU ...

  10. MySQL中时间函数NOW()和SYSDATE()的区别

    mysql中日期函数还是比较常用的.主要有NOW()和SYSDATE()两种,虽然都表示当前时间,但使用上有一点点区别. NOW()取的是语句开始执行的时间,SYSDATE()取的是动态的实时时间. ...

最新文章

  1. 认识计算机ppt课件游戏,认识计算机)ppt课件
  2. Yann Lecun最新演讲:机器怎样进行有效学习?
  3. 经典的代码风格-来自微软
  4. 可怕的北京大学出版社--javascript也叫java
  5. 欧姆龙plc的IO存储器区详解
  6. 电商后台管理系统项目 一
  7. Endnote插入Word参考文献国标格式
  8. 慕课软件工程(第五章.初始模块结构图的设计)
  9. 那些年,我开发过的软件
  10. VS2013编译libjpeg库
  11. 408计算机网络学习笔记——应用层
  12. Java并发编程(十六):CyclicBarrier源码分析
  13. c语言汉诺塔实验报告,C语言汉诺塔的简单了解
  14. 使用WGET参数介绍大全
  15. 安装配有NVIDIA GRID K2服务器系统不能正常安装和其他的GPU卡如K20x不能正常安装原厂驱动
  16. 免费开源一套充电桩物联网平台 含源码 V2.3.2
  17. Linux第二周笔记
  18. html创建字母头像,JavaScript动态生成文字头像
  19. JAVA-JDBC: (2) 数据库的粗略的CRUD及SQL注入问题
  20. fiddle弱网测试

热门文章

  1. win 10 系统激活
  2. 在Eclipse或工作空间中 ,复制或修改项目后,把项目部署后发现还是原来的项目名称...
  3. 算法复习——带修改莫队(bzoj2453)
  4. 理解ASP.NET MVC中的ActionResult
  5. 《剑指offer》青蛙跳台阶
  6. [转]什么是lib文件,lib和dll的关系如何
  7. [转]一阶自回归模型和二阶自回归模型
  8. SignalR 服务器系统配置要求
  9. 全网最详细的Windows里下载与安装Sublime Text *(图文详解)
  10. 攻克python3-面向对象