mysql-速成补充

news2024/11/27 7:33:40

目录

1.演示事务

​编辑 1.1 read-uncommitted       

1.2 read-committed

1.3  repeatable read 

1.4 幻读

 1.5  serializable

1.6 savepoint

 2 变量

2.1 语法

2.2 举例

3 存储过程和函数

3.1 特点和语法

3.2 举例

 4.函数 

4.1 语法

4.2 举例

5 流程控制

5.1 分支结构

5.1.1 语法

5.1.2 举例

5.2 循环结构

5.2.1 语法

5.2.2 举例


1.演示事务

        通过命令行进行事务的演示

首先重启事务 

查看当前默认隔离级别

执行事务

 1.1 read-uncommitted       

 再开启一个链接登录修改隔离级别 read-uncommitted;

 查看表发现此时已经将'zhangwuji' 改成了‘john’

回滚之后再去查看 发现幻读。

总结:  脏读,不可重复读和幻读都不能避免

1.2 read-committed

修改事务

开启事务

 再另一个窗口里面修改隔离级别

查看隔离级别 变成了张无忌  

 

将蓝色的部分提交,重新查看黑色的部分,结果和上一次不一样,出现了不可重复读。

总结: 避免了脏读,但是不可重复读和幻读依旧可以出现

1.3  repeatable read 

修改两个隔离级别

修改,蓝色的部分提交。发现两次一样

 最后把黑色部分提交了,发现结果才发生了改变。

 

 可以解决脏读,不可重复读,不能解决幻读

1.4 幻读

        重新开启一个事务 update 此时没有执行

 同时在黑色里面开启一个事务,插入数据

 此时发现修改了3行,原来本意是修改两行

 1.5  serializable

此隔离级别可以解决以上所有情况的问题

使用幻读来举例:

此时黑色的部分出现了阻塞。只有蓝色阻塞才能开始

 

 总结

1.6 savepoint

只能搭配rollback 使用。

 2 变量

2.1 语法

分类
一、系统变量
说明:变量由系统提供的,不用自定义
语法:
①查看系统变量
show 【global|session 】variables like ''; 如果没有显式声明global还是session,则默认是session
②查看指定的系统变量的值
select @@【global|session】.变量名; 如果没有显式声明global还是session,则默认是session
③为系统变量赋值
方式一:
set 【global|session 】 变量名=值; 如果没有显式声明global还是session,则默认是session
方式二:
set @@global.变量名=值;
set @@变量名=值;


1、全局变量
服务器层面上的,必须拥有super权限才能为系统变量赋值,作用域为整个服务器,也就是针对于所有连接(会话)有效

2、会话变量
服务器为每一个连接的客户端都提供了系统变量,作用域为当前的连接(会话)


二、自定义变量
说明:
1、用户变量
作用域:针对于当前连接(会话)生效
位置:begin end里面,也可以放在外面
使用:

①声明并赋值:
set @变量名=值;或
set @变量名:=值;或
select @变量名:=值;

②更新值
方式一:
    set @变量名=值;或
    set @变量名:=值;或
    select @变量名:=值;
方式二:
    select xx into @变量名 from 表;

③使用
select @变量名;

2、局部变量
作用域:仅仅在定义它的begin end中有效
位置:只能放在begin end中,而且只能放在第一句
使用:
①声明
declare 变量名 类型 【default 值】;
②赋值或更新
方式一:
    set 变量名=值;或
    set 变量名:=值;或
    select @变量名:=值;
方式二:
    select xx into 变量名 from 表;
③使用
select 变量名;


 

2.2 举例

1.全局变量

 2.自定义变量

3 存储过程和函数

3.1 特点和语法

说明:都类似于java中的方法,将一组完成特定功能的逻辑语句包装起来,对外暴露名字
好处:
1、提高重用性
2、sql语句简单
3、减少了和数据库服务器连接的次数,提高了效率

 

 

一、创建 ★
create procedure 存储过程名(参数模式 参数名 参数类型)
begin
        存储过程体
end
注意:
1.参数模式:in、out、inout,其中in可以省略
2.存储过程体的每一条sql语句都需要用分号结尾

二、调用
call 存储过程名(实参列表)
举例:
调用in模式的参数:call sp1(‘值’);
调用out模式的参数:set @name; call sp1(@name);select @name;
调用inout模式的参数:set @name=值; call sp1(@name); select @name;
三、查看
show create procedure 存储过程名;
四、删除
drop procedure 存储过程名;

3.2 举例

插入3个人

 复制到终端

 #调用

#创建in 模式的

代码:

#在命令行打开mysql 进入到相应的数据库,输入代码,

 sqlyog 已经存在了。

 #调用

     

 没有报错只是这里面没有对应的数据而已。

#创建带有out的模式

        案例根据女神名返回对应的男神名

        

#带有inout 的方法 需要先选择一个数据库才能有存储过程的内容

案例 传入a,b 两个值,最终a和b 多翻倍并返回

代码

