当前位置: 首页 > news >正文

网站怎么做备案哪些网站是做零售的

网站怎么做备案,哪些网站是做零售的,哪些网站可以做设计软件,做团队网站源码有哪些目录 1. 题目1.1 游标1.2 触发器 2. 解答2.1 游标2.2 触发器 1. 题目 1.1 游标 创建存储过程,利用游标依次显示某部门的所有员工的实际收入。(分别用使用 计数器 来循环和使用 标志变量 来控制循环两种方法实现) 创建存储过程,将某部门的员工工资按工作…

目录

  • 1. 题目
    • 1.1 游标
    • 1.2 触发器
  • 2. 解答
    • 2.1 游标
    • 2.2 触发器

1. 题目

1.1 游标

  1. 创建存储过程,利用游标依次显示某部门的所有员工的实际收入。(分别用使用 计数器 来循环和使用 标志变量 来控制循环两种方法实现)

  2. 创建存储过程,将某部门的员工工资按工作年限进行调整,工作年限<3,提高 %53<=工作年限<5,提高 %10工作年限>=5,提高 %15

1.2 触发器

  1. 创建触发器,当在 employees 表中插入一个员工信息时,如果员工的部门编号,department 表中没有,则取消插入操作。

  2. 创建触发器,当在 employees 表中删除一条记录时,在 salary 表中删掉该员工的记录。

  3. 创建触发器,当在 employees 表中修改员工编号时,在 salary 表中同时修改员工编号。

2. 解答

2.1 游标

  1. 创建存储过程,利用游标依次显示某部门的所有员工的实际收入。(分别用使用 计数器 来循环和使用 标志变量 来控制循环两种方法实现)

    方法一:使用计数器来循环

    drop PROCEDURE if EXISTS p1;
    delimiter $
    create PROCEDURE p1(in dname char(20))
    begindeclare employee_id char(6);declare employee_name char(10);declare employee_salary float;declare salary_count int;		# 统计记录数declare i int default 1;# 设置游标declare c_salary CURSOR forselect employees.EmployeeID, employees.`Name`, salary.Income - salary.Outcome as '实际收入'from employees join departments on employees.DepartmentID = departments.DepartmentIDjoin salary on employees.EmployeeID = salary.EmployeeIDwhere departments.DepartmentName = dname;select count(*) into salary_countfrom (select employees.EmployeeID, employees.`Name`, salary.Income - salary.Outcome as '实际收入'from employees join departments on employees.DepartmentID = departments.DepartmentIDjoin salary on employees.EmployeeID = salary.EmployeeIDwhere departments.DepartmentName = dname)a;open c_salary;    # 打开游标while i <= salary_count doFETCH c_salary into employee_id, employee_name, employee_salary;		# 读取游标select employee_id, employee_name, employee_salary;		# 使用游标set i = i + 1;end while;close c_salary;		# 关闭游标end $
    delimiter ;call p1('广告部');
    

    在这里插入图片描述

    方法二:使用控制循环

    drop PROCEDURE if EXISTS p1;
    delimiter $
    create PROCEDURE p1(in dname char(20))
    begindeclare employee_id char(6);declare employee_name char(10);declare employee_salary float;declare f int default 1;# 设置游标declare c_salary CURSOR forselect employees.EmployeeID, employees.`Name`, salary.Income - salary.Outcome as '实际收入'from employees join departments on employees.DepartmentID = departments.DepartmentIDjoin salary on employees.EmployeeID = salary.EmployeeIDwhere departments.DepartmentName = dname;# 错误处理declare exit handler for not foundset f = 0;open c_salary;    # 打开游标while f = 1 doFETCH c_salary into employee_id, employee_name, employee_salary;		# 读取游标select employee_id, employee_name, employee_salary;		# 使用游标end while;close c_salary;		# 关闭游标end $
    delimiter ;call p1('广告部');
    

    在这里插入图片描述

  2. 创建存储过程,将某部门的员工工资按工作年限进行调整,工作年限<3,提高 %53<=工作年限<5,提高 %10工作年限>=5,提高 %15

    drop PROCEDURE if EXISTS p2;
    delimiter $
    create PROCEDURE p2(in dname char(20))
    begindeclare employee_id char(6);declare employee_WorkYear TINYINT;declare add_income float;declare f int default 1;# 设置游标declare c_salary CURSOR forselect employees.EmployeeID, employees.WorkYearfrom employees join departments on employees.DepartmentID = departments.DepartmentIDjoin salary on employees.EmployeeID = salary.EmployeeIDwhere departments.DepartmentName = dname;# 错误处理declare exit handler for not foundset f = 0;open c_salary;    # 打开游标while f = 1 doFETCH c_salary into employee_id, employee_WorkYear;		# 读取游标if employee_WorkYear < 3 then set add_income = 0.05;elseif employee_WorkYear < 5 thenset add_income = 0.1;elseset add_income = 0.15;end if;update salaryset Income = Income + Income * add_incomewhere salary.EmployeeID = employee_id;end while;close c_salary;		# 关闭游标end $
    delimiter ;call p2('广告部');
    

    在这里插入图片描述

    再次调用存储过程 p1 查看广告部员工实际收入,从而验证存储过程 p2 是否正确。

    :因为在存储过程 p2 提高的是 收入,而不是 实际收入,即支出是不变的。所以 p2 的结果不是简单的通过 p1 的结果乘上相应提升率!

    在这里插入图片描述

    比如 伍容华 的支出是 88.03,那么存储过程 p2 的结果是这么来的:

    ( 1494.59 + 88.03 ) ∗ ( 1 + 0.1 ) = 1740.882 (1494.59+88.03) * (1+0.1) = 1740.882 (1494.59+88.03)(1+0.1)=1740.882
    1740.88 − 88.03 = 1652.85 1740.88 - 88.03 = 1652.85 1740.8888.03=1652.85

