应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

MySQL编程,MySQL变量,MySQL循环

5301人阅读 2021/8/16 17:20 总访问:5194805 评论:0 收藏:0 手机
分类: 数据库

mysql变量

mysql变量我们主要介绍三种

  • 系统变量
  • 用户自定义变量
  • 局部变量

系统变量


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

系统变量分为:

  • 全局变量(global)
  • 会话变量(session)。

navicat新建一次查询窗口就是一个独立的会话。

查看系统变量

查看会话级别的系统变量

由于系统变量很多,所以可以在查询的时候加上一个模糊匹配

  1. /*查看系统变量。没有加级别默认是会话级别*/
  2. show variables like 'auto%'
  3. show session variables like 'auto%'

如果知道了想查询的系统变量的具体名字也可以使用如下的查询方式

  1. select @@session.autocommit
查询全局级别的系统变量
  1. /* 查询全局级别的系统变量 */
  2. -- 方法1
  3. show global variables like 'autocommit'
  4. -- 方法2
  5. select @@global.autocommit

设置系统变量

设置会话变量:
  1. set session autocommit = 0
设置全局变量
  1. set global autocommit = 0

用户自定义变量

用户自定义变量:

  • 用户根据业务逻辑自定义的变量
  • 两个@是系统变量,一个@是自定义变量
  • 自定义变量的作用域是当前会话
  • myql中用户自定义变量是不需要先申明的可以直接赋值

赋值:

下面列了4中给变量赋值的方法

  1. -- 变量赋值
  2. set @username = 'aa';
  3. -- 变量赋值方法2
  4. set @age := '22';
  5. -- 变量赋值方法3
  6. select @color:='red'
  7. -- 变量赋值方法4
  8. select count(*) into @mycount from users

查询:

直接使用select查询

  1. select @username,@age,@color,@mycount

变量之间可以直接做运算:

  1. set @result = @mycount-1;

局部变量

局部变量:


1:局部变量是根据需要定义在局部生效的变量。
2:访问之前需要使用declare申明。可以作用存储过程内的局部变量和输入参数
3:局部变量的范围是在其申明的begin,end块

使用局部变量

  1. create procedure proc_cal()
  2. begin
  3. declare count int default 0;
  4. select count(*) into count from users;
  5. set count = count+10;
  6. select count;
  7. end

测试输出执行一次存储过程即可
call proc_cal();

注意:

用户自定义变量当然可以在存储过程中使用
比如:

  1. create procedure proc_cal()
  2. begin
  3. set @mycount = 1;
  4. select @mycount;
  5. end

当时次数@mycount的变量作用域不仅仅是在begin,end块,外面也可以查询到。

mysql条件判断

if条件判断

语法:

  1. if 条件表达式 then
  2. ......
  3. elseif 条件表达式 then
  4. ......
  5. else
  6. ......
  7. end if;

实例,计算分数等级:

  1. create procedure proc_select2()
  2. begin
  3. declare score int default 58;
  4. declare result varchar(10);
  5. if score>=85 then
  6. set result:='优秀';
  7. elseif score>=60 then
  8. set result:='及格';
  9. else
  10. set result:='不及格';
  11. end if;
  12. select result;
  13. end
  14. call proc_select2();

实例,根据传递的参数不同进行不同的运算:

编写一个存储过程。要求三个输入参数,其中两个数参与运算,另外一个参数是运算的法则。
法则包含+,-,。 也就是说如果传递3,6,+。那么存储过程的结果应该是9。如果传递3,6,-那么结果就是
-3。如果传递3,6,
那么存储的结果就是18。如果传递的是其他运算法则提示暂不支持该运算。

  1. /**
  2. 编写一个存储过程。要求三个输入参数,其中两个数参与运算,另外一个参数是运算的法则。
  3. 法则包含+,-,*。 也就是说如果传递3,6,+。那么存储过程的结果应该是9。如果传递3,6,-那么结果就是
  4. -3。如果传递3,6,*那么存储的结果就是18。如果传递的是其他运算法则提示暂不支持该运算。
  5. **/
  6. drop procedure proc_sum
  7. create procedure proc_sum_type(in number1 int,in number2 int,in type char(1))
  8. begin
  9. declare result int default 0 ;
  10. if type = '+' then
  11. set result = number1+number2;
  12. elseif type = '-' then
  13. set result = number1-number2;
  14. elseif type = '*' then
  15. set result = number1*number2;
  16. else
  17. select '暂不支持该运算';
  18. end if;
  19. select result;
  20. end
  21. call proc_sum_type(6,6,'*');

case when条件判断

xx

mysql循环

while循环

mysql while循环的使用不能像在.net,java中那样直接使用 ,需要结合Mysq中的存储过程等语句来使用。