DELIMITER $
CREATE PROCEDURE myp4(INOUT a INT ,INOUT b INT)
BEGIN

	SET a=a*2;
	SET b=b*2;
	

END $
SET @a=10$
SET @b=20$
CALL myp4(@a,@b)$
SELECT @a $
SELECT @b $

#存储过程的删除

#存储过程的查看

show create procedure 存储过程名

 4.函数 

4.1 语法

一、创建
create function 函数名(参数名 参数类型) returns  返回类型
begin
    函数体
end

注意:函数体中肯定需要有return语句
二、调用
select 函数名(实参列表);
三、查看
show create function 函数名;
四、删除
drop function 函数名;

 

4.2 举例

#无参有反

        

 

 

 #有参有反

 

 #函数的查看

 在mysql proc 右击打开表

#删除函数

        

 

5 流程控制

说明:
顺序结构:程序从上往下依次执行
分支结构:程序按条件进行选择执行,从两条或多条路径中选择一条执行
循环结构:程序满足一定条件下,重复执行一组语句

5.1 分支结构

5.1.1 语法

特点:
1、if函数
功能:实现简单双分支
语法:
if(条件,值1,值2)
位置:
可以作为表达式放在任何位置
2、case结构
功能:实现多分支
语法1:
case 表达式或字段
when 值1 then 语句1;
when 值2 then 语句2;
..
else 语句n;
end [case];

语法2:
case 
when 条件1 then 语句1;
when 条件2 then 语句2;
..
else 语句n;
end [case];


位置:
可以放在任何位置,
如果放在begin end 外面,作为表达式结合着其他语句使用
如果放在begin end 里面,一般作为独立的语句使用
3、if结构
功能:实现多分支
语法:
if 条件1 then 语句1;
elseif 条件2 then 语句2;
...
else 语句n;
end if;
位置:
只能放在begin end中

5.1.2 举例

case 结构

 

        

 

 

 

5.2 循环结构

5.2.1 语法

位置:
只能放在begin end中

特点:都能实现循环结构

对比:

①这三种循环都可以省略名称,但如果循环中添加了循环控制语句(leave或iterate)则必须添加名称

loop 一般用于实现简单的死循环
while 先判断后执行
repeat 先执行后判断,无条件至少执行一次


1、while
语法:
【名称:】while 循环条件 do
        循环体
end while 【名称】;
2、loop
语法:
【名称:】loop
        循环体
end loop 【名称】;

3、repeat
语法:
【名称:】repeat
        循环体
until 结束条件 
end repeat 【名称】;

二、循环控制语句
leave:类似于break,用于跳出所在的循环
iterate:类似于continue,用于结束本次循环,继续下一次

5.2.2 举例

 

 

#leave 语句

 

 

#添加iterate 语句

 

 

 

 总结:

 

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/793877.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

window.location.protocol使用实战图片不同浏览器显示问题解决方案

图片在不同浏览器可能会显示不出来个别原因分析, 如火狐浏览器协议类型会有问题 但是谷歌可以 解决方案:将写死的协议 如http换成window.location.protocol就可以了 前景:前台项目和后台项目有时返回的并不是图片全路径 ,有时候…

接口测试进阶之数据模板

大家好久不见了。今天的文章将介绍jinja2模板在接口测试数据上的应用。 这几个月我在想,进阶系列要怎么写。 毕竟很多情况下,我觉得写技术文章和做培训一样,都会有两个结果: 1.是需要这些知识的人看不懂。 2.是看得懂的人不需要…

数值线性代数: 共轭梯度法

本文记录共轭梯度噶求解线性方程组的原理及流程。 零、预修 0.1 LU分解 设,若对于,均有,则存在下三角矩阵和上三角矩阵,使得。 设,若对于,均有,则存在唯一的下三角矩阵和上三角矩阵&#xff…

【云原生】Docker私有仓库registry

目录 1)用docker容器运行registry私有仓库服务。 2)运行私有仓库服务 3)镜像重命名(要上传的镜像名需要注明私仓的ip) 4)编辑docker配置文件(因为默认是拉取docker官方的镜像,需要重新指定) 5)其他dock…

walkRE裁剪面域内部--制作面洞

1、打开WalkRE软件,根据模板新建工程,如下: 2、绘制待裁剪区域和裁剪区域。如下: 将中间的矩形转换成面状的,如下: 3、裁剪掉中间内部的矩形,保留中间面状矩形的外部,如下&#xff1…

【算法提高:动态规划】1.2 最长上升子序列模型(TODO:最长公共上升子序列)

