《MySQL数据库技术及应用项目教程》项目5 课后习题答案.docxVIP

  • 76
  • 0
  • 约2.23千字
  • 约 3页
  • 2022-03-29 发布于安徽
  • 举报

《MySQL数据库技术及应用项目教程》项目5 课后习题答案.docx

项目5 选择题 1、C 2、B 3、D 4、A 5、C 6、A 7、B 8、C 9、B 10、D 填空题 1、系统变量 用户变量 局部变量 2、BEGIN…END 3、DELIMITER 4、FOR EEACH ROW 5、自动事务 手动事务 6、START TRANSACTION COMMIT 判断题 1、对 2、对 3、对 4、错 5、对 6、对 简答题 1、 答:存储过程具有如下优点:(1)模块化编程,代码可复用性好。(2)具有更快的执行速度。(3)减少网络通信量。(4)增强系统的安全性。 存储过程与存储函数的区别如下4点: (1)语法中实现的标识符不同,存储过程使用PROCEDURE,函数为FUNCTION。 (2)存储过程在创建时没有返回值,而函数在定义时必须设置返回值。 (3)存储过程没有返回值类型,且不能将结果直接赋值给变量;而函数定义时需要设置返回值类型,且在调用时除在SELECT中,必须将返回值赋给变量。 (4)存储过程必须通过CALL进行调用,不能使用SELECT调用;而函数则可在SELECT语句中直接使用。 2、 答:游标的作用:游标提供了一种对SELECT语句结果集进行访问的机制。可以将游标理解为一个在结果集中可以逐行移动的指针,它指向结果集中的某一行,用户可以用SQL语句逐一从游标中获取记录,从而有选择地按行进行操作,而不是只能对整个结果集进行操作。 游标的使用主要包括声明游标、打开游标、移动游标指针并从游标结果集中读取数据和关闭游标4个步骤。 3、 答:触发器是一种特殊的存储过程,主要用于保证数据的完整性和强制使用业务规则。 触发器具有以下优点:(1)触发器可以实现对数据库中的相关表的级联操作;(2)触发器可以用来定义比CHECK约束更复杂的限制;(3)触发器可以用来定义错误信息;(4)触发器可以用来实现更精细和更复杂的数据操作。 4、 答:根据激活触发器时机的不同,MySQL触发器可以分为BEFORE触发器和AFTER触发器两种类型。其区别为:BEFORE表示触发器是在激活它的语句之前触发,如果想要验证新数据是否满足使用的限制,则使用BEFORE触发器;AFTER表示触发器是在激活它的语句之后触发,如果想要在激活触发器的语句执行之后执行触发器指定的动作,通常使用AFTER触发器。 5、什么是事务?它有何作用? 答:所谓事务,是指一个单元的工作,其中包括一系列的更新操作,这些操作要么全做,要么全部不做。事务是并发控制的基本单位,它对维护数据库的数据一致性非常重要。 项目实践(训)题 1、 Use People SET @num = (SELECT Count(employeeId) FROM bemployee WHERE deptId=2003); 或: SELECT @num := Count(employeeId) FROM bemployee WHERE deptId=2003; 2、 DELIMITER $$ CREATE PROCEDURE dept_information(IN dept_id Varchar(4)) BEGIN SELECT * FROM bdept WHERE deptid = dept_id; END $$ DELIMITER ; 调用存储过程为: CALL dept_information(2001); 3、 DELIMITER $$ CREATE PROCEDURE employee_salary(employee_id Char(10)) BEGIN SELECT C1.employeeId, name, sex, total_salary, deduct, final_salary FROM bemployee C1 JOIN bsalary C2 ON C1.employeeid =C2.employeeid WHERE C1.employeeid = employee_id; END $$ DELIMITER ; 4、 DELIMITER $$ CREATE PROCEDURE reason_num(mreason Varchar(50), OUT num Int) BEGIN SELECT num=Count(*) FROM bleave WHERE reason = mreason; END $$ DELIMITER ; 5、 DELIMITER $$ CREATE TRIGGER del_salary AFTER DELETE ON bemployee FOR EACH ROW BEGIN DELETE FROM bsalary WHERE employeeid = old.employeeid; END$$ DE

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档