存储过程

需要MySQL 5 MySQL 5添加了对存储过程的支持,因此,本章内容适用于MySQL 5及以后的版本。

迄今为止,使用的大多数SQL语句都是针对一个或多个表的单条语句。并非所有操作都这么简单,经常会有一个完整的操作需要多条语句才能完成。例如,考虑以下的情形。

1.为了处理订单,需要核对以保证库存中有相应的物品。

2.如果库存有物品,这些物品需要预定以便不将它们再卖给别的人,并且要减少可用的物品数量以反映正确的库存量。

3.库存中没有的物品需要订购,这需要与供应商进行某种交互。

4.关于哪些物品入库(并且可以立即发货)和哪些物品退订,需要通知相应的客户。

这显然不是一个完整的例子,它甚至超出了本书中所用样例表的范围,但足以帮助表达我们的意思了。执行这个处理需要针对许多表的多条MySQL语句。此外,需要执行的具体语句及其次序也不是固定的,它们可能会(和将)根据哪些物品在库存中哪些不在而变化。

那么,怎样编写此代码?可以单独编写每条语句,并根据结果有条件地执行另外的语句。在每次需要这个处理时(以及每个需要它的应用中)都必须做这些工作。

可以创建存储过程。存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理。

为什么要使用存储过程

既然我们知道了什么是存储过程,那么为什么要使用它们呢?有许多理由,下面列出一些主要的理由。

1.通过把处理封装在容易使用的单元中,简化复杂的操作。

2.由于不要求反复建立一系列处理步骤,这保证了数据的完整性。如果所有开发人员和应用程序都使用同一(试验和测试)存储过程,则所使用的代码都是相同的。这一点的延伸就是防止错误。需要执行的步骤越多,出错的可能性就越大。防止错误保证了数据的一致性。

3.简化对变动的管理。如果表名、列名或业务逻辑(或别的内容)有变化,只需要更改存储过程的代码。使用它的人员甚至不需要知道这些变化。这一点的延伸就是安全性。通过存储过程限制对基础数据的访问减少了数据讹误(无意识的或别的原因所导致的数据讹误)的机会。

4.提高性能。因为使用存储过程比使用单独的SQL语句要快。

5.存在一些只能用在单个请求中的MySQL元素和特性,存储过程可以使用它们来编写功能更强更灵活的代码。换句话说,使用存储过程有3个主要的好处,即简单、安全、高性能。显然,它们都很重要。不过,在将SQL代码转换为存储过程前,也必须知道它的一些缺陷。

6.一般来说,存储过程的编写比基本SQL语句复杂,编写存储过程需要更高的技能,更丰富的经验。

7.你可能没有创建存储过程的安全访问权限。许多数据库管理员限制存储过程的创建权限,允许用户使用存储过程,但不允许他们创建存储过程。尽管有这些缺陷,存储过程还是非常有用的,并且应该尽可能地使用。

不能编写存储过程?你依然可以使用MySQL将编写存储过程的安全和访问与执行存储过程的安全和访问区分开来。这是好事情。即使你不能(或不想)编写自己的存储过程,也仍然可以在适当的时候执行别的存储过程。

