作者:胖子届全国身轻如燕冠军 | 来源:互联网 | 2020-11-26 22:37
MySQL教程栏目通过47张图带你了解MySQL进阶。
我们创建存储过程首先要把 ;
替换为 ?
,下面是一个存储过程的创建语句
mysql> delimiter ?
mysql> create procedure sp_product()
-> begin
-> select * from product;
-> end ?
发现已经没有这个 @myId
了。
局部变量
MySQL 中的局部变量与 Java 很类似 ,Java 中的局部变量是 Java 所在的方法或者代码块,而 MySQL 中的局部变量作用域是所在的存储过程。MySQL 局部变量使用 declare
来声明。
会话变量
服务器会为每个连接的客户端维护一个会话变量。可以使用
show session variables;
显示所有的会话变量。
我们可以手动设置会话变量
set session auto_increment_increment=1;
或者使用
set @@session.auto_increment_increment=2;
然后进行查询,查询会话变量使用
全局变量
当服务启动时,它将所有全局变量初始化为默认值。其作用域为 server 的整个生命周期。
可以使用
show global variables;
查看全局变量
可以使用下面这两种方式设置全局变量
set global sql_warnings=ON; -- global不能省略
/** 或者 **/
set @@global.sql_warnings=OFF;
查询全局变量时,可以使用
MySQL 流程语句介绍
MySQL 支持下面这些控制语句
IF 用于实现逻辑判断,满足不同条件执行不同的 SQL 语句
IF ... THEN ...
CASE 实现比 IF 稍微复杂,语法如下
CASE ...
WHEN ... THEN...
...
END CASE
CASE 语句也可以使用 IF 来完成
LOOP 用于实现简单的循环
label:LOOP
...
END LOOP label;
如果 ...
中不写 SQL 语句的话,那么就是一个简单的死循环语句
用来表示从标注的流程构造中退出,通常和 BEGIN...END 或者循环一起使用
ITERATE 语句必须用在循环中,作用是跳过当前循环的剩下的语句,直接进入下一轮循环。
带有条件的循环控制语句,当满足条件的时候退出循环。
REPEAT
...
UNTIL
END REPEAT;
WHILE 语句表示的含义和 REPEAT 相差无几,WHILE 循环和 REPEAT 循环的区别在于:WHILE 是满足条件才执行循环,REPEAT 是满足条件退出循环;
触发器
MySQL 从 5.0 开始支持触发器
,触发器一般作用在表上,在满足定义条件时触发,并执行触发器中定义的语句集合,下面我们就来一起认识一下触发器。
举个例子来认识一下触发器:比如你有一个日志表和金额表,你每录入一笔金额就要进行日志表的记录,你会怎么样?同时在金额表和日志表插入数据吗?如果有了触发器,你可以直接在金额表录入数据,日志表会自动插入一条日志记录,当然,触发器不仅只有新增操作,还有更新和删除操作。
创建触发器
我们可以用如下的方式创建触发器
create trigger triggername triggertime triggerevent on tbname for each row triggerstmt
上面涉及到几个参数,我知道你有点懵逼,解释一下。
triggername
:这个指的就是触发器的名字triggertime
:这个指的就是触发器触发时机,是 BEFORE
还是 AFTER
triggerevent
: 这个指的就是触发器触发事件,一共有三种事件:INSERT、UPDATE 或者 DELETE。tbname
:这个参数指的是触发器创建的表名,在哪个表上创建triggerstmt
: 触发器的程序体,也就是 SQL 语句
所以,可以创建六种触发器
BEFORE INSERT、AFTER INSERT、BEFORE UPDATE、AFTER UPDATE、BEFORE DELETE、AFTER DELETE
上面的 for each now
表示任何一条记录上的操作都会触发触发器。
下面我们通过一个例子来演示一下触发器的操作
我们还是用上面的 procuct 表做例子,我们创建一个 product_info 产品信息表。
create table product_info(p_info varchar(20));
然后我们创建一个 trigger
更多相关免费学习推荐:mysql教程(视频)
以上就是通过47 张图带你 MySQL 进阶的详细内容,更多请关注 第一PHP社区 其它相关文章!