zoukankan      html  css  js  c++  java
  • MySQL存储过程与函数

    存储过程

    存储过程的概念

    存储过程(Stored Procedure)是在大型数据库中,一组为了完成特定功能的SQL语句集,它存储在数据库中.
    一次编译永久有效.用户通过指定的存储过程的名字,并给出参数来执行它.数据库利用存储过程能够提升效率.
    总之:存储过程就是一组经过编译号的sql语句集合.它能够提高sql语句的重复利用和效率.
    存储过程一般用在对数据的增删改操作.

    存储过程的创建

    创建语句:

    delimiter 分隔标记符
    create procedure 存储过程名称(参数列表)
    begin
    sql语句1;
    sql语句2;
    ...
    sql 语句n
    end 分隔标记符
    delimiter ;

    创建存储过程的注意事项:

    • 1.参数列表包含三个部分:参数模式, 参数名称, 参数类型.其中参数模式有:in, out, inout三种.in:代表该参数可以接收输入数据(类似java中方法的形参).out:代表该参数可以返回输出结果(类似java中方法的返回值).inout:代表该参数既能接收数据,又可以返回输出结果.
    • 2.如果存储过程的sql语句仅有一句,那么begin和end关键字可以省略.
    • 3.因为存储过程体中的sql语句必须要加分号结尾,所有为了不产生结束语句的歧义,可以使用关键字:delimiter用来重新定义mysql的分隔符.

    存储过程的调用

    语句:

    call 存储过程名称(实参);

    例1:向emp表中修改某员工的工资

    例2:计算两个int变量之和

    例3:交换两个int变量的值

    删除存储过程

    语句:

    drop procedure 存储过程名称;

    查询存储过程

    语句:

    show create procedure 存储过程名称;

    函数与流程控制语句

    函数

    函数的概念

    一组预先编译好的sql语句的集合.可以提高代码的重用性,减少编译次数,提高了效率.
    函数和存储过程的区别:存储过程可以有0个或多个返回结果,适合做增删改.函数有且仅有一个返回值,适合做处理数据后返回一个结果.
    MySQL提供了很多函数供我们使用,使用过程见第四章的常用函数部分.

    创建函数

    有时候MySQL提供的函数不够我们使用,需要我们自定义函数,自定义函数的语句如下:

    delimiter 分隔符
    create function 函数名称(参数列表) returns 返回值类型
    begin
    sql语句1;
    sql语句2;
    ...
    sql语句n;
    end 分隔符
    delimiter ;

    创建函数的注意事项:

    • 1.参数列表包含两部分:参数名称和参数类型
    • 2.函数体必须要有return语句.
    • 3.函数体中只有一条sql,begin和end关键字可以不需要写
    • 4.delimiter定义分隔符
    • 5.函数一般用来做查询使用,insert, delete, update不要出现在函数体中.

    例1:创建一个函数,该函数用来求两个整数相乘的结果

    查看函数

    语句:

    show create 函数名称;

    删除函数

    语句:

    drop function 函数名称;

    流程控制语句

    在函数(包括存储过程)中需要书写函数体,那么有时就要有一定的流程控制,那么就需要流程控制的语句.流程总共有:顺序结构, 选择结构, 循环结构.

    选择结构

    if elseif else语句:能够实现多选一
    语句:

    if 条件表达式1 then 语句1;
    elseif 条件表达式2 then 语句2;
    ...
    else 语句n;
    end if;

    注意:该语句只能出现在begin...end中

    循环结构

    while语句:实现循环
    语句:

    while 条件表达式 do
    循环体语句...
    end while;

    两个关键字:
    iterate:类似于continue,结束本次循环,继续下次循环
    leave:类似于break,结束循环.

    频频回头的人注定走不了远路。
  • 相关阅读:
    Remove Duplicates from Sorted List
    Reverse Linked List II
    Remove Duplicates from Sorted List II
    Partition List
    iterator指针指向的元素
    Debug Assertion Failed! (VS)
    创建触发器,动作发送邮件到邮箱
    创建独立的监控模板
    zabbix添加被监控主机,内置的监控项,查看监控数据
    Oracle的sql脚本--->>Mysql的sql脚本
  • 原文地址:https://www.cnblogs.com/CHENFANgY/p/13085227.html
Copyright © 2011-2022 走看看