MySQL高级1.0

目录

📌MySQL存储过程和函数

✏️存储过程和函数介绍

✏️存储过程的创建和调用

✏️存储过程的查看和删除

✏️存储过程语法-变量

✏️存储过程语法-if语句

✏️存储过程语法-参数传递

✏️存储过程语法-while循环

✏️存储过程语法-存储函数

📌MySQL触发器

✏️触发器介绍

✏️触发器操作

📌MySQL事务

✏️事务介绍

✏️事务的操作

✏️事务的提交方式

✏️事务的四大特征(ACID)

✏️事务的隔离级别

📌隔离级别总结


📌MySQL存储过程和函数

✏️存储过程和函数介绍

存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合。

  • 存储过程和函数的好处

提高代码的复用性。

减少数据在数据库和应用服务器之间的传输,提高效率。

减少代码层面的业务处理。

  • 存储过程和函数的区别

存储函数必须有返回值。

存储过程可以没有返回值。

✏️存储过程的创建和调用

  • 创建存储过程

-- 修改结束分隔符

DELIMITER$

-- 创建存储过程

CREATE PROCEDURE 存储过程名称(参数列表)

BEGIN

                          SQL语句列表;

END$

-- 修改结束分隔符

DELIMITER;

  • 调用存储过程

CALL 存储过程名称(实际参数);

✏️存储过程的查看和删除

  • 查看数据库中所有的存储过程

SELECT * FROM mysql.proc WHERE db='数据库名称';

  • 删除存储过程

DROP PROCEDURE [IF EXISTS] 存储过程名称;

✏️存储过程语法-变量

  • 定义变量

DECLARE 变量名 数据类型 [DEFAULT默认值];

  • 变量赋值方式一

SET 变量名 = 变量值;

  • 变量赋值方式二

SELECT 列名 INTO 变量名 FROM 表名 [WHERE 条件];

✏️存储过程语法-if语句

if语句标准语法

IF 判断条件1 THEN 执行的sql语句1;

[ELSEIF 判断条件2 THEN 执行的sql语句2;]

...

[ELSE 执行的sql语句n;]

END IF;

✏️存储过程语法-参数传递

  • 存储过程的参数和返回值

CREATE PROCEDURE 存储过程名称([IN|OUT|INOUT]参数名 数据类型)

BEGIN

                        SQL语句列表;

END$

IN:代表输入参数,需要由调用者传递实际数据(默认)

OUT:代表输出参数,该参数可以作为返回值

INOUT:代表既可以作为输入参数,也可以作为输出参数

✏️存储过程语法-while循环

  • while循环语法

初始化语句:

WHILE 条件判断语句 DO

                循环体语句;

                条件控制语句;

END WHILE;

✏️存储过程语法-存储函数

  • 存储函数和存储过程是非常相似的,区别在于存储函数必须有返回值。
  • 创建存储函数

CREATE FUNCTION 函数名称(参数列表)

RETURNS 返回值类型

BEGIN

                         SQL语句列表;

                          REUTRN结果;

END$

  • 调用存储函数

SELECT 函数名称(实际参数);

  • 删除存储函数

DROP FUNCTION 函数名称;

📌MySQL触发器

✏️触发器介绍

  • 触发器是与表有关的数据库对象,可以在insert、update、delete之前或之后触发并执行触发器中定义的SQL语句。
  • 这种特殊可以协助应用系统在数据库端确保数据的完整性、日志记录、数据校验等操作。
  • 使用别名NEW和OLD来引用触发器中发生变化的内容记录。
  • 触发器分类
触发器类型OLDNEW
INSERT型触发器无(因为插入前无数据)NEW表示将要或者已经新增的数据
UPDATE型触发器OLD表示修改之前的数据NEW表示将要或已经修改后的数据
DELETE型触发器OLD表示将要或者已经删除的数据无(因为删除后状态无数据)

✏️触发器操作

  • 创建触发器

DELIMITER $

CREATE TRIGGER 触发器名称

BEFORE|AFTER INSERT|UPDATE|DELETE

ON表名

FOR EACH ROW

BEGIN

                             触发器要执行的功能;

END$

DELIMITER;

  • 查看触发器

SHOW TRIGGERS;

  • 删除触发器

DROP TRIGGER 触发器名称;

📌MySQL事务

✏️事务介绍

  • 事务:一条或多条SQL语句组成一个执行单元,其特点是这个单元要么同时成功要么同时失败。
  • 单元中的每条SQL语句都相互依赖,形成一个整体。
  • 如果某条SQL语句执行失败或者出现错误,那么整个单元就会撤回到事务最初的状态。
  • 如果单元中所有的SQL语句都执行成功,则事务就顺利执行。

✏️事务的操作

  • 开启事务

START TRANSACTION;

  • 回滚事务

