当前位置: 首页 > news >正文

MySQL学习日记——DAY08(流程控制、游标、窗口函数)

今天针对流程控制函数、游标、窗口函数展开了学习:

1.系统变量的使用:

变量分为全局变量和会话系统变量

# 1.1 查看所有的系统变量 # 查询全局系统变量 SHOW GLOBAL VARIABLES; # 查询会话系统变量 SHOW SESSION VARIABLES; #默认查询的是会话系统变量 SHOW VARIABLES; # 1.2 查询部分系统变量 SHOW GLOBAL VARIABLES LIKE 'admin_%'; SHOW VARIABLES LIKE 'character_%'; #1.3 查看指定系统变量 SELECT @@global.max_connections; SELECT @@global.character_set_client; #错误:因为该变量只能是会话变量 SELECT @@global.pseudo_thread_id; #错误:因为该变量只能是全局变量 SELECT @@session.max_connections; SELECT @@session.character_set_client; SELECT @@session.pseudo_thread_id; SELECT @@global.character_set_client; SELECT @@session.character_set_client; #先查询会话系统变量,再查询全局系统变量 SELECT @@character_set_client;
#1.4 修改系统变量的值 针对于当前的数据库实例是有效的,一旦重启mysql服务,就失效了。 #全局系统变量: #方式1: SET @@global.max_connections = 161; #方式2: SET GLOBAL max_connections = 171; #会话系统变量:针对于当前会话是有效的,一旦结束会话,重新建立起新的会话,就失效了。 #方式1: SET @@session.character_set_client = 'gbk'; #方式2: SET SESSION character_set_client = 'gbk';

2.用户变量的使用

(1)用户变量分为局部变量和会话系统变量

会话变量在定义的时候需要使用:

#方式1:“=”或“:=” SET @用户变量 = 值; SET @用户变量 := 值; #方式2:“:=” 或 INTO关键字 SELECT @用户变量 := 表达式 [FROM 等子句]; SELECT 表达式 INTO @用户变量 [FROM 等子句];

(2)局部变量的使用

局部变量在定义的时候需要使用DECLARE

DECLARE 变量名 类型 [default 值];

在进行变量赋值的时候

# 方式1: SET 变量名=值; SET 变量名:=值; # 方式2: SELECT 字段名或表达式 INTO 变量名 FROM 表;

3.流程控制:

流程控制函数分为三类:顺序结构、分支结构、循环结构

条件判断语句 :IF 语句和 CASE 语句;

循环语句 :LOOP、WHILE 和 REPEAT 语句;

跳转语句 :ITERATE 和 LEAVE 语句;

(1)分支语句:

#对于IF的使用 IF 表达式1 THEN 操作1 [ELSEIF 表达式2 THEN 操作2]…… [ELSE 操作N] END IF #对于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后面不需要)

(2)循环语句:

#LOOP的使用 [loop_label:] LOOP 循环执行的语句 END LOOP [loop_label] #WHILE的使用 [while_label:] WHILE 循环条件 DO 循环体 END WHILE [while_label]; #REPEAT的使用 [repeat_label:] REPEAT 循环体的语句 UNTIL 结束循环的条件表达式 END REPEAT [repeat_label]

4.LEAVE类比于Java中的break用于跳出分支或跳出循环

语法:

LEAVE label

5.ITERATE类比于Java中的continue用于进行在循环语句中进入下一次循环

语法:

ITERATE label

6.游标:

类比于Java中的索引,用与指定一个表的某一特定行,行向前定位一条记录、向后定位一条记录,或者是随意定位到某一 条记录 ,并对记录的数据进行处理。游标是一种临时的数据库对象,可以指向存储在数据库表中的数据行指针。这里游标充当了指针的作用 ,我们可以通过操作游标来对数据行进行操作。并且游标可以在存储过程和存储函数中使用;

使用过程:

(1)声明游标:

DECLARE cursor_name CURSOR FOR select_statement;

(2)打开游标:

OPEN cursor_name

(3)使用游标(从游标中获得数据):

FETCH cursor_name INTO var_name [, var_name] ...

(4)关闭游标:

CLOSE cursor_name

7.窗口函数:

窗口函数的语法规则:

函数 OVER([PARTITION BY 字段名 ORDER BY 字段名 ASC|DESC]) #或者 函数 OVER 窗口名 … WINDOW 窗口名 AS ([PARTITION BY 字段名 ORDER BY 字段名 ASC|DESC])
http://www.jsqmd.com/news/457723/

相关文章:

  • 别再让一个Agent干所有活!Multi-Agent系统才是企业级应用的未来
  • 广佛莞深RPA定制,数谷智能科技让软件操控自动化?
  • ComfyUI-WanVideoWrapper:AI视频生成工具全攻略
  • 高职计算机专业不再吃香?2026年真实就业岗位全景与逆袭攻略
  • 如何永久保存社交媒体内容?专业级备份工具全解析
  • 改进深度可分离卷积的YOLOv5:面向农业害虫识别的轻量化设计与实现
  • 【脉宽调制DCDC功率变换001】PWM DCDC变换器的特性和问题
  • vgmstream全解析:游戏音频处理从入门到精通
  • 虚拟机安装redia
  • 代码随想录 Day3
  • 3个维度解析微信聊天记录数据管理:从备份到深度分析的完整方案
  • Flutter 组件 mek_data_class_generator 的鸿蒙化适配实战 - 驾驭核心数据防腐大厂,实现 OpenHarmony 业务模型的不可变性与零污染自动化生成
  • 实测对比后AI论文平台,千笔AI VS 万方智搜AI,本科生写作首选!
  • 突破系统权限限制:NSudo权限管理工具全方位应用指南
  • 2026年铝棒品牌新势力:这些铝圆棒品牌正引领市场潮流,包装铝板/平铝板/T3紫铜棒/花纹铝管,铝棒产品排行榜 - 品牌推荐师
  • 华为OD机考双机位C卷 - 挑选宝石 (Java Python JS GO C++ C)
  • Flutter 三方库 server_native 的适配鸿蒙实战 - 驾驭极致底层核心扩展,实现 OpenHarmony 端服务端进程的深绑动态二进制计算底座
  • 第一次程序开发设计作业
  • 开源工具IronyModManager:Stellaris模组问题诊断与解决方案
  • 华为OD机考双机位C卷 - 执行任务赚积分 (Java Python JS GO C++ C)
  • 2026年好用的进口床垫推荐,独立弹簧进口床垫实力厂商揭秘 - mypinpai
  • RDP Wrapper:突破Windows远程桌面限制的技术实践指南
  • 微信小程序的工厂生产流程与库存管理一体化系统
  • 华为OD机考双机位C卷 - 挑选字符串 (Java Python JS GO C++ C)
  • Linux 环境配置
  • 什么是“数据清洗” 和 “特征工程”?
  • Day44:2026年3月9日打卡
  • 资质齐全的AI营销推广品牌企业好用吗,佛山地区推荐哪家? - 工业品网
  • 《本地 RAG 完全搭建指南:从 0 到 1 手把手教程》Python + m3e-base + FAISS + 本地大模型(或 API)
  • Openclaw WebUI健康状态:离线问题处理!