首页 > 数据库 >Mysql--存储过程

Mysql--存储过程

时间:2023-10-29 12:22:04浏览次数:28  
标签:存储 变量 show -- SQL session Mysql select

Mysql--存储过程

介绍

存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据
库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。
存储过程思想上很简单,就是数据库SQL语言层面的代码封装与重用。

特点

  • 封装,复用
  • 可以接收参数,也可以返回数据
  • 减少网络交互,效率提升

存储过程

image-20231029112750672

创建

# 创建
create procedure p1()
begin
    select count(*) from emp;
end ;

调用

 call p1();

查看和删除

image-20231029113722757

查看

select *from information_schema.ROUTINES where ROUTINE_SCHEMA='hrm';
# 第二种方式
show create procedure p1;

删除

drop procedure if exists p1;

命令行中执行存储过程

注意:在命令行中,执行创建存储过程的SQL时,需要通过关键字delimiter指定SQL语句的结束符。

需要设置SQL语句的结束符号

delimiter $$;
begin
    select count(*) from emp;
end $$

变量

  • 系统变量是MySQL服务器提供,不是用户定义的,属于服务器层面。分为全局变量(GLOBAL)、会话变量(SESSION)。

image-20231029114940540

查看系统变量

# 不指定默认是session级别
 show session variables ;
show global variables ;
show global variables like 'auto%';
show session variables like 'auto%';
select @@autocommit;
select @@session.autocommit;
select @@global.autocommit;

设置系统变量

set session autocommit =0;
select @@autocommit;
insert into dept values (60,'小黑','济南');
commit ;

注意:
如果没有指定SESSION/GLOBAL,默认是SESSION,会话变量。
mysql服务重新启动之后,所设置的全局参数会失效,要想不失效,可以在/etc/my.cnf中配置。

用户自定义变量

用户定义变量是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用“@变量名”使用就可以。其作用域为当前连接。

image-20231029121052767

# 用户自定义变量
# 赋值
set @myname='小黑';
# 推荐使用:=来赋值
set @myage:=10;
set @mygender :='男',@myhobby:='java';
select @mycolor:='red';
select count(*) into @mycount from emp;
# 使用
select @myname,@myage,@mygender,@myhobby;
select @mycount;
select @mycolor;

注意:
用户定义的变量无需对其进行声明或初始化,只不过获取到的值为NULL。

select @abc;

标签:存储,变量,show,--,SQL,session,Mysql,select
From: https://www.cnblogs.com/harper886/p/17795734.html

相关文章

  • springboot 断点上传、续传、秒传实现
    前言springboot断点上传、续传、秒传实现。保存方式提供本地上传(单机)和minio上传(可集群)本文主要是后端实现方案,数据库持久化采用jpa一、实现思路前端生成文件md5,根据md5检查文件块上传进度或秒传需要上传分片的文件上传分片文件分片合并后上传服务器二、数据库表对象说明:Abs......
  • 【题解】P9753 [CSP-S 2023] 消消乐(字符串哈希,DP)
    【题解】P9753[CSP-S2023]消消乐不知道考场脑子是抽了还是有病,全程都不知道在放什么屁。特别鸣谢:@dbxxx给我讲解了解法一的满分做法,并让我对哈希有了更加深刻的认识;@Daidly给我讲解了解法二。题目链接P9753[CSP-S2023]消消乐题意概述给定一个长度为\(n\)的只含小......
  • 2023-2024-1 20231308 《计算机基础与程序设计》第五周学习总结
    2023-2024-120231308《计算机基础与程序设计》第五周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第五周作业这个作业的目标<关于机器语言与汇编语言,pep9的相关应用,循坏算法的了解......
  • 匿名管道
    匿名管道常常用来实现父子进程的通信。通过pipe函数创建两个文件描述符,分别指向管道的读端和写端。从内核对于共享文件的实现来理解管道描述符表。每个进程都有它独立的描述符表,它的表项是由进程打开的文件描述符来索引的。每个打开的描述符表项指向文件表中的一个表项。文件......
  • 第九章:几何图元
    第九章:几何图元几何图元,就是构成几何物体的最小单元。这章节我们将对它们进行讨论。1.表示技术如何用数学的方式来描绘物体?是的,用函数。我们可以用一个布尔函数\(f(x,y,z)\)以隐含形式进行描绘,当传入空间中的一点的坐标时,只有当这点属于那个物体时才会返回真;还有一种叫描述方......
  • 2023-2024-1 20231403 《计算机基础与程序设计》第五周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪里(2023-2024-1计算机基础与程序设计第五周作业)这个作业的目标自学《计算机科学概论》第6章,《C语言程序设计》第4章作业正文https://www.cnblogs.com/lsrmy/p/177......
  • BLOG1029<-主席树,
    这个比splay好学多了(主席树就是把每次修改的版本保留下来,版本就是线段树曾经的一个状态。如果打暴力的话可以想把每个状态的线段树都保留下来,炸飞了。主席树单点修改的话就是发现了每次修改只改了包含这个点的层,线段树上,这是\(\logn\)级的,我们可以只创建这些新节点。每次修......
  • 关于磁盘
    解释:通过windowswin+r输入msinfo32,找到组件->存储->硬盘查看硬盘信息;图中:扇区/磁道表示每个磁道有多少个扇区;磁道/柱面,表示每个柱面有多少个磁道。字节/扇区:表示每个扇区的字节数总的磁道数=柱面总数*磁道/柱面=60801*255=15504255总的扇区数=总的磁道数*......
  • git 常用指令
    1.初始化一个项目gitinit//在当前目录创建.git版本库gitinitnew_dir//在指定目录创建.git版本库2.添加改动到暂存库,可以添加所有改动或者添加指定文件gitadd.gitaddreadme.md3.把文件提交到分支上gitcommit-m"提交说明信息"4.查看改动gitstatus......
  • Ansible部署mariadb高可用集群
    节点规划主机名IP地址master192.168.238.10node1192.168.238.11node2192.168.238.12node3192.168.238.13准备四台虚拟机,使用CentOS-7-x86_64-DVD-2009.iso镜像基础准备1,安装ansible[root@masterroot]# yuminstallepel-release-y  #......