2.2 触发器

  1. 创建触发器,当在 employees 表中插入一个员工信息时,如果员工的部门编号,department 表中没有,则取消插入操作。

    drop trigger if EXISTS tri_insertinfo;
    delimiter $
    create TRIGGER tri_insertinfo before insert on employees for each row
    begindeclare a int;select count(*) into afrom departmentswhere departments.DepartmentID = new.DepartmentID;if a = 0 then SIGNAL SQLSTATE '12345' set message_text = '部门不存在';end if;end$
    delimiter ;select * from employees;
    

    在这里插入图片描述

    select * from departments;
    

    在这里插入图片描述

    insert into employees values('999996', '小邓在森林', '本科', '2022-02-17', '1', 5, '武汉大学', '00000000', '6');
    

    在这里插入图片描述

    insert into employees values('999995', '小邓在森林', '本科', '2022-02-17', '1', 5, '武汉大学', '00000000', '10');
    

    在这里插入图片描述

    select * from employees;
    

    在这里插入图片描述

  2. 创建触发器,当在 employees 表中删除一条记录时,在 salary 表中删掉该员工的记录。

    drop trigger if EXISTS tri_deleteinfo;
    delimiter $
    create TRIGGER tri_deleteinfo after delete on employees for each row
    begindelete from salarywhere EmployeeID=old.EmployeeID;end$
    delimiter ;
    
    delete from employees where EmployeeID = 999996;
    select * from employees;
    select * from salary;
    

    在这里插入图片描述

    :因为没有在表 salary 中插入 小邓在森林 的数据,我们再来试一下删除 伍容华 的数据。

    delete from employees where EmployeeID = 010008;
    select * from employees;
    select * from salary;
    

    在这里插入图片描述
    可以看见 伍容华 的数据已经被删除。

  3. 创建触发器,当在 employees 表中修改员工编号时,在 salary 表中同时修改员工编号。

    drop trigger if EXISTS tri_updateinfo;
    delimiter $
    create TRIGGER tri_updateinfo after update on employees for each row
    beginupdate salaryset EmployeeID = new.EmployeeIDwhere EmployeeID = old.EmployeeID;
    end$
    delimiter ;
    

    我们修改 王林 的编号(将 000001 修改为 999999),原数据是:

    select * from employees;
    select * from salary;
    

    在这里插入图片描述

    修改后结果:

    update employeesset EmployeeID = '999999'where employees.EmployeeID = '000001';select * from employees;
    select * from salary;
    

    在这里插入图片描述

上一篇文章:【数据库——MySQL】(15)存储过程、存储函数和事务处理习题及讲解

http://www.yayakq.cn/news/180380/

相关文章:

  • 国际网站群建设方案南通网站关键词推广
  • 南京建站公司网站网站建设一般都需要什么资质
  • 织梦网站安装视频网站首页改版方案
  • 惠州市网站建设企业学习网站建设建议调查问卷
  • 重庆工程建设招标网官方网站网络推广一般都干啥
  • 成都网站建设联系方式wordpress员工管理系统
  • dw如何用表格来做网站软件开发公司
  • 政务网站建设 紧急通知广州官网建站
  • 如皋市建设局网站福州短视频seo平台
  • 优质服务的网站设计制作百度小程序对网站seo
  • 可视化在线做网站街道网站建设更新汇报
  • 蒙阴建设局网站十大免费logo设计
  • seochinazcom如何快速优化网站排名
  • 书店网页设计图片网店seo
  • 企业网站pv是什么饲料网站源码
  • 请人开发一个网站需要多少钱顺德网站优化公司
  • 网站建设的词wordpress翻页显示404
  • 泉州市服务好的网站设计网站制作厂家
  • 太仓建设工程网站网站动态海报效果怎么做的
  • 苏州街网站建设炫酷网站欣赏
  • 鞍山做网站免费网站建设找云狄
  • 推广网站有哪些方式青浦网站建设
  • 关于加强网站信息建设的通知网站首页样式
  • 黄石规划建设局网站国内网站域名吗
  • 建设虚拟币交易网站潜江网络
  • 重庆制作网站公司简介网站可以个人备案吗
  • tap自助建站wordpress 扁担
  • 网站 报价方案有关网站升级建设的申请书
  • photoshop 做网站电商运营有几大平台
  • 网站建设实习困难线上培训课程