mysql笔记:17. 数据库编程

文章目录

  • 一、存储过程
    • 1. 创建存储过程
    • 2. 查看存储过程
    • 3. 调用存储过程
    • 4. 修改存储过程
    • 5. 删除存储过程
  • 二、函数
    • 1. 创建自定义函数
    • 2. 查看自定义函数
    • 3. 调用自定义函数
    • 4. 删除自定义函数

为了提高SQL语句的重用性,MySQL可以将频繁使用的业务逻辑封装成程序进行存储,这类程序包括存储过程、函数、触发器等。

一、存储过程

存储过程是一组可以完成特定功能的SQL语句集合,它可以将常用或复杂操作封装成一个代码块存储在数据库服务器中,以便重复使用,大大减少数据库开发人员的工作量。

1. 创建存储过程

基本语法:

CREATE PROCEDURE pro_name([[IN | OUT | INOUT ] 参数名称 参数类型]) [characteristic ... ] routine_body

MySQL默认的语句结束符号为分号(;),而在创建存储过程时,存储过程体可能包含多条SQL语句,所以为避免分号与存储过程中SQL语句的结束符相冲突,需要使用DELIMITER改变存储过程的结束符。存储过程定义完毕后再恢复默认结束符。

mysql> DELIMITER //

2. 查看存储过程

存储过程创建之后,可以使用SHOW PROCEDURE STATUS语句和SHOW CREATE PROCEDURE语句分别显示存储过程的状态信息和创建信息,也可以在数据库information_schema的Routines数据表中查询。

mysql> SHOW PROCEDURE STATUS [LIKE 'pattern'];
mysql> SHOW CREATE PROCEDURE pro_name;

3. 调用存储过程

基本语法:

mysql> CALL [dbname.]pro_name([实参列表]);

4. 修改存储过程

基本语法:

mysql> ALTER PROCEDURE pro_name[characteristic ... ];

只能修改存储过程的特征值,不能修改存储过程的参数

5. 删除存储过程

基本语法:

mysql> DROP PROCEDURE [IF EXISTS] pro_name;

二、函数

MySQL支持函数的使用,其中的函数分为两种:内置函数、自定义函数。自定义函数和内置函数性质相同,都用于实现某种功能。

1. 创建自定义函数

自定义函数和存储过程类似,都是存储在数据库中的一段SQL语句集合;区别在于存储过程没有直接返回值,主要用于执行操作,而自定义函数可以通过RETURN语句返回数据。创建自定义函数的基本语法:

CREATE FUNCTION func_name([func_parameter[...]]) RETURNS type [characteristic ... ] Routine_body

2. 查看自定义函数

自定义函数创建之后,可以使用SHOW FUNCTION STATUS语句和SHOW CREATE FUNCTION语句分别显示存储过程的状态信息和创建信息,也可以在数据库information_schema的Routines数据表中查询。

mysql> SHOW FUNCTION STATUS [LIKE 'pattern'];
mysql> SHOW CREATE FUNCTION func_name;

从语法来看,查看存储过程和自定义函数相似,只是使用的关键字不同。

3. 调用自定义函数

自定义函数的调用和MySQL内置函数的调用类似,基本语法:

mysql> SELECT func_name(parameters) [, func_name(parameters) ... ];

4. 删除自定义函数

mysql> DROP FUNCTION [IF EXISTS] func_name;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/742211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java后端八股文之java基础

文章目录 0.Java 中有 8 种基本数据类型1. 为什么浮点数运算会丢失精度?如何解决?2. 面向对象的三大特征2.1 封装2.2 继承2.3 多态 3. 深拷贝和浅拷贝的区别?什么是引用拷贝?4. equals方法与“”方法4.1 4.2 equals方法 5.hashcod…

第十一篇 - 应用于市场营销视频场景中的人工智能和机器学习技术 – Video --- 我为什么要翻译介绍美国人工智能科技巨头IAB公司(1)

IAB平台,使命和功能 IAB成立于1996年,总部位于纽约市。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司,互动广告局(IAB- the Interactive Advertising Bureau)自1996年成立以来,先后为700多家媒体…

Vue2和vue3的区别(前端面试常见问题)

1.Api的变化:vue3使用组合式Api(compostion Api)和Vue2是选项式Api(options Api)。选项式Api具有data ,watch,methods,computed,一个个的模块。如果代码过多可读性会很差…

【Linux】基于Kubernetes部署最新版AWX

目录 前言一、安装1.安装K3S2.提前导入redis、PG镜像3.安装AWX4.启动web页面5.卸载干净 二、使用1.登陆密码2.中英文切换3.查看当前版本 三、总结 前言 我们都听过Ansible,它本质上是一个进行了封装的Shell,优点在于它是去中心化的工具,可以…

android 简单快速 自定义dialog(简单好用,不需要设置样式)

