文章目录
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、变量
1、系统变量
含义:变量由系统提供,不是用户定义,属于服务器层面。
语法:
1、查看所有的系统变量
show global|[session] variables;
2、查看满足条件的部分系统变量
show global|[session] variables like ‘%char%’;
3、查看指定的某个系统变量的值
show global|[session] .系统变量名;
4、为某个系统变量赋值
方式一:
set global|[session] 系统变量名 = 值;
方式二:
set @@global|[session] .系统变量名 = 值;
1、全局变量global
作用域:
服务器每次启动将为所有的全局变量赋初始值,针对于所有的会话(连接)有效,但不能跨重启。
2、会话变量session(不加也是会话变量)
作用域:仅仅针对于当前会话(连接)有效
2、自定义变量
含义·:变量是用户自定义的,不是由系统的
步骤:声明、赋值、使用(查看、比较、运算等)
1、用户变量
作用域:针对于当前会话(连接)有效,同于会话变量的作用域
1、声明并初始化
三种语法:
😀SET @用户变量名=值;
😀SET @用户变量名:=值;
😀SELECT @用户变量名:=值;
2、赋值(更新用户变量的值)
方式一:通过set或select
😀SET @用户变量名=值;
😀SET @用户变量名:=值;
😀SELECT @用户变量名:=值;
方式二:通过select into
😀select 字段 into @变量名 from 表;
3、查看
select @用户变量名
2、局部变量
作用域:仅仅在定义它的begin end 中有效
应用在begin end中的第一句话!
1、声明:
语法:
😪DECLARE 变量名 类型;
😪DECLARE 变量名 类型 DEFAULT 值;
2、赋值
方式一:通过set或select
😀SET 局部变量名=值;
😀SET局部变量名:=值;
😀SELECT @局部变量名:=值;
方式二:通过select into
😀select 字段 into 局部变量名 from 表;
3、使用
select 局部变量名;
全局变量和局部变量对比:
二、存储过程
1、存储过程简介
含义:一组预先编译的SQL语句的集合,理解成批处理语句。
好处:
😁提高代码的重用性
😁简化操作
😁减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率。
创建语法:
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体(一组合法的SQL语句)
END
注意:
参数列表包含三部分:参数模式 参数名 参数类型
参数模式:
**IN:**该参数可以作为输入,也就是该参数需要调用方传入值
**OUT:**该参数可以作为输出,也就是该参数可以作为返回值
**INOUT:**该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值。
😯如果存储过程体仅仅只有一句话,DEGIN END可以省略。
😯存储过程体中的每条SQL语句的结尾要求必须加分号。
😯存储过程的结尾可以使用DELIMITER重新设置。
语法:
DELIMITER 结束标记
调用:
语法:CALL 存储过程名(实参列表);
2、存储过程的删除和查看
存储过程的删除
语法:DROP PROCEDURE 存储过程名;
不支持一次性删除多个存储过程
存储过程的查看
三、案例演示
1、空参的存储过程
在cmd运行
step1:
step2:创建
step3:调用
step4:查看
2、带in的存储过程
set names gbk$:切换编码显示中文
一个in类型案例
案例1:创建存储过程实现,根据女神名,查询对应的男神信息
俩个in
案例2:创建存储过程实现,用户是否登录成功
3、带out模式的存储过程
案例1:根据女神名,返回对应的男神名
案例2:根据女神名,返回对应的男神名和男神魅力值
4、带inout模式的存储过程
案例1:传入a和b俩个值,最终a和b都翻倍并返回
调用的时候名字与上面定义相不相同无所谓