网络数据库技术课程实验8anN1(2)

来源:网络收集 时间:2025-06-25 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

SELECT COUNT(*) INTO NUM2 FROM Employees WHERE EmployeeID=EM_ID;

IF NUM1=1 AND NUM2=0 THEN

DELETE FROM Salary WHERE EmployeeID=EM_ID; RETURN TRUE;

ELSE

RETURN FALSE; END IF; END$$ DELIMITER ;

调用该存储函数:

SELECT DELETE_EM ('000001');

往Salary表中插入一行记录后调用该存储函数。

INSERT INTO Salary values('000002',1212,123); SELECT DELETE_EM ('000002');

观察并总结上面两次调用结果的不同。

思考题:

1. 创建存储函数,判断员工是否在研发部工作,若是则返回其学历,若不是则返回字符串“NO”。

CREATE FUNCTION JUDGE_EM(EM_ID CHAR(6) ) RETURNS CHAR(4) BEGIN

DECLARE DEP CHAR(20); DECLARE EDU CHAR(4); SELECT

DepartmentName,Education

INTO

DEP,EDU

FROM

EMPLOYEES,DEPARTMENTS

WHERE EMPLOYEES.DepartmentID=DEPARTMENTS.DepartmentID AND EmployeeID=EM_ID;

IF DEP='研发部' THEN

6

RETURN EDU; ELSE

RETURN 'NO'; END IF; END

3.触发器

(1)创建触发器,在Employees表中删除员工信息的同时将Salary表中该员工的信息删除,以确保数据完整性。

CREATE TRIGGER DELETE_EM AFTER DELETE

ON Employees FOR EACH ROW

DELETE FROM Salary WHERE EmployeeID=OLD. EmployeeID;

创建完后删除Employees表中的一行数据,然后查看Salary表中的变化情况。

(2)创建表Departments1,其结构和内容与表Departments都相同

CREATE TABLE Departments1 LIKE Departments;

INSERT INTO Departments1 SELECT * FROM Departments;

在表Departments上创建一个触发器,如果添加一个新的部门,该部门也会添加到表Departments1中。

DELIMITER $$

CREATE TRIGGER Departments_Ins AFTER INSERT BEGIN END$$ DELIMITER ;

创建完后添加一个部门到Departments,然后查看Departments1表中的变化情况。

ON Departments FOR EACH ROW INSERT INTO Departments1

VALUES(NEW.DepartmentID,NEW.DepartmentName,NEW.Note);

(3)创建触发器,当修改Employees表时,若将Employees表中员工的工作时间增加1年,则将收入增加500,增加2年则增加1000,依次类推。若工作时间减少则无变化。

DELIMITER $$

7

CREATE TRIGGER ADD_SALARY AFTER UPDATE BEGIN

DECLARE YEARS INT;

SET YEARS=NEW.WorkYear-OlD.WorkYear; IF YEARS>0 THEN

UPDATE Salary SET InCome=InCome+500*YEARS WHERE

EmployeeID=NEW. EmployeeID;

END IF;

END$$ DELIMITER ;

创建完后修改Employees表中的一个职工的工作时间,然后查看Salary表中对应职工的收入变化情况。

ON Employees FOR EACH ROW

思考题:

1. 创建UPDATE触发器,当表Departments中的部门号发生变化时,Employees表中的员工所属的部门号也将改变。

CREATE TRIGGER T_11 AFTER UPDATE

ON Departments FOR EACH ROW UPDATE

Employees

SET DepartmentID=NEW.DepartmentID WHERE

DepartmentID=OLD.DepartmentID;

2. 创建UPDATE触发器,当表Salary中的InCome值增加500时,OutCome值增加50。

CREATE TRIGGER T_12 BEFORE UPDATE

ON Salary FOR EACH ROW

BEGIN

DECLARE N INT; DECLARE S FLOAT;

SET S=NEW.INCOME-OLD.INCOME; SET N=S/500;

8

IF N>=1 THEN

SET NEW.OUTCOME=old.outcome+N*50; END IF; END;

4.事件

(1)创建一个立即执行的事件,查询Employees表的信息。

CREATE EVENT DIRECT

ON SCHEDULE AT NOW() DO

SELECT * FROM Employees;

(2)创建一个事件,每天执行一次,它从明天开始直到2011年12月31日结束。

CREATE EVENT every_day

ON SCHEDULE EVERY 1 DAY

STARTS CURDATE()+INTERVAL 1 DAY ENDS '2011-12-31' DO

SELECT * FROM Employees; 思考题:

本次实验中遇到的问题及解决方法。

9

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典综合文库网络数据库技术课程实验8anN1(2)在线全文阅读。

网络数据库技术课程实验8anN1(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/wenku/614940.html(转载请注明文章来源)
Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219