MySQL(七)
發佈於 2019-03-29
本篇是 MySQL 的最后一篇,我们最后讲讲变量、函数、存储过程和触发器。
MySQL 需要很多变量来保存数据。
系统内部定义的变量,系统变量针对所有用户有效。
基本语法: show variables [{模式匹配}];
show variables like 'autocommit';基本语法: select @@{变量名};
select @@autocommit;只针对当前客户端的本次连接。 基本语法: set {变量名} = {新变量值};
set autocommit = 0;针对”所有”客户端”所有”时刻。 基本语法: set global {变量名} = {新变量值}; 或者 set @@global.{变量名} = {新变量值};
set global autocommit = 1;
-- 或者
set @@global.autocommit = 1;注意: 全局修改只针对新客户端有效。
会话变量又称为用户变量,只针对当前用户使用的当前客户端有效。
基本语法: set @{变量名} = {变量值};
set @name := 'Hello world';注意: 使用 := 是因为 MySQL 中 = 还有比较的含义,为了避免搞混,可以使用 := 来进行赋值操作。
局部变量使用 declare 关键字声明,并且出现在 begin 和 end 语句之间。 基本语法: declare {变量名} {数据类型};
所有函数都是使用: select 函数名(参数列表);
简称过程(procedure),是一组为了完成特定功能的 SQL 语句集。并且在一次编译之后无需再次编译,效率较高。
基本语法: create procedure {过程名}([参数列表]) begin {过程体} end {结束符};
如果过程体中只有一条语句,可以省略 begin 和 end。
create procedure my_proc()
select * from my_student;
delimiter $$
create procedure my_proc()
begin
declare i int default 1;
set @sum := 0;
while i <= 100 do
set @sum = @sum + i;
set i = i + 1;
end while;
select @sum;
end
$$
delimiter;基本语法: show procedure stutas;
show procedure stutas;基本语法: call {过程名}([参数列表]);
call my_proc();基本语法: drop procedure {过程名};
drop procedure my_proc;触发器(trigger)是一种特殊类型的存储过程。触发器通过事件触发而被执行。