• 第5章 数据库编程


    1、存储过程

    1.1 存储过程的基本概念

    1.1.1 概念

    • 存储过程是一组为了完成某项特定功能的SQL语句集, 其实质就是一段存储在数据库中的代码。 它可以由声明式的sql语句和过程式sql语句组成。

    1.1.2 优点(好处)

    • 可增强SQL语言的功能和灵活性
    • 良好的封装性
    • 高性能
    • 可减少网络流量
    • 可作为一种安全机制来确保数据库的安全性和数据的完整性

    1.2 创建存储过程

    1.2.1 用户定义的结束符(delimiter命令)

    • delimiter $$ ($$—>用户定义的结束符)
    • 示例:将mysql结束符修改为两个感叹号"!!" mysql>delimiter !!
    • 示例:回到";"结束 mysql>delimiter ;

    1.2.2 使用CREATE PROCEDURE语句创建存储过程

    CREATE PROCEDURE sp_name([proc_parameter[,…]]) routine_body [IN |OUT | INOUT] param_name type

    • sp_name:指定存储过程的名称,默认在当前数据库中创建
    • proc_paramete:指定存储过程的参数列表
    • routine_body:存储过程的主体部分,也称为存储过程体
    • param_name:参数名
    • type:参数的类型

    1.2.3 练习

    1.3 存储过程体

    1.3.1 使用DECLARE语句声明局部变量

    DECLARE var_name[,…] type [DEFAULT value]

    • var_name:指定局部变量的名称
    • type:指定局部变量的数据类型
    • default value:局部变量指定一个默认值
    • 示例:声明一个整型局部变量cid. declare cid int(10);

    1.3.2 使用DECLARE语句声明局部变量注意事项

    • 1)只能在存储过程体的BEGIN…END语句块中声明;
    • 2)必须在存储过程的开头处声明;
    • 3)作用范围仅限于声明它的BEGIN…END语句块;
    • 4)不同于用户变量.

    1.3.3 局部变量与用户变量的区别

    • 1)局部变量声明时,在其前面没有@符号,并且它只能 被声明它的BEGIN…END语句块中的语句所使用;
    • 2)用户变量在声明时,会在其名称前面使用@符号,同 时已声明的用户变量存在于整个会话之中。

    1.3.4 使用SET语句为局部变量赋值

    • SET var_name=expr[,var_name=expr]…
    • 示例:为局部变量cid赋予一个整数值910. set cid=910;

    1.3.5 使用SELECT…INTO语句把选定列的值直接存储到局部变量中

    1.3.6 流程控制语句

            1)条件判断语句

              •    IF…THEN …ELSE语句

                •    IF 条件 THEN 表达式1 ELSE 表达式2 END IF;

              •   CASE语句

            2)循环语句

              •    WHILE语句

              •    while 条件 表达式 END while

              •    REPEAT语句

              •    repeat 表达式 END repeat

              •    LOOP语句

              •    loop 表达式 END loop

            3)ITERATE语句

                •    用于表示退出当前循环

    1.3.7 使用DECLARE CURSOR语句创建游标

    DECLARE cursor_name CURSOR FOR select_statement

    • cursor_name:指定要创建的游标的名称

    1.3.8 使用OPEN语句打开游标

    OPEN cursor_name

    • cursor_name:指定要打开的游标

    1.3.9 使用FETCH…INTO语句读取游标

    FETCH cursor_name INTO var_name[,var_name] …

    • cursor_name:指定已打开的游标
    • var_name:指定存放数据的变量名

    1.3.10 使用CLOSE语句关闭游标

    CLOSE cursor_name

    • cursor_name:用于要关闭的游标

    1.3.11 总结

    1.4 调用存储过程

    1.4.1 使用CALL语句调用存储过程

    • sp_name:指定被调用的存储过程的名称
    • parameter:指定调用存储过程所要使用的参数

    1.4.2 练习

    1.5 删除存储过程

    1.5.1使用DROP PROCEDURE语句删除存储过程

            DROP PROCEDURE[IF EXISTS] sp_name

    • sp_name:指定要删除的存储过程的名称

    1.6 总结

    2、存储函数

    2.1 什么是存储函数

    2.2 创建存储函数

    2.2.1 使用CREATE FUNCTION语句创建存储函数

    CREATE FUNCTION sp_name([func_parameter[,…]]) RETURNS type routine_body

    • sp_name:指定存储函数的名称
    • func_parameter:指定存储函数的参数
    • RETURNS type :声明存储函数返回值的数据类型; type指定返回值的数据类型
    • routine_body :指定存储函数的主体部分,也称为存储函数体

    2.2.2 练习

    2.3 调用存储函数

    2.3.1 使用关键字SELECT调用存储函数

    • SELECT sp_name([func_parameter[, …]])

    2.4 删除存储函数

    2.4.1 使用DROP FUNCTION语句删除存储函数

    • DROP FUNCTION [IF EXISTS] sp_name
    作者:岁月星空
    出处:https://www.cnblogs.com/syxk
    ^_^如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,您的“推荐” 将是我最大的写作动力^_^。
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    Python 直接赋值、浅拷贝和深度拷贝解析
    Python __name__属性
    Java 中动态 JSON 对象的使用
    Java Spring 中使用 @Valid 进行参数校验
    NAT 网络地址转换(2016)
    深入理解 iptables 和 netfilter 架构
    RFC 1180:朴素 TCP/IP 教程(1991)
    云计算时代携程的网络架构变迁(2019)
    编程语言中的 6 种内存模型(2016)
    如何基于 Cilium 和 eBPF 打造可感知微服务的 Linux(2019)
  • 原文地址:https://www.cnblogs.com/SyXk/p/14083753.html
Copyright © 2020-2023  润新知