文章目录
一、变量
1. 变量分类
系统变量:变量由系统提供,不是用户定义,属于服务器层面 | 全局变量 :服务器每次启动将为所有的全局变量赋初始值,针对所有的会话(连接)有效,但不能跨重启(重启后恢复初始值) | 会话变量:仅仅针对当前会话(连接有效) |
---|---|---|
自定义变量:变量是用户自定义的,不是由系统提供的 | 用户变量:针对当前会话(连接)有效,同会话变量的作用域。应用在任何地方。 | 局部变量:仅仅在定义它的begin end中有效,应用在begin end中的第一句话 |
1.1 系统变量
系统变量 | 查看所有的系统变量 | 查看满足条件的部分系统变量 | 查看指定的某个系统变量的值 | 为某个系统变量赋值 |
---|---|---|---|---|
全局变量 | show global variables; | show global variables like ‘&char&’ ; | select @@global.系统变量名; | ① set global 系统变量名=值; ② set @@global.系统变量名=值; |
会话变量 | show 【session】 variables; | show 【session】 variables like ‘&char&’ ; | select @@【session】.系统变量名; | ① set 【session】 系统变量名=值; ② set @@【session】.系统变量名=值; |
【】表示可以省略。
1.2 自定义变量
自定义变量 | 声明并初始化 | 赋值 | 查看用户变量的值 |
---|---|---|---|
用户变量 | ① set @用户变量名=值; ② set @用户变量名:=值; ③ select @用户变量名:=值; | 方式一:①②③ 方式二:select字段 into @变量名from表; | select @用户变量名; |
局部变量 | declare 变量名 类型; declare 变量名 类型 default 值; | 方式一: ① set 局部变量名=值; ② set 局部变量名:=值; ③ select @局部变量名:=值; 方式二: select 字段 into 局部变量名 from 表; | select 局部变量名 |
二、存储过程
1. 含义
类似于Java中的方法。
一组预先编译好的sql语句的集合,理解成批处理语句。
2.语法
2.1 创建
create procedure 存储过程名(参数列表)
begin
存储过程体(一组合法的sql语句)
end
① 参数列表包含三部分 参数模式 参数名 参数类型,其中参数模式包含in(该参数可以作为输入,也就是该参数需要调用传入值),out(该参数可以作为输出,也就是该参数可以作为返回值),inout(该参数可以作为输出也可以作为输出,也就是该参数既需要传入值,又可以返回值)。
② 如果存储过程体只有一句话,begin end可以省略。存储过程体中的每条sql语句的结尾必须要求加分号,存储过程的结尾使用delimiter重新设置,delimiter加结束标记,如delimiter $ 。
2.2 调用
call 存储过程名(实参列表);
3.案例
结果显示:
4.参数模式的具体分析
4.1 带in模式的存储过程
得到结果:
4.2 带out模式的存储过程
(1)
得到:
(2)
得到:
4.3 带inout模式的存储过程
5.存储过程的删除
drop procedure 存储过程名;
一次只能删除一个。
6.存储过程的查看
show create procedure 存储过程名;
三、函数
1.含义
类似于Java中的方法。
一组预先编译好的sql语句的集合,理解成批处理语句。
与存储过程的区别:函数有且只能有一个返回值,存储过程可以有0个,也可以有多个。
2.语法
2.1 创建
create function 函数名(参数列表)returns 返回类型
begin
函数体
end
注意:
① 参数列表包含参数名 参数类型。
② 函数体一定有return语句,且最好放到函数体最后。
③ 函数体中只有一句话,begin end可以省略。
④ 同样使用delimiter语句设置结束标记。
2.2 调用
select 函数名(参数列表)
3.案例
(1)无参有返回
结果:
(2)有参有返回
得到:
4.查看
show create function 函数名;
5.删除
drop function 函数名;