流程控制、自定义函数

  • 一、流程控制
    • 1、变量
    • 2、分支
    • 3、循环
  • 二、自定义函数

一、流程控制

1、变量

1、用户变量
#声明并赋值语法:
SET @变量名=值;

SET @变量名:=值;

SELECT @变量名:=值;
赋值:
#方式一:
#同上述三种
#方式二:
#SELECT 字段|常量|表达式 INTO 变量
#【FROM 表】;
使用语法:
#SELECT @变量名;

2、局部变量
声明的语法:
#DECLARE 变量名 类型 【DEFAULT 值】;
#赋值的语法:
#方式一:
#同上述三种
#方式二:
#SELECT 字段|常量|表达式 INTO 变量
#【FROM 表】;
使用语法:
#SELECT 变量名;
注意:用户变量和局部变量的区别

# 作用域 声明位置
用户变量 比较大 可以在BEGIN END 的外面也可以在里面
局部变量 只能在声明该变量的BEGIN END中 只能在BEGIN END 的里面

2、分支

分支结构
1、IF函数
语法:
SELECT IF(10>3,‘哈哈’,‘嘎嘎’);
应用在:BEGIN END 的里面和外面都行
2、CASE END
应用在:BEGIN END 的里面和外面都行
#案例:
CREATE PROCEDURE case_pro1(IN score FLOAT)
BEGIN
CASE
WHEN score>90 THEN SELECT ‘A’;
WHEN score>80 THEN SELECT ‘B’;
WHEN score>60 THEN SELECT ‘C’;
ELSE SELECT ‘D’;
END CASE;
END $
call casepro1(100)
3、CASE END
类似于switch
#案例:
CREATE PROCEDURE case_pro2(IN myweek INT)
BEGIN
CASE myweek
WHEN 1 THEN SELECT ‘干煸豆角’;
WHEN 2 THEN SELECT ‘糖拌西红柿’;
WHEN 3 THEN SELECT ‘红烧肉’;
ELSE SELECT ‘干煸土豆’;
END CASE;
END $
call case_pro2(1)
#应用在:BEGIN END 的里面和外面都行
4、IF ELSEIF ELSE
类似于多重IF
#语法:
#IF 条件1 THEN 语句1;
#ELSEIF 条件2 THEN 语句2;
#ELSEIF 条件3 THEN 语句3;
#ELSE 语句n;
#END IF ;
#案例:
CREATE PROCEDURE if_pro1(IN score FLOAT)
BEGIN
IF score>90 THEN SELECT ‘A’;
ELSEIF score>80 THEN SELECT ‘B’;
ELSEIF score>60 THEN SELECT ‘C’;
ELSE SELECT ‘D’;
END IF;
END $
call if_pro1(67)
#应用在:只能应用在BEGIN END中

3、循环

循环结构
1、WHILE结构
#语法:
#【标签:】WHILE 循环条件 DO
#循环体;
#END WHILE 【标签】;
2、REPEAT结构
语法:
#【标签:】REPEAT
#循环体;
#UNTIL 结束条件 END REPEAT 【标签】;
while和repeat的对比

# 执行顺序 循环条件 语法不同
while 先判断后执行 循环成立的条件 while关键字
repeat 先执行后判断 循环结束的条件 repeat关键字

二、自定义函数

#函数
学过的:length()/substr()/instr()/concat()
好处同存储过程
1、创建函数
语法:
#CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
#BEGIN
#函数体;
#END

#返回类型 方法名(参数列表){
#方法体
#}

#案例1:根据女神编号,返回男神名称
CREATE FUNCTION my_f1(id INT) RETURNS VARCHAR(20)
BEGIN
DECLARE bname VARCHAR(20);
SELECT boys.boyName INTO bname
FROM beauty ,boys
WHERE beauty.boyfriend_id=boys.id
AND beauty.id=id;
RETURN bname;
END$
SELECT my_f1(8) $

2、调用函数
#SELECT 函数名(参数);

3、删除函数
#DROP FUNCTION 函数名;
4、存储过程和函数

# 功能 关键字 返回值- 调用语法
存储过程 提高效率和重用性 PROCEDURE 可以有0个或多个 CALL 存储过程名()
函数 同上 FUNCTION 只能有一个 SELECT 函数名()

