文章目录
第五次作业题目
一,触发器
1)建立两个表:good(商品表),orders(订单表)
create database db_mysql_7;#(库名自拟)
use db_mysql_7;
create table goods (gid char(8) primary key , name varchar(10) , price decimal(8,2) , num int);
create table orders (old int primary key auto_increment , gid char(10) not null , name varchar(10) , price decimal(8,2) , onum int , otime date);
二,在商品表中导入记录
insert into goods values ('A0001' , '橡皮' , 2.5 , 100), ('B0001' , '小楷本' , 2.8 , 210), ('C0001' , '铅笔' , 1.2 , 120), ('D0001' , '计算器' , 28 , 20);
1)建立触发器,订单中增加订单数量后,商品表数量同步减少对应的商品订单出单数量,并测试
2)建立触发器,实现功能:客户取消订单,恢复商品表对应商品的数量
3)建立触发器,实现功能:客户修改订单,商品表对应商品数量同步更新
三,储存过程
1)使用db_mysql_7库
2)建立提取emp_new表所有员工姓名和工资的储存过程s1
3)建立储存过程s2,实现输入员工姓名后返回员工的年龄
4)建立储存过程s3, 有两个参数,传入部门号,返回该部门的平均工资
1)建立触发器,订单中增加订单数量后,商品表数量同步减少对应的商品订单出单数量,并测试
delimiter $$
create trigger trg_after_order_insert
after insert on orders
for each row
begin
update goods set num = num - new.onum where gid = new.gid;
end$$
delimiter ;
2)建立触发器,实现功能:客户取消订单,恢复商品表对应商品的数量
delimiter $$
create trigger trg_after_order_delete
after delete on orders
for each row
begin
update goods set num = num + old.onum where gid = old.gid;
end$$
delimiter ;
3)建立触发器,实现功能:客户修改订单,商品表对应商品数量同步更新
delimiter $$
create trigger trg_after_order_update
after update on orders
for each row
begin
if old.onum <> new.onum then
update goods set num = num + (old.onum -new.onum) where gid =new.gid;
end if;
end$$
delimiter ;
1)使用db_mysql_7库
use db_mysql_7;
2)建立提取emp_new表所有员工姓名和工资的储存过程s1
delimiter $$
create procedure s1()
begin
select name , salary from emp_new;
end$$
delimiter ;
# 3)建立储存过程s2,实现输入员工姓名后返回员工的年龄
```mysql
delimiter $$
create procedure s2(in emp_name varchar(255))
begin
select age from emp_new where name = emp_name;
end$$
delimiter ;
4)建立储存过程s3, 有两个参数,传入部门号,返回该部门的平均工资
delimiter $$
create procedure s3(in dept_id int)
begin
select avg(salary) as avg_salary from emp_new where dept_id = dept_id;
end$$
delimiter ;