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

建站是什么东西青岛seo百科

建站是什么东西,青岛seo百科,网页制作师培训,电子商务网站建设的方法有哪些方面目录 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.hotlads.com/news/3544.html

相关文章:

  • 网站设计收费明细表谷歌浏览器手机版下载
  • 大连开发区着火seo排名点击手机
  • 企业做营销型网站响应式网站模板的特点
  • 珠海北京网站建设网页设计大作业
  • 企业网站建设与推广公司网站制作要多少钱
  • 电商网站怎么做搜索seo与sem的区别和联系
  • 网站上设置返回首页的超链接咋做的黑科技推广软件
  • 广州专业做网站多少钱seo数据分析哪些方面
  • 网站建设技术问题店铺推广渠道有哪些
  • 主做收影视出版的小说网站品牌营销策划方案案例
  • nginx网站开发怎么制作网站详细流程
  • 网站建设需求调查表新闻热点事件2021(最新)
  • 网站开发和报价方案无货源网店怎么开
  • python+网站开发+prf汉中网络推广
  • 网站icp备案流程站长seo工具
  • 建筑施工模板沧州搜索引擎优化
  • 做网站收录的网站有哪些万网域名注册官网查询
  • 生成前端页面的网站口碑营销的案例及分析
  • 响应式网站开发价格seo sem
  • 郑州网站设计价格互联网营销专业
  • 有做网站动态效果软件天津seo培训
  • 动态网站和静态网站有什么区别百度seo快速排名优化
  • 电商网站建设新闻深圳网站优化软件
  • 网站上面的头像怎么做的网站模板平台
  • 深圳红酒网站建设免费线上培训平台
  • 框架布局技术制作一个网站定制网站建设推广服务
  • 网站开发者morz百度seo搜索引擎优化
  • 网站模板html谷歌账号
  • 关岭做网站贵港网站seo
  • 网站建设 招标书免费网站seo诊断