文章目录
0. 概述
存储过程和函数是 事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。
即可以在数据库中书写存储过程与函数,使用JDBC时就可以直接调用这俩者,而不用再使用一条条的SQL语句增加服务器与数据库 的传输
存储过程和函数的区别在于函数必须有返回值,而存储过程没有。
函数 : 是一个有返回值的过程 ;
过程 : 是一个没有返回值的函数 ;
1. 变量
在MySQL中变量分为系统变量和自定义变量,它们又有划分:
- 系统变量
- 全局变量
- 会话变量
- 自定义变量
- 用户变量
- 局部变量
1.1 系统变量
系统变量就是由MySQL系统提供的变量,不属于用户定义,属于服务器层面。
注意:全局变量需要添加GLOBAL关键字,会话变量需要添加SESSION关键字,而如果不写关键字,那么默认是会话级变量。
系统变量使用的基本语法如下:
-- 查看所有系统变量
SHOW GLOBAL|[SESSION] VARIABLES;# GLOBAL表示查看系统全局变量,SESSION表示查看系统会话变量,[SESSION]是一个可选项,如果不写则默认是会话变量
-- 查看满足部分条件的系统变量
SHOW GLOBAL|[SESSION] VARIABLES LIKE '%匹配字符%';# LIKE '%char'的语法与MySQL模糊查询语法一致,使用通配符匹配
-- 查看指定的系统变量的值
SELECT @@GLOBAL|[SESSION].系统变量名;# 例如:select @@global.hostname;#查看主机名
-- 为某个系统变量赋值
# 方式一
SET GLOBAL|[SESSION] 系统变量名=值;
# 方式二
SET @@GLOBAL|[SESSION].系统变量名=值;# 例如:set @@global.autocommit=1;
1.1.1全局变量
全局变量的作用域是针对于所有会话(连接)有效,但不能跨重启(即重启数据库服务)。所谓的会话就是一次连接
全局变量的常用语法如下:
-- 查看所有全局变量
SHOW GLOABL VARIABLES;# 必须写GLOBAL,表示全局
-- 查看满足条件的部分全局变量
SHOW GLOBAL VARIABLES LIKE '%匹配字符%';
-- 查看指定全局变量的值
SELECT @@GLOBAL.全局变量名;# 也可以添加上GLOBAL
-- 为某个全局变量赋值
SET @@GLOBAL.全局变量名='新值';
SET GLOBAL 全局变量名='新值';
1.1.2 会话变量
会话变量只针对于当前会话(连接)有效。会话变量的常用语法为:
-- 查看所有会话变量
SHOW [SESSION] VARIABLES;# 即使不写session,默认也是会话级变量
-- 查看满足条件的部分会话级变量
SHOW [SESSION] VARIABLES LIKE '%匹配字符%';
-- 查看指定会话变量的值
SELECT @@会话级变量名;# 默认就是会话级变量
SELECT @@SESSION.会话级变量名;# 也可以添加上SESSION
-- 为某个会话变量赋值
SET @@SESSION.会话级变量名='新值';
SET SESSION 会话级变量名='新值';
1.2 自定义变量
自定义变量顾名思义就是用户自己定义的变量,而不是由系统提供的。
使用自定义变量需要先声明再赋值,最后才能使用(查看、比较、运算等)。
1.2.1 用户变量
用户变量只针对于当前会话(连接)有效,作用域等同于会话变量。
用户变量的使用语法如下:
-- 第一步:声明并初始化用户变量,有下面三种方式
SET @变量名=值;# 方式一
SET @变量名:=值;# 方式二
SELECT @变量名:=值;# 方式三
-- 第二步:赋值(也可以更新变量的值),有两种方式
# 方式一(下面这三种都可以为变量赋值)
SET @变量名=值;# 方式一,也使用较多
SET @变量名:=值;# 方式一
SELECT @变量名:=值;# 方式一
# 方式二