MYSQL学习笔记11:变量(系统变量,会话变量,局部变量),流程结构(if分支,while循环)

这篇博客详细介绍了MySQL中的变量类型,包括系统变量、会话变量和局部变量的使用,以及流程控制结构,如if分支和while循环的基本语法和应用场景。读者将学习如何设置、查看和修改变量,以及在不同场景下正确使用变量和流程控制结构。

变量

mysql本质是一种编程语言,需要很多变量保存数据.mysql中很多属性控制都是通过mysql中固有的变量来实现的.

系统变量

系统内部定义的变量,针对所有用户有效. 

查看系统变量:show variables [like 'pattern'];

mysql允许用户使用select查询系统变量的实际数据值

基本语法:select @@变量名;

修改系统变量:

1. 局部修改(会话级别):仅针对当前客户端本次连接本身有效,且立即生效.

语法: set 变量名 = 新值;

2.全局修改: 仅针对所有新连接的客户端有效.

语法: set global 变量名=新值 或者 set @@global.变量名=新值;

示例:全局修改系统变量,查看如下:

我们再打开1个新连接客户端对比查看如下:

会话变量

会话变量又叫用户变量,会话变量跟mysql客户端是绑定的,设置的变量,只对当前用户使用的客户端生效

格式: set @变量名=值;  //使用这种方式mysql可能会有歧义

 

mysql中没有比较符号==,所以是用=号代替比较符号.mysql系统有时候分不清是赋值还是比较,在赋值的时候会报错.

mysql新增使用变量赋值符号":="(类似Pascal)

格式: set @变量名:=值; //使用这种方式mysql不会产生歧义

通过查询为变量赋值

mysql是专门存储数据的,允许将数据从表中取出存储到变量中.查询得到的数据必须只能是一行数据(一个变量对应一个字段值):mysql没有数组.

  • 1. 赋值且查看赋值过程: select @变量1=字段1, @变量2=字段2 from 数据表 where条件;

错误语法:

如上,我们得到了错误的结果,这是为什么呢?

错误原因:就是使用了=号.系统会当做比较符号

解决方案:使用正确的赋值符号 :=

  • 2. 只赋值,不看过程: select 字段1,字段2... from 数据源 where条件 into 变量1,变量2...;

查看变量: select @变量名1,@变量名2...,

局部变量

作用范围在begin到end语句块之间.在该语句块里设置的变量,declare语句专门用于定义局部变量

1. 局部变量使用declare声明;

2. declare声明语句在begin和end之间;(begin和end是在大型语句块中使用:函数/存储过程/触发器)

3. 声明语法: declare 变量名 数据类型 [属性];

4.declare声明语句在函数体其他语句之前.

流程结构

流程结构:代码的执行顺序

if分支

基本语法

1. 用在select查询中,当做条件判断;

基本语法: if(条件,为真结果,为假结果)

2. 用在复杂的语句块中(函数/存储过程/触发器)

基本语法:

if 条件表达式 then
    满足条件时执行的语句块; 
end if; 

复合语法

复合语法:代码的判断存在两面性,两面都有对应的代码执行.

基本语法:

if 条件表达式 then
    满足条件时执行的语句块;
else
    不满足条件时执行的语句块;
    /*还可以继续嵌套if - else - end if结构*/
    if 条件表达式 then
       ...;
    else
       ...;
    end if;
end if;

While循环

基本语法

循环体需要在大型代码块中使用.

基本语法:

while 条件 do
    循环时执行的语句块;
end while;

结构标识符

结构标识符:为某些特定的结构进行命名,然后为的是在某些地方使用名字.

基本语法

标识名字:while 条件 do
    循环时执行的语句块;
end while[标识名字];

标识符的存在是为了循环体中使用循环控制.在mysql中没有continue和break,有自己的关键字替代:

iterate:迭代.即以下代码不执行,重新开始循环.(类似continue)

leave: 离开,整个循环终止.(类似break)

标识名字:while 条件 do
    if 条件判断 then
        循环控制;
        iterate/leave 标识名字;
    end if;
    循环时执行的语句块;
end while[标识名字];

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值