MySQL 09 流程控制、自定义函数相关推荐

  1. MySQL 之 视图、触发器、流程控制、函数

    文章目录 视图 视图概念 视图好处 视图的操作 触发器 触发器的特点 触发器的操作 流程控制 自定义函数 内置函数 视图 视图概念 视图可以简单理解成虚拟表,它和数据库中真实存在数据表不同,视图中的数 ...

  2. Go语言学习之3 流程控制、函数

    主要内容: 1. strings和strconv使用 2. Go中的时间和日期类型 3. 指针类型 4. 流程控制 5. 函数详解 1. strings和strconv使用 //strings 1. ...

  3. MySQL —— to_char、to_date自定义函数

    MySQL -- to_char.to_date自定义函数 之前已分析 MySQL与Oracle在日期操作相关的差异 本文是用自定义函数实现to_char.to_date,此方法适用快速进行数据库兼容 ...

  4. 【存储过程】MySQL存储过程/存储过程与自定义函数的区别

    ---------------------------存储过程-------------------- 语法: 创建存储过程: CREATE [definer = {user|current_user ...

  5. mysql存储过程自定义结构体_(转)MySQL存储过程/存储过程与自定义函数的区别...

    转自:http://www.cnblogs.com/caoruiy/p/4486249.html 语法: 创建存储过程: CREATE[definer = {user|current_user}] P ...

  6. SHELL/SSH基础知识(入门篇)-包含 shell 脚本语言的基本用法、 shell 脚本语言的基本用法、流程控制、函数 function、其它脚本相关工具、数组 array(欢迎留言交流)

    目录 1 shell 脚本语言的基本用法 1.1 shell 脚本注释规范 1.1.1 shell 脚本注释规范 1.1.2 执行(5种) 1.1.3 在远程主机运行本地脚本 1.1.4 检查shel ...

  7. 11月8日学习内容整理:js的引入方式,变量数据类型,运算符,流程控制,函数...

    js是一门成熟的编程语言,专门用浏览器客户端执行的语言 一.js的引入方式 1.直接在body标签中使用script标签写js语言 2.通过script标签导入js文件,<script   sr ...

  8. Go 从入门到精通(三)字符串,时间,流程控制,函数

    一.strings和strconv的使用 strings strings.HasPrefix(s string,preffix string) bool: 判断字符串s是否以prefix开头 stir ...

  9. Shell程序设计 | 基本语法 :变量、I/O、算术运算、条件判断、流程控制、函数

    文章目录 变量 环境变量 位置变量 特殊变量 自定义变量 数组 I/O printf / echo read 算术运算 let expr 条件判断 test 常用判断条件 流程控制 if case f ...

  10. golang基础之三-字符串,时间,流程控制,函数

    strings和strconv的使用 strings strings.HasPrefix(s string,preffix string) bool: 判断字符串s是否以prefix开头 stirng ...

最新文章

  1. JZ2440驱动开发之环境搭建
  2. python的tkinter编写计算器_Python+Tkinter 实现计算器功能
  3. mxnet基础到提高(10)--读写文件
  4. 如何开启linux的dhcp服务器,怎么开启DHCP服务器啊
  5. aws spark_使用Spark构建AWS数据湖时的一些问题以及如何处理这些问题
  6. 网页截图和svg模版动态生成图片Java实现
  7. 向量场的方向导数仍为向量场
  8. 软件发布!DOTA2统计学
  9. LOUVAIN——社交网络挖掘之大规模网络的社区发现算法
  10. RedisDesktopManager2021.3 最新版 RDM 2021.3 最新版 for Windows 持续更新中
  11. CVPR2004/风格分解:Separating Style and Content on a Nonlinear Manifold在非线性流形上分离样式和内容
  12. H. Zebras and Ocelots -ICPC North Central NA Contest 2017
  13. SSD接口类型小知识
  14. 建筑师们终于在虚拟空间开双年展了! | 绿洲 · 虚拟现实专栏
  15. 什么是AI预训练模型?
  16. linux c python,Python 不是 C
  17. 论文阅读-Boosting Data-driven Evolutionary Algorithm with Localized Data Generation
  18. /etc/fstab 只读无法修改的解决办法
  19. Java多线程编程(3)
  20. ThreadLocal是什么

热门文章

  1. 算法之美 - 电子书下载(高清版PDF格式+EPUB格式)
  2. CSS 特异度、继承、求值过程简介
  3. 将内存ffff:0~ffff:b单元中的数据复制到0:200~0:20b单元中
  4. 十三、直接、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址
  5. 计算机教育思维,计算机教育中计算思维的培育
  6. 今天是元旦节,可是我失恋了
  7. 阿里年薪百万的P7架构师简历都长什么样?他们都是怎么学习的?
  8. mysql备份数据库/备份表
  9. 企业级地理数据库(2)创建并加载企业级地理数据库
  10. CommonAPI新版本配置