一千行MySQL学习笔记(九)

/* SQL编程 */ ------------------

--// 局部变量 ----------

-- 变量声明 declare var_name[,...] type [default value] 这个语句被用来声明局部变量。要给变量提供一个默认值,请包含一个default子句。值可以被指定为一个表达式,不需要为一个常数。如果没有default子句,初始值为null。 -- 赋值 使用 set select into 语句为变量赋值。
- 注意:在函数内是可以使用全局变量(用户自定义的变量)

--// 全局变量 ----------

-- 定义、赋值
set 语句可以定义并为变量赋值。
set @var = value;也可以使用select into语句为变量初始化并赋值。这样要求select语句只能返回一行,但是可以是多个字段,就意味着同时为多个变量进行赋值,变量的数量需要与查询的列数一致。还可以把赋值语句看作一个表达式,通过select执行完成。此时为了避免=被当作关系运算符看待,使用:=代替。(set语句可以使用= 和 :=)。

select @var:=20;
select @v1:=id, @v2=name from t1 limit 1;
select * from tbl_name where @var:=30;

select into 可以将表中查询获得的数据赋给变量。
-| select max(height) into @max_height from tb;

-- 自定义变量名

为了避免select语句中,用户自定义的变量与系统标识符(通常是字段名)冲突,用户自定义变量在变量名前使用@作为开始符号
@var=10;

- 变量被定义后,在整个会话周期都有效(登录到退出)

--// 控制结构 ----------

-- if语句

if search_condition then statement_list [elseif search_condition then statement_list]
...
[else statement_list]
end if;

-- case语句

CASE value WHEN [compare-value] THEN result
[WHEN [compare-value] THEN result ...]
[ELSE result]
END

-- while循环

[begin_label:] while search_condition do statement_list
end while [end_label];

- 如果需要在循环内提前终止 while循环,则需要使用标签;标签需要成对出现。

-- 退出循环
退出整个循环 leave 退出当前循环 iterate 通过退出的标签决定退出哪个循环
(未完待续)

         (作者:Shocker 来源:http://www.cnblogs.com/shockerli/p/1000-plus-line-mysql-notes.html)

原文地址:https://www.cnblogs.com/Grace7582/p/4743626.html