mysql 使用储存过程_为什么使用mysql储存过程?mysql储存过程简介相关推荐

  1. mysql 默认当前时间_复制信息记录表|全方位认识 mysql 系统库

    在上一期<时区信息记录表|全方位认识 mysql 系统库>中,我们详细介绍了mysql系统库中的时区信息记录表,本期我们将为大家带来系列第七篇<复制信息记录表|全方位认识 mysql ...

  2. mysql 导出dmp文件_一文带你了解MySQL主从复制(Master-Slave)

    1.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...

  3. mysql数据库版本常用_推荐:经典版本常用MySQL的命令集锦_MySQL

    本文概括了网络上众多常用MySQL命令,讲述过程详细明了. 一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口, ...

  4. mysql删除端口配置文件_完美解决phpstudy安装后mysql无法启动(无需删除原数据库,无需更改任何配置,无需更改端口)直接共存...

    今天学习php,当然是要先安装好运行环境了,phpstyudy是一个运行php的集成环境, 一键安装对新手很友好,与时作为一个新手,便跟着教程安装了phpstudy集成环境. 很快安装好了,嗯.对新手 ...

  5. ubuntu 更新mysql后无法登陆_更新ubuntu之后无法登陆mysql

    Ubuntu 14.04,更新一些软件之后莫名其妙的mysql无法登陆了,一直显示:"Access denied for user 'root'@'localhost'" 重置ro ...

  6. mysql 密码hash算法_如何用hash创建一个mySQL用户(‘sha256’,$salt.$password)?

    我肯定错过了什么. 我想为select-only事务设置数据库用户帐户,但mysql不允许我在创建用户帐户时选择密码的哈希方法. 这失败了: GRANT SELECT ON myDB.* TO 'se ...

  7. mysql主从架构搭建_技术 | 手把手教你搭建MySQL主从架构

    1 什么是MySQL的复制 MySQL的主从复制可以实现将数据从一台数据库服务器(master)复制到一台或多台数据库服务器(slave)上,进而可以保证数据有多份冗余. 默认情况下,属于异步复制,所 ...

  8. 安装mysql后环境变量_环境变量配置2 安装mysql

    安装个低版本的5.5 net start mysql  启动 安装好直接执行mysql 然后执行mysql -uroot -proot 注意不要被误导:这里的mysql -uroot -p后的root ...

  9. mysql 数据增量抽取_通过Maxwell实时增量抽取MySQL binlog并通过stdout展示

    下载,解压Maxwell 修改MySQL的配置文件my.cnf [root@hadoop000 etc]# vi my.cnf [mysqld] server-id = 1binlog_format= ...

  10. mysql 最大连接 修改_常用的三种修改mysql最大连接数的方法

    MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MYSQL连接数的方法有两个 方法一:进入MYSQL安装目录 打开MYSQL配置文件 ...

最新文章

  1. 对联广告,带关闭,可以移动
  2. BZOJ1112[POI2008]砖块Klo——非旋转treap
  3. Spring MVC_HandlerInterceptorAdapter的使用
  4. Oracle 创建主键自增表
  5. [Abp 源码分析]多租户体系与权限验证
  6. 中邮智递通过数加和datav将系统和服务迁移到大数据平台
  7. 华为智能计算发布FusionServer Pro智能服务器
  8. PostgreSQL条件表达式 case when then end
  9. 如何解除FSO上传程序小于200k限制?
  10. 丽水数据可视化设计价格_B端产品设计数据可视化图表选择篇
  11. 大数据技术如何实现核心价值
  12. Scala中的Apply方法与伴生对象
  13. 重写了GVBASIC模拟器
  14. 反转字符串的多种方式-经典面试题系列
  15. 易语言教你制作onoQQ机器人
  16. eos 源代码学习笔记二
  17. Windows下利用N2N访问内网资源,点对网的实现
  18. CSS的前景色和背景色,高度和宽度,字体属性,文本阴影,抖音字体
  19. 头歌实践教学平台——python程序设计——元组的使用
  20. 乐视电商云的整体架构与技术实现

热门文章

  1. 云原生时代,开发者如何构筑容器安全?
  2. 开启企业级市场转型之路 群晖亮出安全“杀手锏”
  3. 牛顿迭代法c 语言程序,牛顿迭代法 c语言实现
  4. file_get_contents请求失败处理_SpringCloud Gateway网关处理请求过程中遇到400Bad Request问题解决方案...
  5. nginx配置多个conf文件
  6. (需求实战_终章) SpringBoot2.x 整合RabbitMQ
  7. flowable 启动流程到完成所有任务之间的数据库变化
  8. 第2篇:Flowable快速工作流脚手架Jsite_配置项目
  9. Centos7 查看/关闭/启动防火墙
  10. HTTP系列学习(笔记二):HTTPS与HTTP的区别在哪?