码农知识堂 - 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,返回二者之和

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

  • 相关阅读:
    web server apache tomcat11-13-SSI How To
    Parallels Desktop 20破解版(Mac虚拟机) v20.0.0 for Mac 最新商业版(支持M系列)
    使用python压缩文件夹
    Fiddler的安装和使用
    35-SpringBoot 短信验证码接口使用
    sharding分片键 groovy公式带有非数字字符启动失败
    OpenCL编程指南-9.3使用事件完成评测、内核中的事件、OpenCL外部的事件
    Spring入门第一讲——Spring框架的快速入门
    成都回顾|聚焦 · 连接 · 协同云原生数字产业生态
    Windows右键添加用 VSCODE 打开
  • 原文地址:https://blog.csdn.net/Jiaodaqiaobiluo/article/details/127706562
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号