首页 > 数据库 >MySQL篇:第九章_详解流程控制结构

MySQL篇:第九章_详解流程控制结构

时间:2023-09-20 10:25:30浏览次数:44  
标签:语句 case SET 变量 控制结构 详解 MySQL 变量名 SELECT

流程控制结构

系统变量

一、全局变量

作用域:针对于所有会话(连接)有效,但不能跨重启

查看所有全局变量
SHOW GLOBAL VARIABLES;
查看满足条件的部分系统变量
SHOW GLOBAL VARIABLES LIKE '%char%';
查看指定的系统变量的值
SELECT @@global.autocommit;
为某个系统变量赋值
SET @@global.autocommit=0;
SET GLOBAL autocommit=0;

二、会话变量

作用域:针对于当前会话(连接)有效

查看所有会话变量
SHOW SESSION VARIABLES;
查看满足条件的部分会话变量
SHOW SESSION VARIABLES LIKE '%char%';
查看指定的会话变量的值
SELECT @@autocommit;
SELECT @@session.tx_isolation;
为某个会话变量赋值
SET @@session.tx_isolation='read-uncommitted';
SET SESSION tx_isolation='read-committed';

自定义变量

一、用户变量

声明并初始化:

SET @变量名=值;
SET @变量名:=值;
SELECT @变量名:=值;

赋值:

方式一:一般用于赋简单的值
SET 变量名=值;
SET 变量名:=值;
SELECT 变量名:=值;


方式二:一般用于赋表 中的字段值
SELECT 字段名或表达式 INTO 变量
FROM 表;

使用:

select @变量名;

二、局部变量

声明:

declare 变量名 类型 【default 值】;

赋值:

方式一:一般用于赋简单的值
SET 变量名=值;
SET 变量名:=值;
SELECT 变量名:=值;

方式二:一般用于赋表 中的字段值
SELECT 字段名或表达式 INTO 变量
FROM 表;

使用:

select 变量名

二者的区别:

		作用域	                  定义位置	          语法
 用户变量	当前会话                 会话的任何地方	    加@符号,不用指定类型
 局部变量	定义它的BEGIN END中 	BEGIN END的第一句话   一般不用加@,需要指定类型

分支

一、if函数

语法:if(条件,值1,值2)
特点:可以用在任何位置

二、case语句

语法:

情况一:类似于switch
case 表达式
when 值1 then 结果1或语句1(如果是语句,需要加分号) 
when 值2 then 结果2或语句2(如果是语句,需要加分号)
...
else 结果n或语句n(如果是语句,需要加分号)
end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要)

情况二:类似于多重if
case 
when 条件1 then 结果1或语句1(如果是语句,需要加分号) 
when 条件2 then 结果2或语句2(如果是语句,需要加分号)
...
else 结果n或语句n(如果是语句,需要加分号)
end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要)

特点:可以用在任何位置

三、if elseif语句

语法:

if 情况1 then 语句1;
elseif 情况2 then 语句2;
...
else 语句n;
end if;

特点:
只能用在begin end中!!!!!!!!!!!!!!!

三者比较:

		应用场合
if函数		简单双分支
case结构	        等值判断的多分支
if结构		区间判断的多分支

循环

语法:

【标签:】WHILE 循环条件  DO
	循环体
END WHILE 【标签】;

特点:

只能放在BEGIN END里面

如果要搭配leave跳转语句,需要使用标签,否则可以不用标签

leave类似于java中的break语句,跳出所在循环!!!

标签:语句,case,SET,变量,控制结构,详解,MySQL,变量名,SELECT
From: https://www.cnblogs.com/oten/p/17712448.html

相关文章

  • 【Python】pymysql 连接mysql数据库, 执行数据库语句
    1.数据库设置importpymysql#数据库连接配置DB_HOST='127.0.0.1'#ipDB_PORT=3306#端口DB_USER='root'#用户名DB_PASSWD='root'#密码DB_DATABASE='db_1'#数据库名称2.数据库连接#连接数据库conn=pymysql.connect(host=DB_HOS......
  • MySQL常规优化操作
    查询SQL语句执行频率查询mysql服务启动时长SHOWSTATUSLIKE'uptime';下列输出表示服务启动了276324秒+---------------+--------+|Variable_name|Value|+---------------+--------+|Uptime|276324|+---------------+--------+查询全局SQL执行的频......
  • MySQL高级11-后台进程
    一、前言MySQL的服务实现通过后台多个线程、内存池、文件交互来实现对外服务的,不同线程实现不同的资源操作,各个线程相互协助,共同来完成数据库的服务。MySQL常用的后台线程概括如下,分为MasterThread,IOThread,PurgeThread,PageCleanerThread二、MasterThread在MySQL......
  • Vue+Node连接MySql搭建项目
    https://haoying.blog.csdn.net/article/details/123660641?spm=1001.2014.3001.5506https://www.jb51.net/article/277499.htm ......
  • mysql数据脱敏
    MySQL数据脱敏是一种技术手段,用于将敏感数据转换为非敏感形式,以保护数据隐私和安全。以下是一些常见的MySQL数据脱敏方法:替换:将敏感数据中的特定字段或字符串替换为非敏感的字符串。例如,将姓名中的姓氏和/或名字替换为星号(*)。扰动:在敏感数据中添加噪声或扰动,使其难以识别。这种方......
  • MySQL 表分区使用实践
    在使用MySQL8.0表分区时,需要注意以下一些关键事项和最佳实践:支持的存储引擎:MySQL8.0表分区仅支持一些特定的存储引擎,如InnoDB和NDB(NDB是MySQLCluster存储引擎)。因此,在选择分区时,请确保你的表使用的是支持分区的存储引擎。分区键的选择:选择适当的分区键非常重要。......
  • 提升工作效率的秘密武器:常用Shell脚本详解
    检测网卡流量,并按规定格式记录在日志中#!/bin/bash########################################################检测网卡流量,并按规定格式记录在日志中#规定一分钟记录一次#日志格式如下所示:#2019-08-1220:40#ens33input:1234bps#ens33output:1235bps###......
  • 【面试题精讲】Mysql如何实现乐观锁
    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top首发博客地址文章更新计划系列文章地址在MySQL中,可以通过使用乐观锁来实现并发控制,以避免数据冲突和并发更新问题。乐观锁是一种乐观的思想,它假设并发操作不会导致冲突,只......
  • MySQL学习03
    一、自动增加字段设置了自动步长字段,可以不用手动插入值,由系统提供的默认值和默认的步长自动增加,例如学号字段要求:1、只有主键才能设置2、只有数值型字段3、一张表最多只能设置一个设置方法:createtable表名(字段类型primarykeyauto_increment);设置初始值:1、......
  • centos 7 彻底删除mysql5.7 与 mysql5.7 rpm安装
    准备工作1.下载msyql5.7的安装包,mysql-5.7.36-1.el7.x86_64.rpm-bundle.tarsystemctlstopmysqld//关闭msyql服务2.查看是否有安装的mysql,删除安装的mysqlrpm-qa|grep-imysql//查看使用rpm安装了哪些包3.卸载安装的包,逐个删除查到了rpm包rpm-e--nodeps......