Mysql 第四章 触发器、存储过程
来源:互联网 发布:in 软件好玩吗 编辑:程序博客网 时间:2024/06/05 19:52
回顾
事务:特点ACID,把多条SQL指令做为一个批次,一起执行,或都不执行。
步骤:1. 关闭自动提交: set autocommit=0;
2. 设置开始事务: start transction;
3. SQL 指令 (1-N条)
4. 提交:commit; 或者回滚:rollback;
5. 打开自动提交:set autocommit = 1;
视图: 视图的作用只是隐藏一些数据,不同的角色所看到数据是不同的。视图是一个虚拟表,它本身没有数据,数据从物理表取。视图的创建代码里面只有Select查询。如果数据只来于一张表,则可以基于视图进行增、删、改,且能影响物理表中的数据,不建议这种操作。
索引:能提高检索数据的性能。但有时也会降低增、删、改的性能。创建主键会自动创建主键索引。唯一索引。普通索引。全文索引。
主键索引特点:列中的数据唯一,不允许为空,是唯一索引的特例。数据的顺序与索引的顺序一致。
创建索引原则:在常作为查询条件或排序的列上建索引。如果列中的数据重复性大,则不适合建索引。
如果表中的数据量少,也不建议建索引。
触发器
触发器是数据库系统中的一种机制,可以根据某一张表的增、删、改操作时作出一些特定的功能处理。
触发器创建在表的基础上,类型有三种,增、删、改,也就是说,一个表最多只能创建三个触发器。
同时,触发器是可以联动的。比如说销售记录插入一条销售信息,则销售记录表的insert触发器触发,针对商品表的库存进行修改。如果商品表创建了update触发器,则商品表的update触发器也会紧跟着触发。
语法 :create trigger t_xiaoshou after insert/update/delete on表名
for each row
begin
//业务处理
//业务处理
end;
在触发中new表示新添加的数据行 old表示删除的数据行。
Insert 时只有new数据行
Delete时只有 old数据行
Update时 两个数据行都有,更改数据时,先把这一行数据删除,数据行存在old里面,然后再插入修改后的数据行,则插入的数据行保存在new里面。
案例一:insert触发器
/*在销售表中添加insert触发器,触发时修改商品表的库存*/
DELIMITER$$
create trigger t_orderList AFTER insert on orderList
for each row
begin
/*取商品编号 及 数量 然后根据商品编号把商品表的库存减少,减少数量*/
update goods set kuchun = kuchun-new.num where goods.id = new.gid;
end$$;
案例二:delete触发器
DELIMITER$$
create trigger t_student AFTER delete on student
for each row
begin
/*取删除的学员信息,插入到毕业学员信息表中 old行保存的是删除的学员信息*/
insert into biyeiStudent values(old.studentno,old.name,old.sex,old.phone,old.birthday,
old.address,old.email);
end$$;
案例三:update 触发器 当更改了库存后,触发,重新计算商品的总价值。
delimiter $$
create trigger t_goods before update on goods
for each row
begin
/*判断是哪一列进行了修改*/
if old.kuchun != new.kuchun then
/*因为是同一个表,所以只要设置新行里面值就可以。*/
set new.totalPrice = new.kuchun*new.inPrice;
end if;
end;
$$;
存储过程
存储过程类似于Java中的方法,把一些复杂的业务进行封装,并进行了预编译,以后可以调用过程名,就可以执行过程中的业务代码,就像Java中的方法调用。过程可以给参数。
优点:速度快、安全、减少网络流量
语法
案例
无参存储过程
有输入参数存储过程:
输出参数存储过程: 要求获得参加java 考试的学生人数和未通过的学生人数
- Mysql 第四章 触发器、存储过程
- mysql 触发器+存储过程
- mysql 触发器,存储过程
- Mysql -- 存储过程/触发器/游标
- MySQL存储过程及触发器
- 【MySQL】存储过程 游标 触发器
- mysql触发器与存储过程
- MySQL存储过程+游标+触发器
- mysql 存储过程 函数 触发器
- MySQL存储过程及触发器
- MySQL存储过程及触发器
- MySQL存储过程及触发器
- mysql触发器,存储过程,函数
- MySQL 事件、触发器、存储过程
- Mysql存储过程以及触发器
- MySQL 触发器、存储过程、游标
- MySQL存储过程及触发器
- mysql 视图,触发器,存储过程
- AWS-G2-Ubuntu16.04下安装cuda,caffe和py-faster-rcnn
- Mysql第一章-数据库操作
- 设计模式--门面模式
- MySQL第三章-查询事务、视图、索引、数据库设计
- 基于大白菜U盘的windows系统重装方法
- Mysql 第四章 触发器、存储过程
- [LeetCode] Merge问题
- Java 集合系列01之 总体框架
- C++实验15
- centos7安装flash播放插件笔记
- 数据库引擎介绍
- 查看网站用了哪些技术
- Oracle基础
- Oracle常见函数