• 转义字符

\’

  • 重置结束命令

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
  1. SELECT ename,sal,hisal,losal,
  2. case grade
  3. when 1 then '一级'
  4. when 1 then '一级'
  5. when 1 then '一级'
  6. when 1 then '一级'
  7. else'五级'
  8. end as 等级
  9. 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;

声明变量

declare 变量名 变量类型

赋值变量

set 变量名=

删除存储函数

drop function 变量名
修改只能删除重建,alter只能修改数据库类型选择

赋给变量的查询语句不是显示语句

loop循环

不讲,自己看

存储过程

  • 类似c语言的函数
  • 可在存储过程调用其他存储过程
  • 有三种参数in out inout
  • 不需要return
  • 可包含增删改查,创建临时表等语句
  • 用于数据批量处理

触发器在触发语句后才会发起
而存储过程是需要调用来发起的
只是查询过程是否成功,数据的显示需要语句实现

创建存储过程

create procedure 存储过程名称

创建存储过程

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雇员的姓名和职务

异常处理