1,创建一个存储过程,计算employee表中的员工人数,并存储到
一个局部变量中,并输出该变量结果,尝试调用存储过程。

(delimiter一行单独敲,然后回车,注意delimiter和与后面符号之间有一个空格,可以避免出错)


delimiter $$

create procedure test (out amount1 int)
begin
   declare amount int;
   set amount=(select count(*)from employee);
   set amount1=amount;
end$$

delimiter ;

call test(@amount1);
select @amount1;

2,创建一个存储过程,比较两个员工的实际收入,若前者比后者高
就输出0,否则输出1,员工用其员工编号识别
delimiter  $$

create procedure comp(in id1 char(6),in id2 char(6),out bj int)
begin
declare sr1,sr2 float;
select Income-Outcome into sr1 from salary
where employeeID=id1;
select Income-Outcome into sr2 from salary
where employeeID=id2;
if sr1>sr2 then set bj=0;
else set bj=1;
end if;
end$$

delimiter  ;

(图片缺失“delimiter ;”代码,注意补充)

测试 

call comp('020010','111006',@bj1);
select @bj1;

call comp('111006','020010',@bj1);
select @bj1;

 

 

3,创建触发器,在employee表中删除员工信息的同时将salary表中该员工的信息删除,以确保数据完整性。创建完成后尝试删除employee表中的一行数据,然后查看salary表中的变化情况

初始状态(对叶凡进行修改)

delimiter $$


create trigger delete1 after delete
on employee for each row
begin
delete from salary where employeeID=old.employeeID;
end$$


delimiter ;

SET SQL_SAFE_UPDATES = 0;
delete from employee
where employeeID=308759;

最终状态

4,当修改employee表时,若将employee表中的员工工作时间增加一年,则将收入增加500,增加两年则收入增加1000,以此类推

初始状态(对张石兵修改) 


delimiter $$

create trigger employee_update after update
on employee for each row
begin
update salary set income=(income+(new.workYear-old.workYear)*500);
end$$

delimiter ;
update employee
set workYear=8
where employeeID=“111006”;

最终状态

Logo

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。

更多推荐