ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL基础-变量 存储过程和函数

2020-03-28 20:01:05  阅读:175  来源: 互联网

标签:存储 变量 参数 MySQL 变量名 select 函数


一、变量

1.系统变量:全局变量、会话变量

说明:由系统提供,属于服务器层面。如果是全局级别,则需要加 global,如果是会话级别,则需加 session,如果不写,则默认 session。全局变量不能跨重启。会话变量仅仅针对当前变量有效

●查看所有的系统变量

show global | 【session】 variables;

●查看满足条件的部分系统变量

show global | 【session】 variable like '%char%';

●查看满足条件的部分系统变量

select @@global | 【session】 .系统变量名;

●为某个系统变量赋值

set global | 【session】 系统变量名 = 值;
set @@global |【session】 .系统变量名 = 值;

2.自定义变量:用户变量、局部变量

使用步骤:

声明
赋值
使用(查看、比较、运算)

●用户变量:可以应用在任何地方,begin end 里面或 begin end 外面。

声明并初始化
方式一:

set @用户变量名 = 值;
或 set @用户变量名: = 值;
或 select @用户变量名: = 值;

方式二:通过 select into

select 字段 into @变量名
from 表;

查看用户变量值

select @用户变量名;

●局部变量:只能应用在 begin end 中第一句话。

声明

declare 变量名 类型;
declare 变量名 类型 default 值;

赋值
方式一:

set 局部变量名 = 值;
或 set 局部变量名: = 值;
或 select @局部变量名: = 值;

方式二:通过 select into

select 字段 into 局部变量名
from 表;

使用

select 局部变量名;

二、存储过程和函数

类似于java中的方法。

1.存储过程

含义:一组预先编号的SQL语句的集合。减少了编译次数和数据库服务器的连接次数。

●创建语法

如果存储过程体仅仅只有一句话,begin end 可以省略。存储过程体中每条语句结尾都必须加分号。

create procedure 存储过程名(参数列表)
begin

存储过程体()
【delimiter 结束标记】 -- 存储过程的结尾可以使用 delimiter 重新设置。

end 结束标记【$】

参数模式:

in 该参数可以作为输入,也就是该参数需要调用方法传入值
out 该参数可以作为输出,也就是该参数可以作为返回值
inout 该参数既可以作为输入又可以作为输出,也就是该参数既需要传入值,又可以返回值

●调用语法

call 存储过程名(实参列表) 结束标记【$】;
使用之后查看表时:select *from 表【$】;

案例:

创建带 in 模式的存储过程:

创建带 out 模式的存储过程:

创建带 inout 模式的存储过程:

2.删除存储过程

drop procedure 存储过程名; --一次只能删除一个

3.查看存储过程的信息

show create procedure 存储过程名;

●其他三个案例,供参考


三、函数

存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新。

函数:只能有1个返回,适合做处理数据后返回一个结果。

1.创建语法

create function 函数名(参数列表) returns 返回类型
begin

函数体()

end

注意:

1.参数列表包含两部分:参数名、参数类型
2.函数体:肯定会有return语句, 如果没有会报错。如果return语句没有放在函数体的最后也不报错,但不建议
3.函数体中仅有一-句话,则可以省略begin end
4.使用delimiter语句设置结束标记

2.调用函数

select 函数名(参数列表);

案例:

无参数有返回值

有参数有返回值

3.查看函数

show create function 函数名;

4.删除函数

drop function 函数名;

●其他案例

标签:存储,变量,参数,MySQL,变量名,select,函数
来源: https://www.cnblogs.com/nnadd/p/12578265.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有