码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • mysql存储过程与函数


    文章目录

    • mysql存储过程与函数
      • 存储过程的创建与调用
        • 类型一:无参数并且无返回值
        • 类型二:带OUT
        • 类型三:带IN
        • 类型四:带IN和OUT
        • 类型五:带INOUT
      • 存储函数的创建与调用
        • 对比存储函数和存储过程
      • 存储过程和函数的查看修改和删除
        • 查看
          • 使用SHOW CREATE语句查看存储过程和函数的创建信息
          • 使用SHOW STATUS语句查看存储过程和函数的状态信息
          • 从information_schema.Routines表中查看存储过程和函数的信息
        • 修改
        • 删除
      • 关于存储过程使用的争议
      • 课后练习

    mysql存储过程与函数

    存储过程的创建与调用

    准备工作:

    CREATE DATABASE dbtest15;
    USE dbtest15;
    CREATE TABLE employees
    AS SELECT * FROM atguigudb.`employees`
    CREATE TABLE departments
    AS 
    SELECT * FROM atguigudb.`departments`;
    SELECT * FROM employees;
    SELECT * FROM departments;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    类型一:无参数并且无返回值

    创建存储过程:
    在这里插入图片描述
    存储过程的调用:
    CALL select_all_data()
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    类型二:带OUT

    创建存储过程:
    在这里插入图片描述
    调用:
    CALL show_min_salary(@ms);
    查看变量值:
    SELECT @ms
    在这里插入图片描述

    类型三:带IN

    在这里插入图片描述
    调用方式一:
    CALL show_someone_salary('Abel');
    调用方式二:
    SET @empname = 'Abel';
    CALL show_someone_salary(@empname);
    在这里插入图片描述

    类型四:带IN和OUT

    创建存储过程:
    在这里插入图片描述
    调用:
    SET @empname = 'Abel'
    CALL show_someone_salary2(@empname,@empsalary);
    SELECT @empsalary
    在这里插入图片描述

    类型五:带INOUT

    创建存储过程:
    在这里插入图片描述
    在这里插入图片描述
    SET @empname = 'Abel';
    CALL show_mgr_name(@empname);
    SELECT @empname;
    在这里插入图片描述

    存储函数的创建与调用

    若在创建存储函数中报错you might want to use the less safe log_bin_trust_function_creatorsvariable有两种处理方法:

    • 方式一:加上必要的函数特性
      在这里插入图片描述

    • 方式二:
      在这里插入图片描述
      调用:
      SELECT email_by_name();
      在这里插入图片描述
      在这里插入图片描述
      SELECT email_by_id(101)
      在这里插入图片描述
      在这里插入图片描述
      SET @dept_id = 30;
      SELECT count_by_id(@dept_id)
      在这里插入图片描述

    对比存储函数和存储过程

    在这里插入图片描述
    存储函数可以放在查询语句中使用,存储过程不行。
    存储过程的功能更加强大,包括能够执行对表的操作(比如创建表,删除表等)和事务操作,这些功能是存储函数不具备的。

    存储过程和函数的查看修改和删除

    查看

    使用SHOW CREATE语句查看存储过程和函数的创建信息

    SHOW CREATE PROCEDURE show_mgr_name;
    在这里插入图片描述
    在这里插入图片描述

    使用SHOW STATUS语句查看存储过程和函数的状态信息

    SHOW PROCUDURE STATUS
    在这里插入图片描述
    SHOW PROCUDURE STATUS LIKE 'show_max_salary';
    在这里插入图片描述
    SHOW FUNCTION STATUS LIKE 'show_max_salary';
    在这里插入图片描述

    从information_schema.Routines表中查看存储过程和函数的信息

    SELECT * FROM information_schema.Routines WHERE ROUTINE_NAME='email_by_id AND ROUTINE_TYPE = 'FUNCTION';
    在这里插入图片描述

    修改

    在这里插入图片描述

    删除

    在这里插入图片描述

    关于存储过程使用的争议

    优点:
    在这里插入图片描述
    缺点:
    在这里插入图片描述
    在这里插入图片描述

    课后练习

    1.创建存储过程insert user() ,实现传入用户名和密码,插入到admin表中

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    2.创建存储过程get_phone(),实现传入女神编号,返回女神姓名和女神电话
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    3.创建存储过程date_ diff(), 实现传入两个女神生日,返回日期间隔大小
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4.创建存储过程format_ date(), 实现传入-一个日期,格式化成xx年xx月xx日并返回
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    5.创建存储过程beauty
    limit(), 根据传入的起始索引和条目数,查询女神表的记录
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    6.创建带inout模式参数的存储过程,传入a和b两个值,最终a和b都翻倍并返回。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    7.删除题目5的存储过程
    在这里插入图片描述
    8.查看题目6中存储过程的信息
    在这里插入图片描述
    1.创建函数get_ count(), 返回公司的员工个数
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    2.创建函数ename_ salary(), 根据员工姓名,返回它的工资
    在这里插入图片描述
    3.创建函数dept_ sal() , 根据部门名,返回该部门的平均工资
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    创建函数add_ float(), 实现传入两个float,返回二者之和

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    算法练习- LeetCode 152. 乘积最大子数组
    SQL注入基础---order by \ limit \ 宽字节注入
    机械硬盘,Win10系统,磁盘100%
    Go语言指针简介
    5.k8s jenkins集成k8s一键发布案例
    关于 SAP UI5 getSAPLogonLanguage is not a function 的错误消息以及 API 版本的讨论
    LeetCode Cookbook 数组习题(8)
    细胞CLE19多肽荧光成像牛血清白蛋白荧光猝灭量子点的制备
    js--js实现基础排序算法
    Logrus 日志框架——自定义日志颜色
  • 原文地址:https://blog.csdn.net/Jiaodaqiaobiluo/article/details/127706562
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号