文章目录 题目列表1017. 怪盗基德的滑翔翼1014. 登山482. 合唱队形1012. 友好城市(⭐排序后 最长上升子序列模型)1016. 最大上升子序列和1010. 拦截导弹解法1——最长递减子序列 贪心解法2——最长递减子序列 最长递增子序列(⭐贪心结论&am…

2023年你不容错过的软件测试项目实战(APP项目实战)免费版

前言 最近很多的人都在问我有没有什么项目可以用来练手,正好我这里有一个比较适合练手的项目,那就给大家安利一下吧,废话就不多说了。 项目名称: APP项目实战 项目说明: 本项目里面包括了功能测试、性能测试、安全…

MATLAB与ROS联合仿真——实例程序搭建思路

一、基础运动控制实例程序搭建思路 1、需要完成的任务: (1)通过设定小车运动的速度及转角来控制ROS中小车运动。 (2)通过键盘输入指令控制ROS中小车运动,键盘输入w小车前行,s小车后退&#x…

[golang gin框架] 42.Gin商城项目-微服务实战之后台Rbac微服务角色增删改查微服务

一.重构后台Rbac用户登录微服务功能 上一节讲解了后台Rbac微服务用户登录功能以及Gorm数据库配置单独抽离,Consul配置单独抽离,这一节讲解后台Rbac微服务角色增删改查微服务功能,Rbac微服务角色增删改查微服务和后台Rbac用户登录微服务是属于…

Vue--Vuex

一、Vuex 概述 1.是什么 Vuex 是一个 Vue 的 状态管理工具,状态就是数据。 大白话:Vuex 是一个插件,可以帮我们管理 Vue 通用的数据 (多组件共享的数据)。例如:购物车数据 个人信息数 2.使用场景 某个状态 在 很多个组件 来使…

leetCode刷题记录3-面试经典150题

文章目录 不要摆,没事干就刷题,只有好处,没有坏处,实在不行,看看竞赛题面试经典 150 题80. 删除有序数组中的重复项 II189. 轮转数组122. 买卖股票的最佳时机 II 不要摆,没事干就刷题,只有好处&…

169. 多数元素

题目 题解一&#xff1a;map集合计数 /*** map集合计数* param nums* return*/public static int majorityElement(int[] nums) {Map<Integer, Integer> map new HashMap<>();//第一个for循环将数组中的元素作为key 出现次数作为value存入map 并且key重复 就v…

代码随想录算法学习心得 48 | 583.两个字符串的删除操作、72.编辑距离...

一、两个字符串的删除操作 链接&#xff1a;力扣 描述&#xff1a;给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 思路如下&#xff1a;整体思路是不变的。 这次是两个字符串可以相互…

OceanMind海睿思助力南京钢铁基于数字化审计为核心的全域风控管理

近日&#xff0c;中新赛克海睿思 与 南京钢铁股份有限公司&#xff08;以下简称“南钢”&#xff09;达成深度战略合作&#xff0c;携手推进企业内审数字化迈向智慧化发展。 双方将依托 OceanMind海睿思 提供业内领先的大数据平台和丰富的审计行业经验&#xff0c;积极利用先进…

《向量数据库指南》:向量数据库Pinecone备份索引教程

目录 ⚠️警告 使用集合创建备份 检查集合的状态 列出您的集合 删除一个集合 本文档描述如何使用集合备份索引。 要了解如何从集合创建索引,请参阅管理索引。 ⚠️警告 本文档使用集合。这是一个公开预览功能。在使用此功能生产负载之前,请进行充分测试。 使用集合…

一种有趣的 OTA 升级思路(基于 LoRa 通信的 OTA 固件升级的调试记录)

文章目录 1 概述2 调试之路2.1 想法2.2 函数和变量定义在绝对地址的实现2.2.1 IAR的扩展关键字2.2.2 函数的绝对定位2.2.3 变量的绝对定位2.2.4 常量的绝对定位2.2.4 .c文件的绝对定位 2.3 Bootload 共有函数的实现2.4 APP 共有函数的使用 3 注意事项4 调试坎坷之路5 补充 1 概…

学习React(四)

学习React&#xff08;四&#xff09; componentWillMount&#xff08;被放弃使用&#xff09;rendercomponentDidMountshouldComponentUpdatecomponentWillUpdate&#xff08;被放弃使用&#xff09;componentDidUpdatecomponentWillReceiveProps&#xff08;被放弃使用&#…

idea连接远程服务器上传war包文件

idea连接远程服务器&上传war包 文章目录 idea连接远程服务器&上传war包1. 连接服务器2.上传war包 1. 连接服务器 选择Tools -> Start SSH Session 添加配置 连接成功 2.上传war包 Tools -> Deployment -> Browse Remote Host 点击右侧标签&#xff0c;点击&…

【二开】JeecgBoot-vue3二次开发 前端 扩展online表单js增强等-在表单里拿到列表上下文onlineTableContext

【二开】JeecgBoot-vue3二次开发 前端 扩展online表单js增强等-在表单里拿到列表上下文 onlineTableContext 对应的属性方法 acceptHrefParams"<p> 跳转时获取的参数信息"currentPage"<p> 当前页数"currentTableName"<p> 当前表…

读取有重复section的ini格式文件最新的几个不同section

文件内容示例如下 可以看到文件并不是标准的 ini 配置文件的格式&#xff0c;存在很多重复的 section&#xff08;中括号里的就是section&#xff09; &#xff0c; 我的任务是读取文件末尾最新的四个不同 section&#xff0c;并发送出去。 按照读取 ini 文件那样读取显然是不…