实验: 数据库存储和触发器实验
一、实验目的
二、实验环境
MYSQL
三、实验前准备
(1)准备电脑,课本(数据库系统概论第五版)
(2)了解与存储过程有关的命令
(3)了解与触发器有关的命令
四、实验内容与步骤
①创建对应的数据表,并实现例8.9(从账户1转制定数额的款到账户2中,假设数据表是Acount(num,tatal))
Procedure:程序
1. SQL语句
use tempdb ;
create table Account (AccountId int primary key ,Total double );
insert into Account values(1,10000);
insert into Account values(2,20000);
insert into Account values(3,30000);
insert into Account values(4,40000);
delimiter //
create procedure zhuan(inAccountId int,outAccountId int ,amount double)
begin
declare output double ;
declare input double;
select total into output from Account where AccountId = outAccountId;
select total into input from Account where AccountId = inAccountId;
update Account set total=total-amount where AccountId = outAccountId ;
update Account set total=total+amount where AccountId = inAccountId;
end //
delimiter ;
执行 call zhuan(1 2 4000);
2. 执行结果
掌握触发器的定义和使用
① 实现例5.23(定义一个before行级触发器,为教师表Teacher定义完整性规则"教师的工资不得低于4000元,如果低于4000元,则自动的改为4000元")
① 先查看有没有定义这样的触发器
show triggers\G;
②定义这样的触发器
drop table if exists Teacher ;
create table Teacher(TID int auto_increment primary key ,
name varchar(24) not null ,
money int unsigned ,
time timestamp default current_timestamp );
delimiter $$
CREATE TRIGGER tr1 BEFORE INSERT ON Teacher
FOR EACH ROW
BEGIN
IF (NEW.name='professor' and NEW.money < 4000) THEN
SET NEW.money = 4000;
end if;
end $$
delimiter ;
③测试 ( 看Teacher表里面有什么,并且插入,进行测试)
Select * from Teacher ;
insert into Teacher (name,money) values("professor",1000);
insert into Teacher (name,money) values("lecturer",3000);
insert into Teacher (name,money) values("professor",0);
insert into Teacher (name,money) values("lecturer",3000);
途中还用了truncate
语句
④删除该触发器
Drop trigger tri ;
show triggers \G;
五、评价分析及心得体会
通过本次实验我掌握了数据库中存储过程与触发器的使用,做了大量的练习,也明白在构建大型系统时尽量少使用触发器(不到萬不得已的情况下尽量不要使用! 另外,能用存储过程代替的触发器就用存储过程代替.)对数据库的认识也有了很大的进步,同时也掌握了这些操作。希望再接再厉,继续努力!!!
1.mysql清空表中的数据:https://blog.csdn.net/chenshun123/article/details/79676446
truncate table table_name;
2.chrome 篇
ctrl+shift+T
ctrl+T
ctrl+tab
或者是 ctrl+pg(up/down)
3.vim 篇
vim 多行编辑:
`CTRL+v` 进入“可视 块”模式,选取-> `I` (大写i )->写入->保存即可。
vim 多行删除:
`CTRL+v `进入“可视 块”模式,选取-> `d` 删除。