MySQL基础复习与整理---TCL事务控制语言---变量、存储过程、函数

变量

分类

  • 系统变量

    变量由系统提供,不是用户定义,属于服务器层面

    • 全局变量 global

      服务器每次启动将为所有全局变量赋初值,针对于所有会话,不能跨重启

    • 会话变量 session

      不写默认为session

使用

查看所有系统变量

SHOW global /SESSION VARIABLES;

查看部分变量

SHOW GLOBAL /SESSION VARIABLES LIKE '%char%';

查看指定变量

SELECT @@global /SESSION .系统变量名;
SELECT @@global.autocommit;
SELECT @@tx_isolation;

为某个系统变量赋值

方式1 =

Set global /SESSION 系统变量名 = 值;
Set session tx_isolation=’read-committed’;

方式2 @@ .

Set @@global /SESSION .系统变量名= 值;
set @@global.autocommit=0;

自定义变量

步骤

  1. 声明
  2. 赋值
  3. 使用

用户变量

针对当前会话有效,应用在任何地方

声明
  • Set @用户变量名 =值;
  • Set @用户变量名 :=值;
  • Select @用户变量名:=值;
赋值
方式1 set select
Set @用户变量名 =;
Set @用户变量名 :=;
Select @用户变量名:=;
方式2 select into
Select 字段 into 变量 from;
使用
Select @用户变量名;
Set @name = 100;
Set @count = 1;
Select count(*) into @count from book;

局部变量

仅仅在定义它的begin end中有效,应用在begin end第一句话

声明
Declare 变量名 类型 【default 值】;
赋值

同用户变量

使用
Select 局部变量名;

存储过程

一组预先编译好的sql语句的集合,理解成批处理语句

优点

  • 提高了代码的重用性
  • 简化此操作
  • 减少了编译次数减少了和数据库服务器的连接次数,提高了效率

创建

Create procedure 存储过程名(参数列表)
Begin
过程
End 

参数列表:(参数模式 参数名 参数类型)

参数模式

In:参数作为输入
Out:参数作为输出
Inout:参数可以作为输入和输出

In name varchar(20)
  • 如果存储过程体只有一句话,begin end可以省略

  • 过程体中每条sql后必须加分号

  • 使用delimiter重新设置结尾标志

    Delimiter 结束标记;
    

调用

Call 存储过程名(参数);
delimiter $
CREATE PROCEDURE tst1(IN gname varchar(50),out aname varchar(50))
BEGIN 
		SELECT DISTINCT a.`name`
		FROM games g
		INNER JOIN authorss a
		ON g.author_id = a.id
		WHERE g.`name`=gname
		INTO aname;
END $
set @n = ''$
call tst1('rim',@n)$
create procedure tt1(inout a int, inout b int)
begin
	set a = a+a;
	set b = b*4;
end $
set @m=10$
set@n = 20$
 call tt1(@n,@m)$

删除

Drop procedure 存储过程名;

drop procedure tst$

查看存储过程的结构

  • Desc 存储过程名;
  • Show create procedure 存储过程名;
Desc tst;
Show create procedure myp1;

函数

一组预先编译好的sql语句集合,理解成批处理语句

存储过程和函数的区别

  • 存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新
  • 函数:有且仅有1个返回,适合处理数据后有一个返回结果。

创建

Create function 函数名(参数列表) returns 返回类型
Begin
函数体
End

注意

  • 参数列表 包括 参数名 参数类型
  • 函数体必须要有return语句,放在最后不报错但不建议

调用函数

Select 函数名(参数列表)

mysql> CREATE FUNCTION mf2(gname VARCHAR(20)) RETURNS INT
    -> BEGIN
    -> SET @age = 0;
    -> SELECT a.age INTO @age
    -> FROM games g
    -> JOIN authorss a
    -> ON g.author_id = a.id
    -> WHERE g.`name` = gname;
    -> RETURN @age ;
	-> END $
	select mf1('rimworld5')$

查看函数

Show create function 函数名;

Show create function my1;

删除

Drop function 函数名;

drop function my1;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值