MySQL 变量,存储过程,函数,流程控制结构

#变量
/*
系统变量:
全局变量
会话变量
自定义变量:
用户变量
局部变量
*/
#系统变量
/*说明:变量有系统提供,不是用户定义,属于服务器层面
使用的语法:
1、查看所有的系统变量
show global|【session】 variables;
2、查看满足条件的部分系统变量
show global|session variables like ‘’;
3、查看指定的系统变量
select @@GLOBAL|SESSION.系统变量名;
4、为某个系统变量赋值
set global|session 系统变量名=值;
set @@global|session.系统变量名=值;

全局:global
作用域:服务器每次启动将为所有的全局变量赋初值,针对所有会话有效,不能跨重启(重启后失效)
会话:session
作用域:仅仅针对当前会话有效
*/

#1

SHOW GLOBAL VARIABLES;
SHOW SESSION VARIABLES;

#2

SHOW VARIABLES LIKE '%char%';

#3

SELECT @@global.autocommit;
SELECT @@transaction_isolation;

#4

SET @@global.autocommit=0;

#自定义变量
#用户变量
/*
说明:变量有自己定义,不是有系统提供
使用步骤:
声明
赋值
使用(查看,比较,运算)
作用域:
针对当前会话

1、声明并初始化

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

2、赋值(更新用户变量的值)

set @用户变量名=;
	set @用户变量名:=;
	select @用户变量名:=;
select 字段 into 用户变量名
from;

3、使用(查看)

select @用户变量名;

*/

#局部变量
/*
作用域:仅仅在定义它的begin end 中有效
放在begin end 中第一句

1、声明

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

2、赋值
s

et @局部变量名=;
	set @局部变量名:=;
	select @局部变量名:=;
select 字段 into 局部变量名
from;

3、使用(查看)

select @局部变量名;

*/

#用户变量

SET @m=1;
SET @n=2;
SET @sum=@m+@n;
SELECT @sum;

#自定义变量

BEGIN
DECLARE m INT 1;
DECLARE n INT 2;
DECLARE s INT;
SET s=m+n;
SELECT s;
END

存储过程和函数

/*
存储过程和函数:类似于java中的方法
好处:
提高代码的重用性
简化操作
*/

#存储过程
/*
含义:一组预先编译好的SQL语句的集合,理解成批处理语句

提高代码的重用性
简化操作
提高效率
*/

#1、创建语法

CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
	存储过程体
	一组合法的SQL语句
END

注意
1、参数列表包含三部分
参数模式 参数名 参数名
IN stuname VARCHAR(20)

参数模式:
IN 该参数可以作为输入,需要调用方传入值
OUT 该参数可以作为输出,可以作为返回值
INOUT 该参数可以作为输入,输出
2、如果存储过程体仅仅只有一句话,begin end可以省略
存储过程体的每条SQL语句的结尾要求必须加分号
存储过程的结尾可以使用 DELIMITER 重新设置
语法:
DELIMITER 结束标记
案例:
DELIMITER $

#2、调用语句
CALL 存储过程名(实参列表)

#实战
你可以自己创建一个表nn

DESC nn;
SELECT * FROM nn;
DELETE FROM nn WHERE i_d=2;
DELIMITER $
CREATE PROCEDURE addi()
BEGIN
	INSERT INTO nn() VALUES(2,'gjy'),(3,'yq'),(4,'ccx'),(5,'mtfy'),(6,'xll');
END $
CALL addi()$

#删除存储过程

DROP PROCEDURE 存储过程名
DROP PROCEDURE addi;

#查看存储过程的信息

SHOW CREATE PROCEDURE lei;

#函数
/*
含义:一组预先编译好的SQL语句的集合,理解成批处理语句

提高代码的重用性
简化操作
提高效率

*/

#一、创建语法
CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
BEGIN
函数体
END

/*
注意:
参数列表:
参数名 参数类型
函数体中肯定有return 语句
使用delimiter语句结束标记
delimiter $
*/

#二、使用

SELECT 函数名(参数列表)

#3、查看

SHOW CREATE FUNCTION 函数名(参数列表)

#4、删除

DROP FUNCTION 函数名;

流程控制结构

/*
顺序结构:程序从上往下依次执行
分支结构:程序从两条或多条路径选择一条去执行
循环结构:程序在满足一定条件的基础上,重复执行一段代码
*/

#一、分支结构
#1、if函数
实现简单的分支
SELECT IF(表达式1,表达式2,表达式3)

#二、case结构
情况一:类似于java中的switch语句,一般用于实现等值的判断
语法:
CASE 变量|表达式|字段
WHEN 要判断的值 THEN 返回值1

ELSE 要返回的值
END
情况二:类似于java中的多重if语句,一般实现区间判断
语法:
CASE
WHEN 要判断的条件 THEN 返回值1

ELSE 要返回的值
END
#三、if结构
语法:
IF 条件一 THEN 语句;
ELSEIF 条件2 THEN 语句;
ELSE 语句
END IF;

用在begin end中

#循环结构
/*
分类:
while,loop,repeat
循环控制:
iterate 类似于continue 继续,结束本次循环,继续下一次
leave 类似于break 跳出,结束当前所在的循环
*/

#1.while
/*
语法:
【标签:】 while 循环条件 do
循环体:
end while 【标签:】;
/
#2.loop
/

语法:
【标签:】loop
循环体;
end loop 【标签】;
可以用来模拟简单的死循环
/
#3.repeat
/

【标签:】repeat
循环体;
until 结束循环的条件
end repeat 【标签】;
*/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值