SQL存储过程本文将考虑从MySQL透视中考虑存储过程和准备的陈述。它将依次审查并讨论其相似之处及其差异,他们的个人优势和劣势,他们解决了哪些特殊问题,以及它们如何最好地利用?

如果你想了解MySQL,可以上Udemy.com的课程

MySQL存储的程序

存储过程(SP)是用SQL编写的服务器端过程,其存储在数据库中,可由数据库引擎直接访问。它也通过编程语言连接公开给客户端应用程序。服务器端存储过程提供典型客户端逻辑处理的许多优点。显而易见的是,在网络上传播的流量减少,这是诱导瓶颈的主要延迟涉及应用程序性能 - 或者至少对性能的看法。

客户端处理的另一个性能问题是,它们仍然需要向数据库发送完整的文本查询。服务器端上的DB驱动程序仍然需要在每次调用查询语句时进行解析、分析、计划和优化。将过程存储在服务器上要高效得多,DB引擎可以对过程进行一次预编译和分析,然后将其提交到缓存中并直接运行。

第三个优点是“一次编写,处处执行”的原则。程序员可以用SQL编写并将其存储在数据库中。然后,它可以被任何连接的客户机编程语言调用。这使得开发和维护更加流betwayapp下载安装线型和高效,因为只需要编写一个共享过程并进行故障排除。

最后但并非最不重要的是,使用存储过程的主要原因是数据库安全性。存储过程通过将用户对数据库的访问解耦提供了添加的安全性。例如,不需要授予执行权限以外的访问或权限以运行存储过程。

存储过程是在服务器端使用SQL编写的,示例如下所示。

分隔符$ $CREATE PROCEDURE `avg_sal`(out avg_sal decimal)开始Select avg(sal) into avg_sal from salary结束$ $

要了解更多关于MySQL和存储过程的知识,可以在Udemy.com上学习

准备好的语句

准备的陈述(PS)通常与存储过程混淆,因为它们具有相同的核心优势。在大多数情况下,准备的陈述,如储存程序在大多数情况下改善了性能和效率。它们还提供增加的数据库安全性,因为它们从数据中解耦了应用程序逻辑。然而,它们是非常不同的,尽管它们的目的可能是相似的,但它们的方法和力学不是。那么准备好的声明是什么?

MySQL版本4.1及更高版本支持Server-侧的准备语句,它利用增强型二进制客户端 - 服务器协议。将客户端 - 服务器流量超出文本格式协议时,二进制协议更有效。这改善了网络性能,因为二进制数据具有比ASCII文本更小的字节大小。

准备好的声明包括三个要素;

准备语句的基本语法如下所示

SELECT name FROM customer_id FROM customers WHERE customer_id = ?SET @pc = '107';执行id使用@pc;释放准备身份证;
  1. 上面的代码通过给语句一个名称(id)来准备执行语句。
  2. 然后它定义了SELECT语句。这里要注意的事情是
  3. ”?,用作名称表达式的占位符。
  4. 接下来,为名称定义变量:设置@PC ='107';
  5. 然后使用名称变量@pc执行查询
  6. 最后,取消分配准备和释放资源

创建了准备好的语句后,客户端将服务器与变量的占位符发送查询的原型。然后服务器解析,分析和处理此骨架查询。这是处理和准备负担,服务器必须使用每个SQL查询。但是,对于准备的语句,服务器存储表示查询的部分结构,并返回到客户端表示该部分处理后查询的语句句柄。然后,客户端可以通过仅发送Server语句句柄和占位符数据重复重复重复查询。

这意味着只有在会话期间的第一个场合,客户端只需要将服务器发送SQL查询的完整主体,并且仅在此场合时,服务器只需要解析,分析和计划执行该语句。随后客户端只发送句柄和变量,​​大大提高了网络性能和效率。同样,服务器只需要查询处理句柄和变量以及所有准备工作已经缓存。

但在使用准备好的语句时要注意一点;它们只在会话期间的本地连接上可用。一旦会话关闭,准备好的语句将被删除并重新分配,会话将持续存在,并在一定程度上缓解这个问题。然而,还有另一种方法可以使准备好的语句具有全局可访问性。

预制语句不需要使用PHP或Java等客户端库。相反,它们可以使用SQL接口。使用SQL接口的情况是MySQL 5及以后版本可以在服务器端存储过程中使用准备好的语句。

这是一个例子:

删除过程如果存在`表:/ adpet_cust`;delimiter \\创建程序`get_cust' BEGIN SET @cid=input;准备ID“选择customer_id,名字从客户customer_id ='';执行id使用@cid;释放准备身份证;结束\ \

嵌套在存储过程中的预处理语句以粗体标记。

那么为什么要使用MySQL准备的陈述?

  1. 为了性能和效率
  2. 对于安全性 - 从数据中解耦逻辑,并强制执行数据类型规则
  3. 用于在存储过程中创建动态SQL

MySQL准备语句提供了一种从客户端编程语言(如VB、PHP和Java)编写高效查询的方法,这些语言利用了MySQL增强的二进制协议。或者,程序员可以选择SQL接口,并在存储过程中嵌套准备好的语句。

了解更多关于MYSQL高级主题在Udemy.com

MySQL的顶级课程

Ultimate MySQL BootCamp:从SQL初学者到专家
柯尔特·斯蒂尔,这是伊恩·斯库诺弗
4.6 (54,594)
畅销书
SQL - MySQL的数据分析和商业智能
365年职业生涯
4.6 (28007)
畅销书
MySQL数据库管理:初学者SQL数据库设计
Maven Analytics, John Pauler
4.6 (1023)
畅销书
SQL数据分析:MySQL商业智能初学者
Maven Analytics, John Pauler
4.7 (3808)
畅销书
MySQL初学者
Vasandkumar Kunasekaran
4.6 (1,527)
高级SQL:MySQL数据分析和商业智能
Maven Analytics, John Pauler
4.7 (1,854)
收视率最高
实用SQL大师班快速面试准备
Prashant Munshi
4.6 (136)
MySQL, SQL和存储过程从初学者到高级
约翰·珀塞尔
4.3 (2624)
畅销书
完整的PHP MYSQL专业课程与5个项目
jazeb akram.
4.3 (2,208)

更MySQL的课程

Mysql学生也会学习

赋予你的团队。引领行业。

使用Udemy for Business订阅在线课程库和数字学习工具。

请求演示