- 转义字符
\’
- 重置结束命令
DELIMITER 符号
DELIMITER $$
将结束符号转变为$$,碰到这个才结束,用于防止语句块中多个sql语句有多个分号,导致提前结束。
我们语句块直到end,输入$$表示语句块结束,再用DELIMITET ;将结束符号转换回分号
- 语句块
BEGIN
END
相当于{}
语句块里有if,那么if语句判断完需要END IF;
如果是ELSEIF则不用END IF
但是ELSE IF后需要END IF
- 存储函数
- 创建存储函数
CREATE FUNCTION 函数名
- 修改、删除存储函数
ALTER FUNTION 函数名——修改函数本身的参数,不能修改函数名,参数返回内容
如果要删除其他的,需要先DROP FUNCTION 函数名再CREATE FUNCTION 函数名
- 查询存储函数
SHOW FUNCTION STATUS; #展示所有自定义函数,输出显示出
SELECT * FROM MySQL.proc
WHERE db = ‘company’ and type = ‘function’;
搜索对应的系统数据库里数据库名为company且类型为function的自定义函数。;;
NO SQL
RETURN
SET
- DECLARE
SELECT ename,sal,hisal,losal,
case grade
when 1 then '一级'
when 1 then '一级'
when 1 then '一级'
when 1 then '一级'
else'五级'
end as 等级
WHERE sal BETWEEN losal and hisal;
< >是不等于的意思
< >ALL 与所有都不相等 那么与NOT IN的意思相同
< >SOME 与部分不相等
= SOME 与部分相等
= ALL 与全部相等
创建存储函数返回工资等级
use company;
delimiter $$//把结束符号换成钱
create function grade_fn(salary int)//创建函数grade_fn,传入int 型salary
returns int //返回值设为int
NO SQL//选择数据库类型
begin//
return(select grade from salgrade where salary between losak and hisal)//
end $$
determiter ;
case式子
case<表达式>
when<表达式=条件一> then <结果一>
when<表达式=条件二> then <结果二>
…
case
when<条件一> then return<结果一>;
when<条件二> then return<结果二>;
…
else return<>
end case;
声明变量
赋值变量
set 变量名=
删除存储函数
drop function 变量名
修改只能删除重建,alter只能修改数据库类型选择
loop循环
不讲,自己看
存储过程
- 类似c语言的函数
- 可在存储过程调用其他存储过程
- 有三种参数in out inout
- 不需要return
- 可包含增删改查,创建临时表等语句
- 用于数据批量处理
触发器在触发语句后才会发起
而存储过程是需要调用来发起的
只是查询过程是否成功,数据的显示需要语句实现
创建存储过程
创建存储过程
drop procedure 存储过程名称
完整语法结构
use 数据库名
delimeter 置换结束符号
create procedure 存储过程名称(
[in/out/inout] 参数1 数据类型,
in/out/inout] 参数2 数据类型,
….
)
begin
过程体;
end置换后的结束符号
delimeter ;
调用存储过程
无出参
call 存储过程名(参数);
有出参
先定义变量,用来获取返回值
set @变量名=0;
call 存储过程名(参数)
查询语句查询返回值结果
select @变量名;
游标
类似于指针
- 用于查询语句后处理多行数据(有时设置变量传入多行值,无法传入,但是又想拿到看到数据特征),结合循环使用
- 声明
declear 游标名 cursor for select语句
- 打开游标(才能使用)
open 游标名
- 提取数据
fetch 游标名 into 变量名1[变量名2……];
- 关闭游标
close 游标名;
创建存储过程emp_p,用游标提取emp表中7788雇员的姓名和职务