java的大型网站建设/宁波seo托管公司
使用存储过程
存储过程
简单来说就是为了以后的使用而保存的一条或多条MySQL语句的集合。
我觉得就是封装了一组sql语句
为什么需要存储过程(简单来说就是,简单、安全、高性能
- 通过把处理封装在容易使用的单元中,简化复杂操作
- 所有开发人员和应用程序都是用同一存储过i成,则使用的sql语句都是一样的,保证了数据的完整性(防止数据库中存在不正确的数据
- 简化对变动的管理,保证了数据库的安全性(防止数据库中存在不正确的数据
- 提高了性能
- 增加了代码功能的灵活性
执行存储过程
CALL procedure_name(参数);
创建存储过程
CREATE POCEDURE procedure_name()
BEGINSQL语句
END
MYSQL命令行客户机的分隔符
默认的MYSQL语句分割符为 ;
如果希望自定义分隔符,可以使用 DELIMITER
关键字
DELIMITER //
CREATE PROCEDURE procedure_name
BEGINSQL 语句
END //DELIMITER ;
存储过程实际上是一种函数,所以存储过程名后边需要有 ()
删除存储过程
存储过程在创建之后,被保存在服务器上以供使用,直到被删除
DROP PROCEDURE procedure_name;
注意,只需要给出存储过程名,不需要加 ()
使用参数
变量
内存中的一个特定的位置,用来临时存储数据
参数的数据类型
存储过程的参数允许的数据类型与表中使用的数据类型相同
变量名
MYSQL中所有变量都必须以@
开始
游标
为什么需要游标
MySQL检索操作,返回一组成为结果集的行,有时,需要在检索出来的行中前进或者后退几行,这就需要游标
游标的定义
游标是一个存储在MySQL服务器上的数据库查询,它是被语句查询出来的结果集
在存储了游标以后,应用程序可以根据需要滚动或浏览器中的数据
游标主要用于交互式应用,其中用户需要滚动屏幕上的数据,并对数据进行浏览或做出更改
使用游标
- 使用游标前,需要声明游标,这个过程实际上没有检索数据,只是定义要使用的
select
语句 - 声明游标以后,需要将它打开来使用,这个过程会使用上一步定义的
select
语句把数据实际检索出来 - 对于填有数据的游标,根据需要取出各行
- 在结束游标使用时,必须关闭游标
创建游标
CREATE PROCEDURE procedure_name
BEGINDECLARE vernier_name CURSORFORSELECT语句
END
打开和关闭游标
OPEN vernier_nameCLOSE vernier_name
在一个游标关闭后,如果没有重新打开,则不能使用他
但是,声明过的游标,关闭后不需要再次声明
隐含关闭,如果你不明确关闭游标,MySQL会在 END
语句使,自动关闭游标
使用游标数据
当一个游标被打开后,可以使用FETCH
来访问他的每一行
FETCH
指定检索什么数据,检索出来的数据存储在什么地方,还可以向前移动游标中的内部行指针,使下一条FETCH
语句检索下一行
DECLARE vernier_name CURSOR
FOR
SELECT语句OPEN vernier_nameDECLARE O INT
REPEATFETCH vernier_name INTO O
UNTIL condition END REPEATCLOSE vernier_name
DECLARE
语句的次序
局部变量 > 游标 > 句柄
触发器
为什么需要触发器
有时需要,某个表发生改动时,自动处理,这种情况下,就需要触发器
MySQL中可以触发触发器的语句
DELETE\INSERT\UPDATE
创建触发器
触发器需要在每个表中唯一命名,但不需要在每个数据库中唯一,即数据库中的两个表可具有相同名字的触发器
CREATE TRIGGER trigger_name AFTER/BEFORE operation ON table_name
FOR EACH ROW
只有表才支持触发器,视图不支持
触发器按每个表每个事件每次定义,每个表每个事件每次只允许一个触发器
每个表最多支持6个触发器(3种操作 * ( before || after ) = 6
单一触发器不能与多个事件或多个表关联
删除触发器
触发器的类型
- INSERT
- 在
INSERT
触发器代码内,可以引用一个名为NEW
的虚拟表,访问被插入的行, - 在
before insert
触发器中,new
的值也可以被更新, - 对于
auto_increment
列,new
在insert
执行前包含0,在INSERT
执行后包含新的自动生成值
- 在
- DELET
- 在
DELET
触发器代码内,可以引用一个名为OLD
的虚拟表,访问被删除的行 OLD
中的值全部都是只读的,不能更新
- 在
- UPDATE
- 在
UPDATE
触发器代码中,可以引用OLD
虚拟表访问UPDATE
前的值,引用NEW
虚拟表,访问新更新的值 - 在
BEFORE UPDATE
触发器中,NEW
中的值可能也被更新 OLD
中的值全部都是只读的,不能更新
- 在
触发器的使用要点
- 创建触发器可能需要特殊的安全访问权限
- 应该用触发器来保重数据的一致性
- 触发器的一种非常有意义的使用是创建审计和跟踪
- 触发器中不能调用存储过程
管理事务处理
COMMIT
&ROLLBACK
事务管理
并非所有的引擎都支持事务处理,MyISAM
不支持事务处理,InnoDB
支持事务处理
事务处理
用于维护数据库的完整性,保证成批的MySQL操作要么完全执行,要么完全不执行
事务:指一组SQL语句
回退:被撤销指定SQL语句的过程
提交:将未存储的SQL语句结果写入数据库
保留点:事务处理中设置的临时占位符,可以对他发布回退
控制事务处理
管理事务处理的关键在于,将SQL语句组分解为逻辑块,并明确规定数据和是应该回退,何时不应该回退
SELECT * FROM table_name;
START TRANSACTION;
DELETE FROM table_name;
SELECT * FROM table_name;
ROLLBACK;
SELECT * FROM order_name;
使用COMMIT
隐含提交:一般的MySQL语句都是直接针对数据库表执行和编写的,即提交操作是自动进行的
隐含事务关闭:当COOMIT
和ROLLBACK
语句执行后,是误会自动关闭
使用保留点
为了支持回退部分事务处理,可以在事务处理块中的合适位置防止占位符,如果需要回退,可以回退到某个占位符
保留点越多越好:可以在MySQL代码中设置任意多的保留点,保留点越多,你就越能按自己的意愿灵活的进行回退
释放保留点:保留点在事务处理完成后自动释放,也可以使用RELEASE SAVEPOINT
明确的释放保留点
更改默认的提交行为
SET autocommit=0;
autocommit
标志决定是否自动提交更改,不管有没有COMMIT
语句
autocommit
针对每个连接,而不是服务器
相关文章:

MySQL必知必会 | 存储过程、游标、触发器
使用存储过程 存储过程 简单来说就是为了以后的使用而保存的一条或多条MySQL语句的集合。 我觉得就是封装了一组sql语句 为什么需要存储过程(简单来说就是,简单、安全、高性能 通过把处理封装在容易使用的单元中,简化复杂操作所有开发人员…...

优化Facebook广告ROI的数据驱动方法:从投放到运营
“投放广告并不是最终的目的,关键在于如何最大程度地利用数据驱动的方法来提高广告投放的回报率(ROI)”Facebook广告是现代数字营销中最为常见和重要的广告形式之一。但是,要让Facebook广告真正发挥作用,需要通过数据驱…...

动态规划入门经典问题讲解
最近开始接触动态规划问题,以下浅谈(或回顾)一下这些问题的求解过程。解题思路对于动态规划问题,由于最终问题的求解需要以同类子问题作为基础,故需要定义一个dp数组(一维或二维)来记录问题求解…...

快速入门深度学习1(用时1h)
速通《动手学深度学习》1写在最前面0.内容与结构1.深度学习简介1.1 问题引入1.2 思路:逆向思考1.3 跳过1.4 特点1.5 小结2.预备知识(MXNet版本,学错了。。。。)2.1 获取和运行本书的代码2.2 数据操作2.2.1 略过2.2.2 小结2.3 自动…...

PaddleOCR关键信息抽取(KIE)的训练(SER训练和RE训练)错误汇总
1.SER训练报错: SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception 1.1.问题描述 在执行训练任务的时候报错 单卡训练 python3 tools/train.py -c train_data/my_data/ser_vi_layoutxlm_xfund_zh.yml错误信息如下: T…...

信息收集之搜索引擎
Google Hacking 也可以用百度,不过谷歌的搜索引擎更强大 site 功能:搜索指定域名的网页内容,可以用来搜索子域名、跟此域名相关的内容 示例: site:zhihu.com 搜索跟zhihu.com相关的网页“web安全” site:zhihu.com 搜索zhihu…...

Flutter(四)布局类组件
目录布局类组件简介布局原理与约束线性布局(Row和Column)弹性布局流式布局(Wrap、Flow)层叠布局(Stack、Positioned)对齐与相对定位(Align)Align和Stack对比Center组件LayoutBuilder…...

【黑马】Java基础从入门到起飞目录合集
视频链接: Java入门到起飞(上部):BV17F411T7AoJava入门到起飞(下部):BV1yW4y1Y7Ms 学习时间: 2023/02/01 —— 2023/03/09断断续续的学习,历时大概37天,完结撒…...

PMP考前冲刺3.10 | 2023新征程,一举拿证
题目1-2:1.在最近的一次耗时四周的迭代中,赫克托尔所在的敏捷团队刚完成了10 个用户故事点的开发、测试和发布,那么团队的速度是?A. 10B. 4C. 5D.402.产品负责人奥佩,倾向于在短周期内看到工作产品的新版本,…...

JavaScript Math常用方法
math是JavaScript的一个内置对象,它提供了一些数学属性和方法,可以对数字进行计算(用于Number类型)。 math和其他全局对象不同,它不是一个构造器,math的所有方法和属性都是静态的,直接使用并传入…...

【C++】模板进阶
文章目录一、非类型模板参数1、非类型模板参数2、C11 中的 array 类二、模板的特化1、模板特化的概念2、函数模板特化3、类模板特化3.1 全特化3.2 偏特化三、模板的分离编译四、模板总结一、非类型模板参数 1、非类型模板参数 模板参数分为类型形参与非类型形参,类…...

三板斧解决leetcode的链表题
在《波奇学单链表》中我们提到单链表的两个特点单向性。头节点尾节点的特殊性导致分类讨论的情况。如何看单链表?让我们简化成下图cur表示当前节点,下图表示cur移动,圆圈表示值用哨兵卫节点(新的头节点)和把尾节点看成NULL来把头尾节点一般化…...

全生命周期的云原生安全框架
本博客地址:https://security.blog.csdn.net/article/details/129423036 一、全生命周期的云原生安全框架 如图所示: 二、框架说明 在上图中,我们从两个维度描述各个安全机制,横轴是开发和运营阶段,细分为编码、测试…...

【本地网站上线】ubuntu搭建web站点,并内网穿透发布公网访问
【本地网站上线】ubuntu搭建web站点,并内网穿透发布公网访问前言1. 本地环境服务搭建2. 局域网测试访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问4. 配置固定二级子域名4.1 保留一个二级子域名4.2 配置二级子域名4.3 测试访问公网固定二级子…...

电脑怎么重装系统?教你轻松掌握这些方法
重新安装计算机系统有两种原因:一种是计算机系统可以正常使用,但是电脑比较卡,为了提高它的运行速度,所以想要通过重新安装系统来解决这个问题;另一种原因是计算机系统文件丢失,系统出现蓝屏,或者黑屏的情况…...

leetcode-每日一题-2379(简单,字符串)
久违的简单题......给你一个长度为 n 下标从 0 开始的字符串 blocks ,blocks[i] 要么是 W 要么是 B ,表示第 i 块的颜色。字符 W 和 B 分别表示白色和黑色。给你一个整数 k ,表示想要 连续 黑色块的数目。每一次操作中,你可以选择…...

SLF4J日志框架在项目中使用
介绍 SLF4J全称“Simple Logging Facade for Java”,作为各种日志框架的简单门面。例如: java.util.logging、logback 、 reload4j等。只需要切换日志框架的jar包依赖就可以切换日志框架。 SLF4J支持的日志框架包含如下: log4j:…...

Spark MLlib 模型训练
Spark MLlib 模型训练决策树随机森林GBDTSpark MLlib 开发框架下 : 监督学习 : 回归 (Regression) , 分类 (Classification) , 协同过滤 (Collaborative Filtering)非监督学习 : 聚类 (Clustering) 、频繁项集 (Frequency Patterns) 例子分类 : 算法分类 : 算法分类算法子分类…...

Python中变量的作用域精讲
文章目录前言一、局部变量二、全局变量前言 变量的作用域是指程序代码能够访问该变量的区域,如果超出该区域,再访问时就会出现错误。在程序中,一般会根据变量的 “有效范围” 将变量分为 “全局变量” 和 “局部变量”。 一、局部变量 局部变…...

数据仓库工程师的工作职责的相关介绍
1. BI 开发工程师的工作内容是什么? BI开发工程师(Business Intelligence Developer)是负责设计和开发企业级BI系统的专业人员。他们的主要工作是从多个数据源中提取、转换、加载和分析数据,以支持企业决策。以下是BI开发工程师的…...

ESP UART 介绍
1 UART 介绍 UART 是一种以字符为导向的通用数据链,可以实现设备间的通信。异步传输的意思是不需要在发送数据上添加时钟信息。这也要求发送端和接收端的速率、停止位、奇偶校验位等都要相同,通信才能成功。 1.1 UART 通信协议 一个典型的 UART 帧开始…...

第十三届蓝桥杯省赛Python大学B组复盘
目录 一、试题B:寻找整数 1、题目描述 2、我的想法 3、官方题解 4、另解 二、试题E:蜂巢 1、题目描述 2、我的想法 3、官方题解 三、试题F:消除游戏 1、题目描述 2、我的想法(AC掉58.3%,剩下全超时&#x…...

linux入门---vim的配置
这里写目录标题预备知识如何配置vimvim一键配置预备知识 在配置vim之前大家首先得知道一件事就是vim的配置是一人一份的,每个用户配置的vim都是自己的vim,不会影响到其他人,比如说用户xbb配置的vim是不会影响到用户wj的,虽然不同…...

Python简写操作(for、if简写、匿名函数)
Python简写操作(for、if简写、匿名函数)1. for 简写1.1 一层 for 循环1.2 两层 for 循环2. if 简写3. for 与 if 的结合简写4. 匿名函数 lambda1. for 简写 举个例子: y [1, 2, 3, 4, 5, 6] result [(i * 2) for i in y] print(result)# …...

毕业设计常用模块之温湿度模块DHT11模块使用
DHT11是一款可以测量温度数据和湿度数据的传感器 产品特点 暖通空调、除湿器、农业、冷链仓储、测试及检测设备、消费品、汽车、自动控制、数据记录器、气 象站、家电、湿度调节器、医疗、其他相关湿度检测控制 外形尺寸 第3管脚:NC 是没有用的 典型电路 通信方式…...

Cadence Allegro 导出Design Rules Net Shorts Check(DRC)Report报告详解
⏪《上一篇》 🏡《上级目录》 ⏩《下一篇》 目录 1,概述2,Design Rules Net Shorts Check(DRC)Report作用3,Design Rules Net Shorts Check(DRC)Report示例4,Design Rules Net Shorts Check(DRC)Report导出方法4.1,方法14.2,方法2...

第 46 届世界技能大赛浙江省选拔赛“网络安全“项目C模块任务书
第46届世界技能大赛浙江省选拔赛"网络安全"项目C模块(夺旗行动(CTF)挑战)第46届世界技能大赛浙江省选拔赛"网络安全"项目C模块第一部分 WEB第二部分 CRYPTO第三部分 REVERSE第四部分 MISC第五部分 PWN第46届世…...

C++:详解C++11 线程(一):MingGW 各版本区别及安装说明
MingGW 各版本区别一:MinGW、MinGW-w64 简介二:MinGW 各版本参数说明三:下载解压一:MinGW、MinGW-w64 简介 MinGW(全称为 Minimalist GNU for Windows),它实际上是将经典的开源 C 语言编译器 G…...

第十二章 ArrayList和 LinkedList的区别
ArrayList:基于动态数组(自动扩容),连续内存存储,由于底层是数组,适合使用下标进行访问,但扩容一直都是数组的缺点,所以使用尾插法进行扩容可以有效提高扩容效率。还有就是创建Array…...

案例06-复用思想的接口和SQL
目录 一:背景介绍 二:思路&方案 三:过程 1.Controller层接口的复用 2.Mapper层sql语句的复用 四:总结 一:背景介绍 我们在开发项目的过程中非常容易出现的一种现象就是用什么我就直接写什么,就像我…...