1.MyDialog代码: public class MyDialog{private Activity activity;private ViewGroup contentView;private View view;public MyDialog(Activity activity) {this.activityactivity;contentView activity.findViewById(android.R.id.content);viewLayoutInflate…

RabbitMQ学习总结-消息的可靠性

保证MQ消息的可靠性,主要从三个方面:发送者确认可靠性,MQ确认可靠性,消费者确认可靠性。 1.发送者可靠性:主要依赖于发送者重试机制,发送者确认机制; 发送者重试机制,其实就是配置…

安泰高压放大器应用领域包括哪些方面

高压放大器是一种关键的电子器件,广泛应用于多个领域,以放大高电压信号,满足不同应用的需求。这些放大器能够处理高电压信号,同时保持信号质量和可靠性。下面安泰电子将为大家介绍高压放大器的各种应用领域,以便更好地…

Django 简介

Django 简介 基本介绍 Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。 Django 是一个高级的 Python Web 框架,用于快速开发可维护和可扩展的 Web 应用程序。 使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松…

2014

1,写出计算Ack(m,n)的递归算法 #include<iostream> using namespace std; int A(int m,int n){if(m0){return n1;}else if(m>0&&n0){return A(m-1,1);}else{return A(m-1,A(m,n-1));} }int main(){int m,n;cout<<"please input two number"&l…

数字人基础 | 3D手部参数化模型2017-2023

楔子: 2017年年底的泰国曼谷, SIGGRAPH Asia会议上, 来自马普所的 Javier Romero, Dimitrios Tzionas(两人都是 Michael J. Black的学生)发布了事实性的手部参数化模型标准: MANO [1]。 MANO的诞生意味着 Michael J. Black团队在继人体参数化模型 SMPL后, 事实性的将能够表达人…

拓展欧几里得算法

一、拓展欧几里得算法 1.1 算法简析 根据裴蜀定理&#xff0c;对任意 a a a 和 b b b&#xff0c;一定存在 x x x 和 y y y&#xff0c;使 a x b y gcd ( a , b ) ax by \text{gcd}(a, b) axbygcd(a,b)。拓展欧几里得算法不仅能求出 a a a 和 b b b 的最大公约数&…

java实现计算ROUGE-L指标(一)

ROUGE (Recall-Oriented Understudy for Gisting Evaluation) 是用于评估自动文摘或机器翻译的一种评估方法&#xff0c;其中的ROUGE-L指标是基于最长公共子序列&#xff08;Longest Common Subsequence&#xff0c;LCS&#xff09;来计算的 我们做AI问答系统&#xff0c;需要一…

访问学者申请记|美国首所翻译博士点

N老师出国访学的目的一方面是开拓眼界&#xff0c;另一方面也是为完成翻译方向的博士论文创造更好的条件。最终我们获得美国纽约州立大学宾汉姆顿分校的邀请函&#xff0c;该校的“翻译研究和教学项目”&#xff08;TRIP&#xff09;是美国高校设立的第一个翻译博士学位项目&am…

JavaScript进阶3之参数按值传递、call,apply,bind和new的实现、继承的多种方式

JavaScript基础 参数按值传递按值传递共享传递 call、apply、bind和new的实现this软绑定硬绑定 call的实现第一步第二步第三步 apply的实现bind的实现返回函数的模拟实现传参的模拟实现构造函数效果的模拟实现构造函数效果的优化实现 new的实现初步实现 继承的多种方式&优缺…

(学习日记)2024.03.09:UCOSIII第十一节:就绪列表

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

计算机网络 —— 运输层

运输层 5.1 运输层概述 运输层的主要任务是&#xff0c;如何为运行在不同主机上的应用进程提供直接的通信服务。运输层协议又称为端到端协议。 根据应用需求的不同&#xff0c;因特网的运输层为应用层提供了两种不同的运输协议&#xff0c;即面向连接的TCP和无连接的UDP 5.2…

金融需要多样性,量化需要C++!通过本文,你可以知道:1、为什么是C++

通过本文&#xff0c;你可以知道&#xff1a; 1、为什么是C 2、Python的用武之地 3、量化C岗位薪酬水平 C VS Python 量化交易系统开发语言主要用C&#xff0c;也有人用Python。 但是从经验看&#xff0c;用C开发的量化交易系统能够让在系统中程序运行的速度更快。 量化交易…

Maya为模型添加细分数

文章目录 方法1 通道盒操作注意 方法2 添加分段操作注意 方法3 平滑操作 方法1 通道盒 操作 选中物体&#xff0c;选择通道盒/输入/点一下模型的名字/细分数&#xff0c;分别为长宽高添加细分 这相当于修改模型的底层数据&#xff0c;不会平滑模型&#xff0c;只会进行细分 …

瑞熙贝通实验室物联网管理平台新升级|支持远程开门视频监控与电源控制以及环境监测

瑞熙贝通实验室智能物联网管控平台&#xff1a;利用“互联网与物联网技术”有机融合&#xff0c;对实验室的用电安全监测、实验室环境异常监测&#xff08;颗粒物监测、明火监测、可燃气体、烟雾监测、温湿度传感器、红外人体感应&#xff09;、实验室人员安全准入、万物互联等…

什么是全局解释器锁(GIL)?它如何影响Python的多线程性能?

什么是全局解释器锁&#xff08;GIL&#xff09;&#xff1f;它如何影响Python的多线程性能&#xff1f; 全局解释器锁&#xff08;GIL&#xff0c;Global Interpreter Lock&#xff09;是计算机程序设计语言解释器用于同步线程的工具&#xff0c;确保同一时间内仅有一个线程…