ROLLBACK;

  • 提交事务

COMMIT;

✏️事务的提交方式

  • 事务提交方式的分类

自动提交(mysql默认)

手动提交

  • 查看事务提交方式

SELECT @@AUTOCOMMIT;

  • 修改事务提交方式

SET @@AUTOCOMMIT=数字;

✏️事务的四大特征(ACID)

  • 原子性(Atomicity)

原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。

因此事务的操作如果成功就必须要要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

  • 一致性(Consistency)

一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态。

也就是说一个事务执行之前和执行之后都必须处于一致性状态。

  • 隔离险(isolcation)

隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务。

不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。

  • 持久性(durability)

持久性是指一个事务一但被提交了,那么对数据库中的数据的改变就是永久性的。

即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

✏️事务的隔离级别

  • 事务的隔离级别

多个客户端操作时,各个客户端的事务之间应该是隔离的,相互独立的,不受影响的。

而如果多个事务操作同一批数据时,就会产生不同的问题,我们需要设置不同的隔离级别来解决这些问题。

  • 隔离级别分类
隔离级别名称会引发的问题
read uncommitted读未提交脏读、不可重复读、幻读
read committed读已提交不可重复读、幻读
repeatable read可重复读幻读
serializable串行化

  • 引发的问题

问题现象
脏读在一个事务处理过程中读取到了另一个未提交事务中的数据,导致两次查询结果不一致
不可重复读在一个事务处理过程中读取到了另一个事务中修改并已提交的数据,导致两次查询结果不一致
幻读查询某数据不存在,准备插入此记录,但执行插入时发现此记录已存在,无法插入。或查询数据不存在执行删除操作,却发现删除成功

  • 查询数据库隔离级别

SELECT @@TX_ISOLATION;

  • 修改数据库隔离级别

SET GLOBAL TRANSACTIONISOLATION LEVEL 级别字符串;


📌隔离级别总结

序号隔离级别名称脏读不可重复读幻读数据库默认隔离级别
1read uncommitted读未提交 是
2read committed读已提交oracle
3repeatable read可重复读mysql
4serializable串行化

注意:隔离级别从小到大安全性越来越高,但是效率越来越低,所以不建议修改数据库默认的隔离级别。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电脑开机就一直在开机界面转圈,怎么回事?

前言 前段时间小白去给一位朋友修电脑。她说这个电脑很奇怪,有时候开机很快就进入电脑界面,但有时候开机一直在那转圈,半天也不见进入。 Windows7系统的小伙伴应该也有遇到过类似的问题,就是电脑一直在Windows的logo界面&#xf…

Halcon 重叠区域 显示汉字 图像分割

一 如何填充区域之间的GAP或分割重叠区域 read_image(Image,fabrik)*区域生长法将图像分割成相同强度的区域,并将其划分成大小为行*列的矩形。 为了确定两个相邻的矩形是否属于相同的区域, *仅使用其中心点的灰度值。 如果灰度值差小于等于公差&#xff…

Java使用Graphics2D画图,画圆,矩形,透明度等实现

背景 如上图,需要使用Java生成一个图片, 并以base64编码的形式返回给前端展示。 使用Graphics2D类,来进行画图,其中需要画方框、原型、插入图标、写入文字等,同时需要设置透明度等细节点 环境:Jdk17&#…

NAS—网络附加存储

关键词:私有化存储、Nas、云盘、群晖、Tailscale、 前言 身处于互联网时代的我们,几乎每时每刻都在与计算机打交道,而软件则作为我们和计算机之间沟通的桥梁,因此可以认为软件的作用是:将计算机能力进行包装&#xf…

期货散户应该如何有效的管理仓位呢?

期货散户应该如何有效的管理仓位呢?首先,他们要意识到自己所做的决定是很重要的。其次,还要注意自己的风险承受能力。最后,要做好风险管理,以便避免出现任何问题。 1:散户如何管理仓位 散户在进行期货交易时,要想有效地管理仓位,需要遵循一…

Windwos +vs 2022 编译openssl 1.0.2 库

一 前言 先说 结论&#xff0c;编译64位报错&#xff0c;查了一圈没找到解决方案&#xff0c;最后换了32位的。 使用qt访问web接口&#xff0c;因为是https&#xff0c;没有openssl库会报错 QNetworkReply* reply qobject_cast<QNetworkReply*>(sender());if (reply){…

vivo 互联网自研代码评审 VCR 落地实践

作者&#xff1a;vivo 互联网效能平台团队- Chi Wei 本文介绍了vivo工程效能团队基于 Gitlab、Gerrit等开源工具搭建的VCR平台&#xff0c;代码评审idea插件开发及开发过程中遇到的挑战、困难&#xff0c;并分享了相应的应对策略和优化方案。 代码评审是软件质量保证一种活动&…