语法:

  1. /**
  2. MySQL While循环语法
  3. while 条件表达式 do
  4. ....循环的内容
  5. end while;
  6. **/

传递一个参数进来,作为循环的次数,进行一个简单的循环次数控制

  1. -- 传递一个参数进来,作为循环的次数
  2. drop procedure pro_total
  3. create procedure pro_total(in n int)
  4. begin
  5. -- 定义一个局部变量
  6. declare i int default 1;
  7. while i<=n do
  8. select i;
  9. set i=i+1;
  10. end while;
  11. end;

实例:求1到n的和

  1. -- 求和循环
  2. create procedure pro_total(in n int)
  3. begin
  4. declare i int default 1;
  5. declare total int default 0;
  6. while i<=n do
  7. set total = total+i;
  8. set i = i+1;
  9. end while;
  10. select total;
  11. end
  12. -- 调用存储过程
  13. call pro_total(10);

限制循环次数的参数必须是大于0的。如果参数没有大于0 ,提示:参数无效,并且直接退出存储过程:

  1. create procedure pro_total(in n int)
  2. label:begin
  3. -- 定义一个局部变量
  4. declare i int default 1;
  5. -- 循环次数小于0,并且直接退出存储过程
  6. if n < 1 then
  7. select '参数无效';
  8. leave label;
  9. end if;
  10. while i<=n do
  11. select i;
  12. set i=i+1;
  13. end while;
  14. select '存储过程执行完毕';
  15. end;
  16. call pro_total(-1)

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

MySQL主从复制+读写分离

使用Mysql读写分离和主从复制的原因:*单台MySQL服务器的安全性,高可用性,高并发都是不满足实际的生产需要。介绍:1.MySQ...

MySQL控制台插入中文数据报错1366解决

计算机配置: windows系统.数据库:MySQL5.5.如图 : 下图为表结构信息:通过 show full columns from userinfo;查询所得 na...

MySQL 游标创建

游标:可以来存储一个结果集,可以通过遍历来访问到每一个数据需求:分表数据。 把一张表的数据根据需求分离,创建不同的表...

MySQL 存储过程报错:delimiter

最近刚学sql,学到了存储过程,每当练习的时候就一直出现问题。 现在记录CREATEPROCEDUREproc_out(OUTstuidINT) begin se...

MySQL 视图的(增删改 查)

要显示视图的定义,需要在SHOWCREATEVIEW子句之后指定视图的名称, 我们先来创建几张表,完事后在进行演示:--用户信息表...

MySQL概述与安装配置

1996年首次发行,对于初学者来说,MySQL很容易上手MySQL数据库MySQL 是开源的,所以你不需要支付额外的费用。MySQL 支持大...

MySQL存储引擎和数据类型

一 了解MySQL存储引擎什么是MySQL存储引擎?MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技...

本地MySQL重置密码

原理:通过跳过表授权,跳过密码直接在表里更新密码1. 找到my.ini一般在C:\Program Files\MySQL\MySQL Server 5.7\bin12345...

MySQL数据库基础

1 数据库和表操作 2 数据操作 3 高级查询 4 mysql管理1 数据库和表操作 数据库 创建:create database 数据库名 [default ...

MySQL基础

1.创建、修改和删除 表是数据库存储数据的基本单位、一个表包含若干个字段或记录、表的操作包括创建新表、修改表和删除表。...

EF连接MySQL连接MySQL数据库操作中文数据乱码解决方法

修改数据库的连接字符器在连接字符器添加charset=gb2312。注意事项:(1)字符编码不支持UTF8。(2)必须使用规定编码。示例:&...

EF连接MySQL数据库

注意事项准备工作(1)下载MySQL数据库软件6.6.6版本。 (2)下载MySQL数据库mysql-connector-net-6.6.6两者不一样都不能少。(...

VS2017安装MySQL加载驱动

部署安装环境运行MySQL和VS2017软件下载MySQL-for-visualstudio-msiMySQL-connector-net-6.6.6-msi安装版本6.10.5和6.9.9在...

shell脚本强制修改MySQL --root密码

话不多说直接拿去撸;PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATHread -p &quot...

Navicat 连接MySQL时报错代码1405

好久不见我们又见面了今天给大家分享的是Navicat连接mysql时报1405的错 话不多说直接上图片遇到这个错时第一种情况:看一...

MySQL未能加载文件或程序集“Ubiety.Dns.Core”或它的某一个依赖项 问题的解决

在VS2019中使用Nuget的方式添加了最新的MySQL包 MySql.Data 8.0.19 ,默认添加了个Ubiety.Dns.Core,不知道有什么用,但是...