一、代码执行结构
- 顺序结果
- 分支结构
- 循环结构
1.分支结构
分支结构:实现多个代码块,按照条件选择性执行某段代码
在MySQL中只有if分支
基本语法:
if 条件判断 then
-- 满足条件要执行的代码
else
-- 不滿足条件要执行的代码
end if;
触发器结合if分支
触发器结合if分支 影响2.循环结构
循环结构:某段代码在指定条件下执行重复。
while循环
基本语法
while 条件判断 do
-- 满足条件要执行的代码
-- 变更循环条件
end while;
(1)循环控制:
在循环内部进行循环判断和控制
iterate:迭代,类似continue,后面代码不执行,循环重新来过
leave:离开,类似break,整个循环接收使用方式:
iterate/leave 循环名字;定义循环名字
循环名字:while 条件 do
-- 循环体
-- 循环控制
leave/iterate 循环名字;
end while;
二、函数
函数:将一段代码块封装到一个结构中,在需要执行代码块的时候,调用结果执行即可。(代码复用)
- 系统函数
系统定义好的函数,直接调用即可。
任何函数都有返回值,因此函数的调用是通过select调用。
MySQL字符串的基本操作单位
substring:字符串截取(字符为单位)
字符串截取char_length:字符长度
length:字节长度
instr:判断字符串是否在某个具体的字符串中存在,存在返回位置
字符串寻找lpad:左填充,将字符串按照某个指定的填充方式,填充到指定长度(字符单位)
字符串填充insert:替换,找到目标位置,指定长度的字符串,替换成目标字符串
字符串替换strcmp:compere,字符串比较
字符串比较- 自定义函数
函数要素:函数名,参数列表(形参和实参),返回值,函数体(作用域)
(1)创建函数
创建语法
create function 函数名([形参列表])returns 数据类型 -- 规定要返回的数据类型
begin
-- 函数体
-- 返回值:return 类型(指定数据类型);
end
自定义函数和系统函数调用方式是一样的:select 函数名([实参列表])
调用函数(2)查看函数
查看所有函数 查看函数的创建语句查看所有函数:
show function status;
查看函数的创建语句:
show create function 函数名;
(3)修改函数&&删除函数
函数只能先删除后新增,不能修改
删除函数drop function 函数名;
函数参数
参数分为两种
- 形参:定义时的参数
- 实参:调用时的参数(实参可以是数值也可以是变量)
必须指定数据类型
function 函数名(形参名 字段类型) returns 数据类型
举个栗子
函数运用 函数检验作用域
MySQL中全局变量可以在任何地方使用;局部变量只能在函数内部使用
局部变量的应用全局变量:使用set关键字定义,使用@符号标志
局部变量:使用declare关键字声明,没有@符号。所有的局部变量的声明,必须在函数体开始之前
三、存储过程(procedure)
存储过程是一种没有返回值的函数,是一种用来处理数据的方式。
(1)创建过程
创建过程create procedure 过程名([参数列表])
begin
-- 过程体
end
(2)查看过程
函数的查看方式完全适用于过程:关键字换成procedure
查看所以过程查看所有过程
show procedure status;
或者
show procedure status [like 'pattern'];
查看过程创建语句查看过程创建语句
show create procedure 过程名;
(3)调用过程
过程没有返回值:select是不能访问的
调用过程调用过程关键字:call
(4)修改过程&&删除过程
过程不能修改,只能先删除后新增
删除过程删除过程
drop procedure 过程名;
(5)过程参数
函数的参数需要数据类型指定,过程需要类型限定:三种类型
- in:数据只是从外部传入给内部使用(值传递)。可以是数值也可以是变量
- out:只允许过程内部使用(不用外部数据),给外部使用的(引用传递:外部的数据会被先清空才回进入到内部),只能是变量
- inout:外部可以在内部使用,内部修改也可以给外部使用,典型的引用传递:只能传变量
过程参数基本使用
create procedure 过程名(in 形参名 数据类型,out 形参名 数据类型,inout 形参名 数据类型)
调用:out和inout类型的参数必须传入变量,不能是变量。
调用存储过程对于变量的操作是滞后的:是在存储过程调用结束的时候,才会重新将内部的值赋给外部传入全局变量
过程参数 调试最后,在存储过程调用结束之后,系统会将局部变量重复返回给全局变量(out和inout)
验证
网友评论