5年成为10亿级大单品,海天如何策划黄豆酱的极致产品力?

在当今的调味品市场中&#xff0c;酱料作为一个重要的细分品类&#xff0c;正迅速成为消费者日常饮食中不可或缺的一部分。随着人们对烹饪品质和口味多样化的追求不断提升&#xff0c;酱料市场的前景愈发广阔。而在这片广阔的市场中&#xff0c;海天味业&#xff0c;作为中国调…

ElasticSearch-Windows系统ElasticSearch(ES)的下载及安装

前言 下载ElasticSearch 可以进入ElasticSearch官方下载地址&#xff0c;选择与电脑系统相对应的版本&#xff1b;博主已经上传资源&#xff0c;或者点此直接免费下载&#xff0c;本次演示版本为8.14.1。 注意&#xff1a; Elasticsearch 5 需要 Java 8 以上版本&#xff1b;…

Excel 宏录制与VBA编程 ——VBA编程技巧篇一 (Union方法、Resize方法、Cells方法、UseSelect方法、With用法)

Uniom方法 使用Union方法可以将多个非连续区域连接起来成为一个区域&#xff0c;从而可以实现对多个非连续区域一起进行操作。 Resize方法 使用Range对象的Resize属性调整指定区域的大小&#xff0c;并返回调整大小后的单元格区域。 Cells方法 Cells属性返回一个Range对象。 Us…

基于Java的大学生租房系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架&#xff0c;MVC模式 工具&#xff1a;Vscode&#xff0c;MySQL&#xff0c;B/S架构…

计算机网络之OSI七层体系结构

目录 1.物理层 1.1物理层组成 1.2物理层功能 1.3物理层服务 1.4物理层标准 1.5物理层接口 2.数据链路层 2.1基于物理层的问题 2.2数据链路层功能 2.3数据链路层服务 2.4数据链路层协议 3.网络层 3.1基于DL层的问题 3.2网络层功能 3.3网络层服务 3.4网络层协议 …

根据肥胖类型选择减调方向收获窈窕身材

我们生活中胖子很多&#xff0c;从胖到瘦的人也不少&#xff0c;但瘦了后对自己身材满意的人却是不多的&#xff0c;很多人瘦了也只是减掉了身上的赘肉而已&#xff0c;大体的身形却是没有变化的&#xff0c;因此&#xff0c;并不感到满意。因为他们本身的形体是固定的&#xf…

拼多多面试总结

文章目录 一面自我介绍提问算法反问结果 二面提问算法反问结果 主管面主管面试准备算法题其他个人提问准备 提问数据库普通索引和覆盖索引的区别索引是什么&#xff1f;索引怎么加快数据库查询的&#xff1f;索引具体怎么实现的&#xff1f;以B树为例&#xff0c;节点放了什么&…

java生成excel,uniapp微信小程序接收excel并打开

java引包&#xff0c;引的是apache.poi <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency> 写一个测试类&#xff0c;把excel输出到指定路径 public s…

leetcode494. 目标和

1.思想方法 2.代码 class Solution { public int findTargetSumWays(int[] nums, int target) {int sum 0;for(int num : nums)sum num;if(sum < Math.abs(target) || (targetsum)%2 ! 0)return 0;int x (targetsum) / 2,n nums.length;//基于滚动数组的方法int[] dp…

JavaWeb-day28_HTML

今日内容 零、 复习昨日 一、HTML 零、 复习昨日 一、Web开发 前端三大件 HTML ,页面展现CSS , 样式JS (JavaScript) , 动起来 二、HTML 2.1 HTML概念 ​ 网页&#xff0c;是网站中的一个页面&#xff0c;通常是网页是构成网站的基本元素&#xff0c;是承载各种网站应用的平台…

MySQL高级-SQL优化- count 优化 - 尽量使用count(*)

文章目录 1、count 优化2、count的几种用法3、count(*)4、count(id)5、count(profession)6、count(null)7、 count(1) 1、count 优化 MyISAM引擎把一个表的总行数存在了磁盘上&#xff0c;因此执行count&#xff08;*&#xff09;的时候会直接返回这个数&#xff0c;效率很高&a…

阿里云nginx更新证书后依旧显示旧证书

尝试的解决办法 重启nginx服务删除服务器上的旧证书清除浏览器缓存检查是否使用CDN服务 最后的解决办法 云服务器开启了WAF服务&#xff0c;在WAF服务中配置证书

MySQL学习(5):SQL语句之数据查询语言:DQL

1.DQL语法 select 字段列表 from 表名列表 #DQL是可以进行多表查询的 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数 2.基本查询&#xff08;select&#xff09; 2.1查询多字段 select 字段1,字段2,字段3,......fro…