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

47 张图带你 MySQL 进阶!!!

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

47 张图带你 MySQL 进阶!!!

可以看到,当我们调用 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 查询条件可以查询出我们刚刚设置的用户变量

47 张图带你 MySQL 进阶!!!

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

exit

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

47 张图带你 MySQL 进阶!!!

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

局部变量

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

会话变量

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

show session variables;

显示所有的会话变量。

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

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

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

47 张图带你 MySQL 进阶!!!

或者使用

47 张图带你 MySQL 进阶!!!

全局变量

当服务启动时,它将所有全局变量初始化为默认值。其作用域为 server 的整个生命周期。

可以使用

show global variables;

查看全局变量

可以使用下面这两种方式设置全局变量

set global sql_warnings=ON; -- global不能省略 /** 或者 **/ set @@global.sql_warnings=OFF;

查询全局变量时,可以使用

47 张图带你 MySQL 进阶!!!

或者是

47 张图带你 MySQL 进阶!!!

MySQL 流程语句介绍

MySQL 支持下面这些控制语句

IF

IF 用于实现逻辑判断,满足不同条件执行不同的 SQL 语句

IF ... THEN ...

CASE

CASE 实现比 IF 稍微复杂,语法如下

CASE ... WHEN ... THEN... ... END CASE

CASE 语句也可以使用 IF 来完成

LOOP

LOOP 用于实现简单的循环

label:LOOP ... END LOOP label;

如果 ... 中不写 SQL 语句的话,那么就是一个简单的死循环语句

LEAVE

用来表示从标注的流程构造中退出,通常和 BEGIN...END 或者循环一起使用

ITERATE

ITERATE 语句必须用在循环中,作用是跳过当前循环的剩下的语句,直接进入下一轮循环。

REPEAT

带有条件的循环控制语句,当满足条件的时候退出循环。

REPEAT ... UNTIL END REPEAT;

WHILE

WHILE 语句表示的含义和 REPEAT 相差无几,WHILE 循环和 REPEAT 循环的区别在于:WHILE 是满足条件才执行循环,REPEAT 是满足条件退出循环;

触发器

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wssjff.html