MySQL_MySQL中的begin-end流程控制语句与局部变量

MySQL:if语句、if...else语句、case语句,使用方法解析

if语句做为表达式使用,语法格式如下:

IF(expr1,expr2,expr3)
说明:

如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。

例子:

select *,if(age=1,"男","女") as ages from user;
当然如果作为表达式的话,if也可以用CASE when来实现的:

/* 下面这个将输出:男 */
SELECT CASE 1
WHEN 1 THEN '男'
WHEN 2 THEN '女'
ELSE '未知'
END
as ages

/* 下面这个将输出:女 */
SELECT
CASE 2
WHEN 1 THEN '男'
WHEN 2 THEN '女'
ELSE '未知'
END
as ages

/* 下面这个将输出:未知 */
SELECT
CASE 3
WHEN 1 THEN '男'
WHEN 2 THEN '女'
ELSE '未知'
END
as ages

/* 当然还有一种写法 输出:未知 */
SELECT
CASE
WHEN 3=1 THEN '男'
WHEN 3=2 THEN '女'
ELSE '未知'
END
as ages

SELECT
CASE
WHEN 3=1 THEN '男'
WHEN 3=2 THEN '女'
WHEN (3=4 || 3!=null) THEN '测试'
ELSE '未知'
END
as ages
从上面的例子我们可以看出得很明白了,case后面的值=when后台的值,然后就会输出when后面跟的then后的值。如果都不等行的话,就输出else后的值。

IF...ELSE...做为流程控制语句使用,语法格式如下:

IF search_condition THEN

statement_list  

[ELSEIF search_condition THEN]

statement_list ...  

[ELSE

statement_list]  

END IF
说明:

与PHP中的IF语句类似

当IF中条件search_condition成立时,执行THEN后的statement_list语句、

否则判断ELSEIF中的条件成立时,执行其后的statement_list语句、

否则继续判断其他分支。

当所有分支的条件均不成立时,执行ELSE分支。

search_condition是一个条件表达式,可以由“=、<、<=、>、>=、!=”等条件运算符组成,并且可以使用AND、OR、NOT对多个表达式进行组合。

https://blog.csdn.net/weixin_43064185/java/article/details/89554393

通常begin-end用于定义一组语句块,在各大数据库中的客户端工具中可直接调用,但在mysql中不可。

begin-end、流程控制语句、局部变量只能用于函数、存储过程内部、游标、触发器的定义内部。以下的'[]'表示可选内容。

1、begin-end: [begin_label:] BEGIN
[statement_list]
END [end_label]

如:

begin

select * from user;

end

2、if语句

IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list] ...
[ELSE statement_list]
END IF

如:

BEGIN
SET b=110;
IF b>0 THEN
SELECT a+b;
END IF;

注意,end if后面要根据情况加';',有些不爽啊,不像sqlserver那样

3、while语句

[begin_label:] WHILE search_condition DO
statement_list
END WHILE [end_label]

如:

BEGIN

WHILE a<10 DO
SET a=a+1;
END WHILE;
SELECT a;
END//

4、局部变量

DECLARE var_name[,...] type [DEFAULT value]

如 declear a int(2) default 2;

注意该语句使用的地方(不能在外部程序中使用)

5、赋值语句set

SET var_name = expr [, var_name = expr] ...

如set a=5;set a=a+4;

赋值的所有操作都要使用set语句,直接使用a=5的操作是非法的

注意该语句使用的地方(不能在外部程序中使用)

6、@操作符

@a用于定义一个全局变量,该变量的生命周期只在本次连接。

set @a=3;赋值语句

set @a=b语句可存在于任何语句块中

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容