一.变量:系统变量、自定义变量
1.系统变量:用来控制服务器的属性,如autocommit、auto_increment_increment
a.查看系统变量:show global variables;
b.查看具体变量值:select @@变量名
c.修改系统变量:会话级别、全局级别
1.会话级别:临时修改,当前客户端当次有效。
set autocommit=0;
2.全局级别:永久修改,所有客户端都有效,当前客户端已连接服务器,需推出后生效。set global 变量名=值;
2.自定义变量
a.设置自定义变量:系统为了区分系统变量,规定用户自定义变量必须使用一个@,set @变量名=值。
b.自定义变量的查看:select @变量名;
c.从表中获取数据赋值给变量
d.只赋值不看结果每次只能复制一条记录
所有自定义变量都是会话级别,当前客户端当前连接有效,不区分数据库属于(用户级别)。
二.触发器(trigger):事先写好一段代码,当表中的数据发生改变时(增删改),系统自动触发代码执行事件
a.触发器要素:触发事件、触发时间、出发对象
1.触发事件:增、删、改(insert、delete、update)
2.触发时间:前、后(before、after)
3.表中的每一条记录(行)
一张表中最多只能有一种时间的一种触发器,一张表中最多有6个触发器
b.创建触发器:在mysql中没有大括号、小括号都是用对应的字母代替
临时修改结束符:delimiter 自定义符号,后续代码只有遇到自定义符号才算结束
1.创建触发器基本语法
c.查看触发器
1.查看所有触发器:show triggers [like 'pattern']
2.查看触发器创建语句:show create trigger 触发器名称;
3. 所有的触发器都会放在Information_schema.triggers
4.触发器的使用
5.修改&删除触发器:不能修改,只能先删除后新增
语法:drop trigger 触发器名称;
6.触发器的记录:不管触发器是否触发,当系统某种操作准备执行,系统会将当前状态和即将操作的记录状态保存下来,
当前状态保存在old中,操作后的状态保存在new中。
1):使用方式:old/new(旧、新记录) 字段名 (new 代表的是假设发生后的结果)
三.代码的执行结构:顺序结构、分支结构、循环结构
a.分支结构:准备多个代码块,按照条件选择性执行
1.语法:if 判断条件
then 满足条件代码块
else 不满足条件代码块
end if;
案例:触发器结合分支if结构,如果库存够生成订单,不满足不生成订单。
b.循环结构:某段代码在满足条件下一直循环执行
四.函数:将一段代码封装到一个结构中,需要调用代码块时调用结构即可(提高代码的复用性)。
a.函数的分类:系统函数、自定义函数
1.系统函数
1):substring:字符串截取
2):char_length:字符长度、length:字节长度
3):Instr:判断字符串是否在某个字符里,存在返回位置
2.自定义函数
1)函数要素:函数名、参数列表、返回值、函数体(作用域)
2)创建函数语法:create function 函数名([参数列表]) returns -- 规定要返回的类型
begin 函数体
end
3)调用函数:select 函数名称;
4)查看函数:select function status [like 'pattern'];
5)查看函数的创建:show create function 函数名;
6)函数的修改&删除:drop function 函数名称;
7)函数参数:分为实参和形参,形参制定时必须指定数据据类型
function 函数名(参数类型 参数) returns 返回值
8)参数作用域
五.存储过程
1.创建过程
create procedure 过程名字([参数列表])
begin 过程体
end
2.查看存储过程
show procedure status[like 'pattern'];
3.查看创建过程:show create procedure 过程名字;
4.调用过程 call test();
5.删除过程: drop procedure 过程名字;
6.过程参数