首页 > 数据库 >MySQL - [08] 存储过程

MySQL - [08] 存储过程

时间:2024-05-28 10:44:11浏览次数:29  
标签:存储 变量 -- 08 global session MySQL 过程

题记部分

 

 

一、什么是存储过程

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

  存储过程思想上很简单,就是数据库SQL语言层面的代码封装与重用。

  存储过程的特点:① 封装、复用;② 可以接收参数,也可以返回数据;③ 减少网络交互,效率提升。

 

 

二、存储过程的CURD

(1)存储过程创建语句语法结构

CREATE PROCEDURE 存储过程名称([ 参数列表 ])
BEGIN
    -- SQL语句
END;

在MySQL的命令行,创建存储过程,SQL语句中有分号,则MySQL将会在分号结束。

分号之前的不符合存储过程的语法结构,存储过程会创建失败。在创建存储过程之前使用delimiter $$设置结束符

delimiter $$

CREATE PROCEDURE 存储过程名称([ 参数列表 ])
BEGIN
    -- SQL语句
END$$;

恢复结束符:delimiter ;

 

(2)调用存储过程:CALL 存储过程名称([参数])

 

(3)查看存储过程

-- 方式一:查询指定数据库的存储过程及状态信息(harley_test是一个数据库)
select * from information_schema.routines where routine_schema='harley_test';

-- 查询某个存储过程的定义
show create procedure p1;

 

(4)删除存储过程:drop procedure [if exists] 存储过程名称;

 

 

三、变量

3.1、系统变量

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

(1)查看系统变量

-- 查看所有系统变量
show [ session|global ] variables;
-- 可以通过like模糊匹配方式查找变量
show [ session|global ] variables lke '......';
-- 查看指定变量的值
select @@[ session|global ] 系统变量名;

(2)设置系统变量

set [ session|global ] 系统变量名 = 值;
set @@[ session|global ] 系统变量名 = 值;

如果没有指定session/gloabl,默认是session(会话变量),在mysql服务重启之后,设置的全局参数会失效,要设置永久参数,可在/etc/my.cnf中配置。

 

3.2、用户自定义变量

(1)赋值(推荐使用:=赋值。=不仅是赋值运算符,还是比较运算符。)

-- 变量: 用户变量
-- 赋值
set @myname = 'harley';
set @myage := 26;
set @mygender := '男',@myhobby := 'YarnLin';

(2)使用

select @myname,@myage,@mygender,@myhobby;

 

 

 

 

 

— 业精于勤荒于嬉,行成于思毁于随 —

标签:存储,变量,--,08,global,session,MySQL,过程
From: https://www.cnblogs.com/houhuilinblogs/p/18217387

相关文章

  • MySQL数据库语法(五-->多表查询)
    多表查询1.innerjoin:代表选择的是两个表的交差部分。内连接就是表间的主键与外键相连,只取得键值一致的,可以获取双方表中的数据连接方式。语法如下:SELECT列名1,列名2...FROM表1INNERJOIN表2ON表1.外键=表2.主键WhERE条件语句;2.leftjoin:代表选择的是前面......
  • 多个存储权限管理的好处,你get到了吗?
    多个存储权限管理是NAS(网络附加存储)系统中的一个重要功能,它允许管理员对存储在NAS上的文件和文件夹进行细粒度的访问控制。以下是实现多个存储权限管理的关键点:1.用户和用户组:创建不同的用户账户和用户组,以便于根据不同的用户或用户组设置不同的访问权限。2.访问权限类型:定义......
  • Mysql单表普通查询(新手推荐)
    大家在学校里学mysql查询的时候,尤其是遇到比较复杂查询的时候,不知道有没有经常遇到问题。小编在学习mysql的时候,经常哪个怎么搞,得出的值也老是不对,今天在这里分享一些原理性的东西,帮助大家理解如何去查询基础 3、select...聚合函数from表名1、where.........
  • MySQL中如何快速定位占用CPU过高的SQL
    作为DBA工作中都会遇到过数据库服务器CPU飙升的场景,我们该如何快速定位问题?又该如何快速找到具体是哪个SQL引发的CPU异常呢?下面我们说两个方法。聊聊MySQL中如何快速定位占用CPU过高的SQL。技术人人都可以磨炼,但处理问题的思路和角度各有不同,希望这篇文章可以抛砖引玉。 以一......
  • mysql存储地理信息的方法
    MySQL存储地理信息通常使用GEOMETRY数据类型或其子类型(如POINT,LINESTRING,POLYGON等)。为了支持这些数据类型,MySQL提供了SPATIAL索引,这允许我们执行高效的地理空间查询。1.创建支持地理信息的表首先,我们需要一个包含GEOMETRY或其子类型列的表。以下是一个示例,展示......
  • 数据库初始,SQL语句介绍,MySQL数据库安装,SQL语句基础,操作MySQL数据库
    Ⅰ数据库初识【一】存储数据的演变过程【1】文件基于内存保存在早期,随意地存放到一个文件中、数据格式也是千差万别的,完全取决于个人员工管理系统是基于列表或字典(内存)存储数据【2】文件操作用本地的文本文件存储数据有的人喜欢存储到本地的一个文件中有的人喜欢存......
  • 成为MySQL DBA后,再看ORACLE数据库(二、监听与连接)
    一、监听器的启动ORACLE启动完成后,可以通过sqlplus/assysdba连接数据库,但是这个只是本地连接,无法通过tcp/ip远程访问数据库,这时候就要启动ORAClE的监听器。启动监听器的命令是lsnrctlstart,启动成功后,可以观察到1521端口也随之监听,这时候就能通过ip加端口远程访问数据库了。在......
  • mysql 8.0.18的docker安装
    1.拉取镜像sudodockerpullmysql:8.0.182.运行dockersudodockerrun-p3306:3306--namemysql--restart=always--privileged=true\-v/home/cy/soft/mysql/conf/mysql/log:/var/log/mysql\-v/home/cy/soft/mysql/data:/var/lib/mysql\-v/home/cy/soft/mysql/conf/......
  • MySQL 数据库-JDBC
    1.事务事务(Transaction):要么都成功,要么都失败事务原则:ACID原则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability))原子性:要么都成功,要么都失败一致性:事务前后的数据完整性要保证一致(如,转账操作后,两个人的总额不变)持久性:事务一旦提交不可逆,被持久化到了......
  • 无法连接阿里云服务器本地mysql问题
    1.登录服务器,进入本地mysql数据库,修改root账号访问权限为:%,表示所有IP都可以连接usemysql;updateusersethost="%"whereuser="root";//刷新权限FLUSHPRIVILEGES; 2. 查看是否修改成功:selectuser,host,pluginfrommysql.user; 3.修改 bind-address......