SQL Server——存储过程

什么是存储过程?

是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中

语法格式?

创建:

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

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

[WITH

{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}]

AS 

sql_statement[...n]

删除存储过程

DROP PROCEDURE{procedure}{,...n}

 

为什么要使用存储过程?

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

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

我们都知道一句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='赵雷'

执行结果:

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

发布了42 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43319713/article/details/105460706