mysql编程中语句块包含符:

实在便是相称于js或php中大括号语法:

[标识符:]begin

php中大括号MySQL从入门到精晓 HTML

//语句。



end [标识符];

标识符便是定义定义的任意的名字而已,比如:

if (条件判断)

begin

//。



end;

end if;

if (条件判断)

A:begin

//。



end A;

end if;

A便是标识符,它的浸染是“标识”该语句块,以期可以在该语句块中“利用它”——实在便是退出;

流程掌握语句

if语句:

case语句:

相称于之前的switch,它有两种语法:

语法1示意代码

case @v1

when 1 then //如果@v1 即是 1,则表示知足条件,进入这个分支;

begin

//.......

end;

when 2 then

begin

//........

end;

else

begin

//......

end;

end case;

解释:

@v1表示一个变量;后面都这样。

语法2示意代码:

case

when @v1 > 0 then //如果该条件知足,就实行这个分支,否则就连续判断下一个条件。


begin

//......

end;

when @v1 < 0 then

begin

//.....

end;

else

begin

//......

end;

end case;

loop循环语句

标识符:loop

begin

//这里便是循环的语句块。


//把稳:这里必须有一个“退出循环”的逻辑机制;否则该循环便是去世循环,其基本形式类似这样:

if (条件) then

leave 标识符; //退出;

end if;

end;

end loop 标识符

while 循环

举例:

set @v1 = 1; //赋值语句;

while @v1 < 10 do

begin

insert into tab1 (id, num) values ( null, @v1 );

set @v1 = @v1 + 1;

end;

end while;

repeat 循环

举例:

set @v1 = 1; //赋值语句;

repeat

begin

insert into tab1 (id, num) values ( null, @v1 );

set @v1 = @v1 + 1;

end;

until @v1 >= 10

end repeat;

leave语句:

语法:

leave 标识符;

浸染:

用来退出begin...end构造或其他具有标识符的构造。

mysql中的变量:

mysql中,有两种变量形式:

普通变量: 不带“@”符号;

定义形式:

declare 变量名 类型名 【default 默认值】; //普通变量必须先这样定义

赋值形式:

set 变量名 = 值;

取值:就直策应用变量名;

利用“场所”:只能在“编程环境”中利用;

什么是编程环境?只有3个:

1,定义函数的内部;

2,定义存储过程的内部;

3,定义触发器的内部;

会话变量: 带“@”符号;

定义形式(实在也是赋值形式):

set @变量名 = 值; //跟php类似,无需定义,直接赋值,第一次就算是定义

取值:就直策应用变量名;

利用“场所”:基本上哪里都可以用;

变量赋值有如下形式:

语法1(针对普通变量):

set 变量名 = 表达式;#此语法中的变量必须先利用declare声明

语法2(针对会话变量):

set @变量名 = 表达式; #此办法可以无需declare语法声明,而是直接赋值,类似php定义变量并赋值。

语法3(针对会话变量):

select @变量名 := 表达式;#此语句会给该变量赋值,同时还会作为一个select语句输出“结果集”。

语法4(针对会话变量):

select 表达式 into @变量名;#此语句虽然看起来是select语句,但实在并不输出“结果集”,而只是给变量赋值。

(存储)函数:

函数,也说成“存储函数”,实在便是js或php中所说的函数!

唯一的差异:

这里的函数必须返回一个数据(值);

定义形式:

把稳事变:

1, 在函数内容,可以有各种变量和流程掌握的利用;

2, 在函数内部,也可以有各种增编削语句;

3, 在函数内部,不可以有select或其他“返回结果集”的查询类语句;

举例:

调用形式:

跟调用内部函数一样!
比如:

select now(), 8+3 as f2, func1(); //这里,now()是系统函数; func1()是自定义函数。

或如果在编程语句中:

set @v1 = now();

set @v2 = func1();

删除函数:

drop function 函数名;

存储过程procedure

存储过程,实在质还是函数——但其规定:不能有返回值;

定义形式:

解释:

1,in:用于设定该变量是用来“吸收实参数据”的,即“传入”;默认不写,便是in

2,out:用于设定该变量是用来“存储存储过程中的数据”的,即“传出”,即函数中必须对他赋值;

3,inout:是in和out的结合,具有双向浸染;

4,对付,out和inout设定,对应的实参,就“必须”是一个变量,由于该变量是用于“吸收传出数据”;

调用存储过程:

call 存储过程名 (实参1,实参2,.... )

它该当是在“非编程环境中”调用,即实行增编削查的场景下;

举例:

#创建一个存储过程:

#该存储过程的目标是:将3个数据写入到表tab_int;

#并返回该表的第一个字段的前3大值的行

调用:

删除存储过程:

drop procedure 存储过程名;

在php中利用存储函数或存储过程的示意

<php

//调用存储函数:

$v1 = $_POST[‘a’];

$v2 = $_POST[‘b’];

$sql = “insert into tab1 (id, f2, f3) values ( null, now(), func1($v1 , $v2 ) )”;

$result = mysql_query($sql);

//调用存储过程:

$v1 = $_POST[‘username’];

$v2 = $_POST[‘pass’];

$v3 = $_POST[‘age’];

$sql = “ call insert_user($v1, $v2, $v3 ); ”; //insert_user()是一个存储过程,带3个参数,会将该3个参数数据写入(insert)某个表中。

$result = mysql_query();

另一个利用存储过程返回结果集的例子:

$id = $_GET[‘id’];

$sql = “call Get_User_Info( $id ) “; //Get_User_Info()是一个存储过程,个中会返回某个指定id的用户信息

$result = mysql_query($sql); //这里得到的便是“结果集”了

?>

触发器(trigger)

含义:

触发器,也是一段预先定义好的编程代码(跟存储过程和存储函数一样),并有个名字。

但:

它不能调用,而是,在某个表发生某个事宜(增,删,改)的时候,会自动“触发”而调用起来。

定义形式:

create trigger 触发器名 触发机遇 触发事宜 on 表名 for each row as

begin

//这里,才是编程的位置,也便是触发器的内部语句

end;

解释:

1,触发机遇,只有2个: before(在....之前), after(在....之后);

2,触发事宜,只有3个:insert, update, delete

3,即其含义是:在某个表上进行insert(或update,或delete)之前(或之后),会去实行个中写好的代码(语句);即每个表只有6个环境会可能调用该触发器;

4,常日,触发器用于在对某个表进行增编削操作的时候,须要同时去做其余一件事情的环境;

5,在触发器的内部,有2个关键字代表某种特定的含义,可以用于获取有关数据:

new:它代表当前正要实行的insert或update的时候的“新行”数据;通过它,可以获取这一新行数据的任意一个字段的值,形式为:

set @v1 = new.id; //得到该新插入或update行的id字段的值(条件是有该id)

set @v2 = new.age; //同上;

old:它代表当前正要实行的delete的时候的“旧行”数据,通过它,可以获取这一旧行数据的任意一个字段的值,形式为:

set @v1 = old.id; //得到该新插入或update行的id字段的值(条件是有该id)

set @v2 = old.age; //同上;