图解面试题:SQL存储过程有什么用?

简介:

面试中有时候会问:存储过程有什么用?看了今天的知识,你就知道如何回答了。

1.存储过程是什么?

假如你每天要开车完成一些列重复的操作:车钥匙启动车,倒车。现在出现了一款新车,可以自动的完成这些重复的工作。每次你上车以后,车就自动帮助你倒出来了。

同样的,在工作里也会经常遇到重复性的工作,这时候就可以把常用的SQL写好存储起来,这就是存储过程。

这样下次遇到同样的问题,直接使用存储过程就可以了,就不需要再重新写一遍SQL了,这就极大的提高了工作效率。

2.如何使用存储过程?

使用存储过程需要:1)先定义存储过程 2)使用已经定义好的存储过程。

(1)无参数的存储过程

定义存储过程的语法形式:

create procedure 存储过程名称()
begin
;
end;

语法里的begin...end用于表示sql语句的开始和结束。语法里面的就是重复使用的sql语句。下面通过一个例子看下如何使用。例如查出“学生表”里的学生姓名。

sql语句是:

select 姓名
from 学生表;

把这个sql语句放入存储过程的语法里,并给这个存储过程起个名字叫做就a_stuent1:

create procedure a_stuent1()
begin
select 姓名
from 学生表;
end;

在navicat里允许以后,建立的存储过程就会在下图的地方:

下次使用存储过程的用下面sql语句就可以,就不需要重新写一遍sql了。

call 存储过程名称();

(2)有参数的存储过程

前面的存储过程名称后面是(),括号里面没有参数。当括号里面有参数时,就是下面的语法:
create procedure 存储过程名称(参数1,参数2,...)
begin
;
end;

通过一个案例看下,现在要在“学生表”里查找出指定学号的学生姓名。如果指定学号是0001,那么sql语句是:

select 姓名
from 学生表
where 学号='0001';

现在问题来了,一开始不知道指定学号是哪一个,只有使用的时候才知道业务需求。比如今天要查找学号0001,明天要查找学号002。这时候就需要用到参数,来灵活应对这种情况。把sql语句放入存储过程语法里就是:

create procedure getNum(num varchar(100))
begin
select 姓名
from 学生表
where 学号=num;
end;

其中getNum是存储过程的名称,后面括号里面的num varchar(100)是参数,参数由2部分组成:参数名称是num;参数类型是是varchar(100),这里表示是字符串类型。

存储过程里面的sql语句(where 学号=num)使用了这个参数num。这样在使用存储过程的时候,给定参数的值就可以灵活的按业务需求来查询了。

比如现在要查询学号=0001的学生姓名,那么就在使用存储过程的参数中给出学号的值,也就是下面括号里的0001:

call getNum(0001);

3)默认参数的存储过程

前面的存储过程名称后面是(参数1,参数2),括号里面只包含参数的类型和名字,方便调用。

存储过程还一种情况是有默认参数,是下面的语法。

in 输入参数:参数初始值在存储过程前被指定为默认值,在存储过程中修改该参数的值不能被返回。

out输出参数:参数初始值为空,该值可在存储过程内部被改变,并可返回

inout输入输出参数:参数初始值在存储过程前被指定为默认值,并且可在存储过程中被改变和在调用完毕后可被返回

3.有哪些注意事项

1)定义存储过程语法里的SQL语句代码块必须是完整的sql语句,必须用“;”结尾

create procedure 存储过程名称(参数1,参数2,...)
begin
;
end;

2)定义不同的存储过程,要使用不同的存储过程名称,相同的存储过程的名字会引起系统报错。

4.存储过程有什么用?

如果业务比较复杂、重复性工作比较多,存储过程会比较实用。

把重复要做的事情整理成一步一步的业务步骤,然后把业务步骤写成sql语句,然后再把sql语句写到存储过程的语法里。就像自动驾驶一样,把可能遇到的状况提前规划好,就不需要自己操纵方向盘,车子就按照我们写的步骤向前开了。

推荐:如何从零学会sql?

相关文章
|
1月前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第18天】SQL Server 存储过程具有提高性能、增强安全性、代码复用和易于维护等优点。它可以减少编译时间和网络传输开销,通过权限控制和参数验证提升安全性,支持代码共享和复用,并且便于维护和版本管理。然而,存储过程也存在可移植性差、开发和调试复杂、版本管理问题、性能调优困难和依赖数据库服务器等缺点。使用时需根据具体需求权衡利弊。
|
9天前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
1月前
|
存储 SQL 缓存
SQL Server存储过程的优缺点
【10月更文挑战第22天】存储过程具有代码复用性高、性能优化、增强数据安全性、提高可维护性和减少网络流量等优点,但也存在调试困难、移植性差、增加数据库服务器负载和版本控制复杂等缺点。
|
1月前
|
存储 SQL 数据库
Sql Server 存储过程怎么找 存储过程内容
Sql Server 存储过程怎么找 存储过程内容
32 1
|
1月前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第17天】SQL Server 存储过程是预编译的 SQL 语句集,存于数据库中,可重复调用。它能提高性能、增强安全性和可维护性,但也有可移植性差、开发调试复杂及可能影响数据库性能等缺点。使用时需权衡利弊。
|
1月前
|
存储 SQL 数据库
SQL Server 临时存储过程及示例
SQL Server 临时存储过程及示例
52 3
|
1月前
|
存储 SQL 安全
|
1月前
|
存储 SQL 数据库
使用SQL创建视图和存储过程
使用SQL创建视图和存储过程
17 0
|
3月前
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
41 1
|
3月前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
115 0