SQL Server——为什么要使用存储过程?不使用是什么样的?

目录

思维导图

什么是存储过程?

语法格式?

举例

为什么要使用存储过程?

不使用存储过程是什么样的?

第一步、提交SQL语句。

第二步、语法分析。

第三步、语义分析。

第四步、服务器执行SQL语句。

第五步、返回信息。

使用存储过程是什么样的?

第一步、创建存储过程

第二步、调用存储过程


思维导图

 

什么是存储过程?

是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中。它包含了一系列的SQL语句和控制结构,可以接收输入参数并返回结果

语法格式?

创建:

CREATE PROCEDURE [拥有者.]存储过程名[;程序编号]

[(参数#1,…参数#1024)]

[WITH

{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}]

AS 

sql_statement[...n]

  1. 执行存储过程:使用EXECUTE或CALL语句执行存储过程,并传递参数。
  2. 修改存储过程:使用ALTER PROCEDURE语句修改已存在的存储过程。
  3. 删除存储过程:使用DROP PROCEDURE语句删除存储过程。

举例

-- 创建存储过程
CREATE PROCEDURE GetCustomerOrders
    @CustomerId INT
AS
BEGIN
    SELECT * FROM Orders WHERE CustomerId = @CustomerId
END

-- 执行存储过程
EXECUTE GetCustomerOrders @CustomerId = 1

创建了一个名为GetCustomerOrders的存储过程,接受一个输入参数@CustomerId,并返回该CustomerId对应的订单信息。然后使用EXECUTE语句执行存储过程,并传递参数@CustomerId的值为1

为什么要使用存储过程?

提高数据库执行速度,可能第一次见到这句话的小伙伴们感觉到非常的匪夷所思叭!怎么就提高了它的执行速度捏,从哪方面可以表现出来呢?既然这里要说到的是为什么要使用存储过程,也就是说它的优点是什么。那我们肯定就要对使用和不使用存储过程两方面来进行对比才能看出它的优点对吧。

不使用存储过程是什么样的?

我们都知道一句SQL语句从提交到我们最后看到的结果必然要经过这几步:

                                                    

第一步、提交SQL语句。

用户将编写好的SQL语句点击【执行】,提交给服务器。比如:select SId, Sname, Sage, Ssex from Student where Sid=01这样一条SQL语句

第二步、语法分析。

这时服务器就接收到从客户端发来的请求,服务器肯定要先对发送来的请求进行一个判断,知道你发来的是个什么东西吧,我怎么知道你发来的是好是坏呢?这时就开始进行语法的检查,检查发送来的SQL语句的格式是否正确,查看from关键字后面跟的是不是表名,select关键字后面跟的是不是字段名,书写是否正确,如果不正确就返回错误信息,如果正确就执行下一步

第三步、语义分析。

检查你发送来的SQL语句中的表是否在数据库中存在,所指定的字段是否在表中存在,如果不存在就返回错误信息,如果正确则执行下一步

第四步、服务器执行SQL语句。

经过上述的步骤之后,服务器才知道你发送来的东西是什么, 你想让我干什么。这时服务器就会去相应的表中执行语句,

第五步、返回信息。

光一条普普通通的SQL语句就需要经过以上的这么多个步骤,那如果是我想要同时查询很多条数据呢,如果是上万条数据的话数据库岂不是得执行上万次,那效率多低,时间得多长鸭

但没关系,数据库给我们提供了一个福利,让我们干同样的事情,但效率却大大提升!

使用存储过程是什么样的?

第一步、创建存储过程

create proc p_student      --创建名为p_student的存储过程
@name varchar(10)          --定义变量
as
	select * from student where Sname=@name         --指定变量值为Sname字段

这时,当我们编写好了如上SQL语句之后是不是就要点击执行,服务器依旧像上述SQL语句一样执行上面的五个步骤。当编译成功之后,就存储在了数据库中,当想要查询student表中某个学生的学籍信息时,我们只需调用就能显示出来,而数据库不用再重新编译。编译一次,执行多次

第二步、调用存储过程
--调用姓名为赵雷的学籍信息
exec p_student @name='赵雷'

执行结果:

存储过程的优点包括

  1. 代码复用:存储过程可以在多个地方被调用,避免了重复编写相同的SQL代码。
  2. 性能优化:存储过程在数据库服务器上执行,减少了网络传输的开销,提高了执行效率。
  3. 安全性:存储过程可以对敏感数据进行权限控制,只允许有权限的用户访问和修改数据。
  4. 维护性:存储过程的修改只需要在数据库服务器上进行,不需要修改应用程序代码。

这样是不是就很方便了?减少了我们等待的时间,提高了查询的效率呢?

不同的数据库管理系统对于存储过程的语法和特性可能有所不同,具体的使用方法和语法请参考相应数据库管理系统的文档和官方指南。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小乔努力变强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值