MySql之索引,视图,事务以及存储过程举例详解
一.数据准备
数据准备可参考下面的链接中的数据准备步骤
MySql之内连接,外连接,左连接,右连接以及子查询举例详解-CSDN博客
(如有问题可在评论区留言)
二.存储过程
1.定义
2.语法
create procedure 存储过程名称(参数列表)
begin
sql 语句
end
3.举例
--创建存储过程 stu(),查询 students 表所有学生信息
CREATE PROCEDURE stu()
BEGINSELECT * from students;
end
调用存储过程
--调用存储过程stu
call stu();
执行结果:
删除存储过程
--删除存储过程,删除的时候不用写名字后面的()
--方法一
DROP PROCEDURE stu;
--方法二(方法二,加了if EXISTS,与方法一的区别就是,如果stu已经被删除,再执行方法一,会报错,但是执行方法二不会报错)
drop PROCEDURE if EXISTS stu;
三.视图
1.定义
视图本质就是对select(查询)语句的封装
视图可以理解为一张只读的表,针对视图只能用select,不能用delete和update
2.语法
--创建视图
create view 视图名称 as select 语句;
--使用视图
select * from 视图名称;
--删除视图
方法一
drop view 视图名称;
方法二
drop view if exists 视图名称;
3.举例
创建视图
stu_nan可看成是一个新的表
--创建一个视图,查询所有男生信息
CREATE VIEW stu_nan as
SELECT * from students where sex = '男';
使用视图
--使用视图,例1
SELECT * from stu_nan
--使用视图,例2
--在视图 stu_nan 中查找年龄大于25岁的学生信息
select * from stu_nan where age >25;
--使用视图,例3
SELECT * from stu_nan INNER JOIN scores
on stu_nan.studentNo = scores.studentNo;
例1运行结果(其他的例子感兴趣可自行验证):
删除视图
--删除视图
--方法一
drop VIEW stu_nan;
--方法二
DROP view if EXISTS stu_nan;
4.什么时候用视图
如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询这种
四.事务
1.为什么要有事务
2.什么是事务
3.事务指令
-
事务是多条更改数据操作的sql语句集合
-
一个集合数据有一致性,要么就都失败,要么就都成功回滚
-
begin ----开始事务,开启事务后执行修改update或者删除delete记录语句,变更会写到缓存中,而不会立刻生效
-
rollback ----回滚事务,放弃对表的修改
-
commit ---- 提交事务,对表的修改生效
没有写begin代表没有事务,没有事务的表操作都是实时生效.
如果只写了begin, 没有rollback,也没有commit, 结果是rollback或者系统退出,结果也是rollback
回滚事务
(第二步执行的完成后,可以用查询语句查询stuents表是否真的删除001的记录--应该是被删除了
第三步执行的完成后,可以用查询语句查询scores表是否真的删除001的记录--应该是被删除了
第四步执行完成后,可以分别查询两个表的内容,001的记录都还存在)
-- 例 1:
-- 第一步执行:开始事务(begin;)
-- 第二步执行:删除 students 表中 studentNo 为 001 的记录,
-- 第三步执行:同时删除 scores 表中 studentNo 为 001 的记录,
-- 第四步执行:回滚事务,两个表的删除同时放弃
begin;
DELETE from students where studentNo = '001';
DELETE from scores where studentNo = '001';
-- 回滚事务,放弃更改
ROLLBACK;
注意:如果在第二步执行或者第三步执行完成后,直接把navicat关掉,那么重新进入navicat时,查询students表和scores表的内容时,001记录是存在的(验证了这句话:系统退出或系统有问题了,结果也是rollback)
提交事务
-- 开启事务,
-- 删除 students 表中 studentNo 为 001 的记录,
-- 同时删除 scores 表中 studentNo 为 001 的记录,
-- 提交事务,使两个表的删除同时生效begin;
DELETE from students where studentNo = '001';
DELETE from scores where studentNo = '001';
--提交事务,一旦提交事务,两个删除操作同时生效
commit;
五.索引
1.引入索引
2.创建索引的目的
-
给表建立索引,目的是加快select查询的速度
-
如果一个表记录很少,几十条,或者几百条,不用索引
-
表的记录特别多,如果没有索引,select语句效率会非常低
3.语法
创建索引
-
create index 索引名称 on 表名(字段名称(长度));
-
如果字段为字符串,需要写明创建表字段的时候字符串的长度
-
字段类型如果不是字符串,可以不填写长度部分。
调用索引
-
不需要写调用索引的语句,只要where条件后面用到的字段建立了索引,那么系统会自动调用
查看索引
-
show index from 表名
-
对于主键,系统会自动建立索引
删除索引
-
drop index 索引名 on 表名
4.举例
-- 例1:为表 students 的 age 字段创建索引,名为 age_index
CREATE index age_index on students (age);-- 例2:为表 students 的 name 字段创建索引,名为 name_index
CREATE INDEX name_index on students (name(10));
-- 查看students表的索引
show index from students;
结果(主键会自己自动生成索引):
调用索引
--调用索引
-- where条件后面的字段,数据库系统会自动查找是否有索引
-- 这里会自动调用age_index
select * from students where age = 30;
-- 自动调用name_index
SELECT * from students where name = '李白';
-- 不会调用任何索引,因为sex字段没有索引
SELECT * from students where sex = '女';
删除索引
-- 删除索引age_index
drop index age_index on students;
-- 删除索引name_index
drop index name_index on students;
5.索引的优缺点
-
提高select的查询速度
-
降低update,delete和insert语句的执行速度
-
项目中80%以上是select,所以index必须的
-
在实际工作中如果涉及到大量的数据修改操作,修改之前可以把索引删除,修改完成后再把索引建立起来
相关文章:

MySql之索引,视图,事务以及存储过程举例详解
一.数据准备 数据准备可参考下面的链接中的数据准备步骤 MySql之内连接,外连接,左连接,右连接以及子查询举例详解-CSDN博客 (如有问题可在评论区留言) 二.存储过程 1.定义 存储过程 PROCEDURE ,也翻译…...

AR眼镜双目光波导/主板硬件方案
AR(增强现实)技术的发展离不开光学元件,而在其中,光波导和Micro OLED被视为AR眼镜光学方案的黄金搭档。光学元件在AR行业中扮演着核心角色,其成本高昂且直接影响用户体验的亮度、清晰度和大小等因素。AR眼镜的硬件成本中,光机部分…...

单片机调试技巧--修改bin文件实现断点
fromelf --text -a -c --outputall.dis F103_Moduel\F103_Moduel.axffromelf --bin --outputtest.bin F103_Moduel\F103_Moduel.axf 在启动文件中,修改UsageFault_Handler UsageFault_Handler\PROC; get current contextTST lr, #0x04 ; if(!EXC_RETURN[2])ITE…...

微信小程序:This Mini Program cannot be opened as your Weixin version is out-of-date.
项目场景: 问题描述 升级基础库3.2.0,然后PC端整个小程序都打不开了,点击小程序提示”This Mini Program cannot be opened as your Weixin version is out-of-date. Update Weixin to the latest version.“,并且点击Update Wei…...
04 C++中的四种强制类型转换
系列文章目录 04 C中的四种强制类型转换 目录 系列文章目录 文章目录 前言 一、静态转换(Static Cast) 二、动态转换(Dynamic Cast) 三、常量转换(Const Cast) 四、重新解释转换(Reinte…...
电力感知边缘计算网关产品设计方案-边缘计算自控算法模型
边缘计算网关与其他数据采集的IoT网关设备不同之处在于可以根据应用场景和产品解决方案,单独设置一些边缘计算算法模型,实现离线系统和边缘计算自控逻辑判别+执行系统方案,自控算法逻辑单元也是边缘计算网关自控系统方案的核心单元。 自控算法逻辑单元根据产品应用不同,有…...

C语言进阶之笔试题详解(1)
引言: 对指针知识进行简单的回顾,然后再完成笔试题。 ✨ 猪巴戒:个人主页✨ 所属专栏:《C语言进阶》 🎈跟着猪巴戒,一起学习C语言🎈 目录 引言: 知识简单回顾 指针是什么 指针变…...
报道|2023 INFORMS 最佳论文(部分)华人获奖者名单
编者按 本文收集了部分2023年INFORMS年会最佳论文评选的华人获奖者名单,祝贺获奖者们!如果读者身边有本文遗漏的获奖者请在文章下方评论区告诉小编。 ● George Nicholson学生论文竞赛一等奖: Bayesian Design Principles for Frequentist …...

【Docker】从零开始:12.容器数据卷
【Docker】从零开始:12.容器数据卷 1.什么是容器数据库卷2.数据的覆盖问题3.为什么要用数据卷4.Docker提供了两种卷:5.两种卷的区别6.bind mount7.Docker managed volumevolume 语法volume 操作参数 1.什么是容器数据库卷 卷 就是目录或文件,…...

Spring Boot 整合MyBatis-Plus 详解
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 全新的 MyBatis-Plus 3.0 版本基于 JDK8,提供了 lambda 形…...

【前端】让列表像Excel单元格一样编辑
前言 领导说了一堆的话,最后总结一句就是客户很懒,客户的员工更加懒。 本着让别人节省时间的原则,提倡出了让列表和Excal的单元格一样,不仅看数据还可以随时更改数据。 查资料 根据 Jeecg-Vue3 源码介绍,从而知道是基于 Vben Admin 开源项目进行改造的。 因此在 Vben…...

数字图像处理-Matlab实验
实验一 图像增强 实验内容: 对于给定的低对比度测试图像,利用灰度图像直方图均衡化算法进行图像视觉效果增强。 对于给定的低照度彩色测试图像,结合颜色空间转换和灰度图像直方图均衡化算法进行图像视觉效果增强。 实验数据: Test1_1.jpg: Test1_2.jpg: 实验步骤: %% …...

Nginx:配置文件详解
一、Nginx配置文件 main配置段:全局配置 events段:定义event工作模式 http {}:定义http协议配置 支持使用变量: 内置变量:模块会提供内建变脸定义 自定义变量:set var_name value 二、 主…...
卷积,是什么?
其实就是对事物的作用,或者说作用力,比如说,石板上没有字,我们刻上字,便于识别,从机器视觉角度来说,就是对图像的作用力,这种作用使得能看清想要的东西,感觉还是很主观&a…...
Javascript的闭包有哪些应用?
JavaScript 中的闭包是一种强大的特性,它可以用于多种应用。以下是一些闭包在 JavaScript 中的常见应用: 1、封装私有变量: 通过闭包,可以创建私有变量和方法。外部作用域无法直接访问闭包内的变量,从而实现了信息隐藏…...

LCM-LoRA模型推理简明教程
潜在一致性模型 (LCM) 通常可以通过 2-4 个步骤生成高质量图像,从而可以在几乎实时的设置中使用扩散模型。 来自官方网站: LCM 只需 4,000 个训练步骤(约 32 个 A100 GPU 小时)即可从任何预训练的稳定扩散 (SD) 中提取出来&#…...
设计模式-开篇
什么是设计模式 设计模式是一种被反复使用、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、提高代码的可靠性。设计模式不是可直接转化为代码的完成解决方案,而是描述了如何解决一个问题的经过…...

HashMap的实现原;HashMap的工作原理;HashMap存储结构; HashMap 构造函数
文章目录 说一下HashMap的实现原理(非常重要)①HashMap的工作原理HashMap存储结构常用的变量HashMap 构造函数tableSizeFor() put()方法详解hash()计算原理resize() 扩容机制get()方法为什么HashMap链表会形成死循环 HashMap是我们在工作中使用到存储数据特别频繁的数据结构&am…...
JavaScript 原型,原型链的特点
JavaScript 的原型(Prototype)和原型链(Prototype chain)是 JavaScript 面向对象编程中的重要概念。 原型(Prototype) 在 JavaScript 中,每个对象都有一个原型对象,而这个原型对象…...

越南服务器租用:企业在越南办工厂的趋势与当地(ERP/OA等)系统部署的重要性
近年来,越南逐渐成为全球企业布局的热门目的地之一。许多企业纷纷选择在越南设立工厂,以利用其低廉的劳动力成本和优越的地理位置。随着企业在越南的扩张,对于当地部署ERP系统或OA系统等的需求也日益增长。在这种情况下,租用越南服…...

IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...