开发者社区> auqbllxiu> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

47 张图带你 MySQL 进阶!!!(四)

简介: 主要介绍了基本的 SQL 命令、数据类型和函数,在具备以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我们就来探讨一下 MySQL 都需要哪些高级的技能
+关注继续查看

存储过程


MySQL 从 5.0 开始起就支持存储过程和函数了。

那么什么是存储过程呢?

「存储过程是在数据库系统中完成一组特定功能的 SQL 语句集」,它存储在数据库系统中,一次编译后永久有效。那么使用存储过程有什么优点呢?

  • 使用存储过程具有可封装性,能够隐藏复杂的 SQL 逻辑。
  • 存储过程可以接收参数,并返回结果
  • 存储过程性能非常高,一般用于批量执行语句

使用存储过程有什么缺点?

  • 存储过程编写复杂
  • 存储过程对数据库的依赖性比较强,可移植性比较差


存储过程使用


存储过程创建


在认识到存储过程是什么之后,我们就来使用一下存储过程,这里需要先了解一个小技巧,也就是 delimiter 的用法,delimiter 用于自定义结束符,什么意思呢,如果你使用

delimiter $$

的话,那么你在 sql 语句末使用 ; 是不能使 SQL 语句执行的,不信?我们可以看下

35.png

可以看到,我们在 SQL 语句的行末使用了 ; 但是我们却没有看到执行结果。下面我们使用

delimiter ;

恢复默认的执行条件再来看下

36.png

我们创建存储过程首先要把 ; 替换为 $$,下面是一个存储过程的创建语句

mysql> delimiter $$

mysql> create procedure sp_product()
-> begin
-> select * from product;
-> end $$</span></span></pre></div></div></div><p style="text-align:center;font-size:14px;color:rgb( 38 , 38 , 38 );line-height:1.74;letter-spacing:0.05em;outline-style:none;margin:0px"><span class="lake-card-margin-top lake-card-margin-bottom"><img src="https://ucc.alicdn.com/pic/developer-ecology/0d61dd36cd9545c5853520edf026bff4.png" class="image lake-drag-image" alt="37.png" title="37.png" style="width:805px" /></span></p><p style="font-size:14px;color:rgb( 38 , 38 , 38 );line-height:1.74;letter-spacing:0.05em;outline-style:none;margin:0px">存储过程实际上是一种函数&#xff0c;所以创建完毕后&#xff0c;我们可以使用 <code style="font-family:monospace;font-size:inherit;background-color:rgba( 0 , 0 , 0 , 0.06 );padding:0px 2px;border:1px solid rgba( 0 , 0 , 0 , 0.08 );border-radius:2px;line-height:inherit;text-indent:0px">call</code> 方法来调用这个存储过程</p><p style="text-align:center;font-size:14px;color:rgb( 38 , 38 , 38 );line-height:1.74;letter-spacing:0.05em;outline-style:none;margin:0px"><span class="lake-card-margin-top lake-card-margin-bottom"><img src="https://ucc.alicdn.com/pic/developer-ecology/4e0e7f60cb524a49901843d87e7efa8e.png" class="image lake-drag-image" alt="38.png" title="38.png" style="width:836px" /></span></p><p style="font-size:14px;color:rgb( 38 , 38 , 38 );line-height:1.74;letter-spacing:0.05em;outline-style:none;margin:0px">因为我们上面定义了使用 delimiter $$ 来结尾,所以这里也应该使用。

存储过程也可以接受参数,比如我们定义一种接收参数的情况

39.png

然后我们使用 call 调用这个存储过程

40.png

可以看到,当我们调用 id = 2 的时候,存储过程的 SQL 语句相当于是

select * from product where id = 2;

所以只查询出 id = 2 的结果。


存储过程删除


一次只能删除一个存储过程,删除存储过程的语法如下

drop procedure sp_product ;

直接使用 sp_product 就可以了,不用加 ()


存储过程查看


存储过程创建后,用户可能需要需要查看存储过程的状态等信息,便于了解存储过程的基本情况

我们可以使用

show create procedure proc_name;


变量的使用


在 MySQL 中,变量可分为两大类,即系统变量用户变量,这是一种粗略的分法。但是根据实际应用又被细化为四种类型,即局部变量、用户变量、会话变量和全局变量。


用户变量


用户变量是基于会话变量实现的,可以暂存,用户变量与连接有关,也就是说一个客户端定义的变量不能被其他客户端使用看到。当客户端退出时,链接会自动释放。我们可以使用 set 语句设置一个变量

set @myId = "cxuan";

然后使用 select 查询条件可以查询出我们刚刚设置的用户变量

41.png

用户变量是和客户端有关系,当我们退出后,这个变量会自动消失,现在我们退出客户端

exit

现在我们重新登陆客户端,再次使用 select 条件查询

42.png

发现已经没有这个 @myId 了。


局部变量


MySQL 中的局部变量与 Java 很类似 ,Java 中的局部变量是 Java 所在的方法或者代码块,而 MySQL 中的局部变量作用域是所在的存储过程。MySQL 局部变量使用 declare 来声明。


会话变量


服务器会为每个连接的客户端维护一个会话变量。可以使用

show session variables;

显示所有的会话变量。

我们可以手动设置会话变量

set session auto_increment_increment=1;
或者使用
set @@session.auto_increment_increment=2;

然后进行查询,查询会话变量使用

43.png

或者使用

44.png

            </div>

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
138 张图带你 MySQL 入门(4)
138 张图带你 MySQL 入门(4)
8 0
47 张图带你 MySQL 进阶!!!(一)
主要介绍了基本的 SQL 命令、数据类型和函数,在具备以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我们就来探讨一下 MySQL 都需要哪些高级的技能
18 0
138 张图带你 MySQL 入门(4)
138 张图带你 MySQL 入门(4)
10 0
47 张图带你 MySQL 进阶!!!(一)
主要介绍了基本的 SQL 命令、数据类型和函数,在具备以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我们就来探讨一下 MySQL 都需要哪些高级的技能
25 0
47 张图带你 MySQL 进阶!!!(五)
主要介绍了基本的 SQL 命令、数据类型和函数,在具备以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我们就来探讨一下 MySQL 都需要哪些高级的技能
21 0
47 张图带你 MySQL 进阶!!!(一)
主要介绍了基本的 SQL 命令、数据类型和函数,在具备以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我们就来探讨一下 MySQL 都需要哪些高级的技能
15 0
138 张图带你 MySQL 入门(4)
138 张图带你 MySQL 入门(4)
10 0
47 张图带你 MySQL 进阶!!!(三)
主要介绍了基本的 SQL 命令、数据类型和函数,在具备以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我们就来探讨一下 MySQL 都需要哪些高级的技能
23 0
47 张图带你 MySQL 进阶!!!(一)
主要介绍了基本的 SQL 命令、数据类型和函数,在具备以上知识后,你就可以进行 MySQL 的开发工作了,但是如果要成为一个合格的开发人员,你还要具备一些更高级的技能,下面我们就来探讨一下 MySQL 都需要哪些高级的技能
27 0
138 张图带你 MySQL 入门(4)
138 张图带你 MySQL 入门(4)
34 0
+关注
2664
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载