第一范文网 - 专业文章范例文档资料分享平台

MySQL数据库基础与实例教程练习题参考答案

来源:用户分享 时间:2025/7/17 3:26:20 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

delimiter $$ create trigger choose_delete_after_trigger after delete on choose for each row begin update course set available=available+1 where course_no=; end; $$ delimiter ;

最后,再为choose表创建一个before、insert触发器和一个before、update触发器实现检查约束:一个学生某门课程的成绩score要求在0到100之间取值。

delimiter $$ create trigger choose_insert_before_trigger before insert on choose for each row begin if>=0 && <=100) then set = ; else insert into mytable values(0); end if; end; $$ delimiter ; delimiter $$ create trigger choose_update_before_trigger before update on choose for each row begin if>=0 && <=100) then set = ; else insert into mytable values(0); end if; end; $$ delimiter ;

4.MySQL触发器中的触发事件有几种?触发器的触发时间有几种? 答:请参看章节内容。

5.创建触发器时,有哪些注意事项?

答:本题修改为:使用触发器时,有哪些注意事项? 请参看章节内容。

6.使用触发器可以实现哪些数据的自动维护?

答:使用触发器可以实现检查约束

使用触发器可以自动维护冗余数据,例如课程available的字段值。 使用触发器可以模拟外键级联选项。

7.您是如何理解临时表的?临时表与基表有什么关系? 答:请参看章节内容。请参看章节内容

8.您是如何理解视图、子查询、临时表、派生表之间的关系的? 答:请参看章节内容。

第八章答案

1.编写“选课系统”的存储过程,并对其进行调用、测试。 答:请参看本章代码。

2.查看存储过程定义的方法有哪些? 答:请参看章节内容。

3.请罗列存储过程与函数的区别与联系。 答:请参看章节内容。

4.数据库开发人员定义错误处理机制时,需要提供错误处理类型、错误触发条件以及错误处理程序等信息,错误处理类型有哪些?什么是错误触发条件以及错误处理程序?

答:错误处理类型的取值要么是continue,要么是exit。当错误处理类型是continue时,表示错误发生后,MySQL立即执行自定义错误处理程序,然后忽略该错误继续执行其他MySQL语句。当错误处理类型是exit时,表示错误发生后,MySQL立即执行自定义错误处理程序,然后立刻停止其他MySQL语句的执行。

错误触发条件以及错误处理程序,请参看章节内容。 5.游标的使用步骤是什么?每一个步骤完成什么任务? 答:请参看章节内容。

6.举例说明,如何遍历游标中的“结果集”。 答:请参看章节内容。

7.使用预处理SQL语句有哪些注意事项?预处理SQL语句与静态SQL语句有什么区别和联系?

答:注意事项请参看章节内容;预处理SQL语句与静态SQL语句有什么区别和联系请参看章节内容。

第九章答案

1.请简单描述事务的必要性。 答:请参看章节内容。

2.关闭MySQL自动提交的方法有哪些?您推荐数据库开发人员使用哪一种方法? 答:请参看章节内容。推荐数据库开发人员尽可能地使用MySQL命令“start transaction;”隐式地关闭自动提交,使用MySQL命令“commit;”显示地提交更新语句。

3.关闭MySQL自动提交后,提交更新语句的方法有哪些?您推荐数据库开发人员使用哪一种方法?

答:请参看章节内容。推荐数据库开发人员尽可能地使用MySQL命令“start transaction;”隐式地关闭自动提交,使用MySQL命令“commit;”显示地提交更新语句。

4.请简单描述典型的事务处理使用方法。 答:请参看章节内容。

5.请简单描述典型的事务保存点使用方法。您是如何理解保存点是“临时状态”这句话的?

答:请参看章节内容。

6.请简单描述锁机制的必要性。 答:请参看章节内容。

7.为MyISAM表施加表级锁的语法格式是什么? 答:请参看章节内容。

8.为MyISAM表施加表级锁时,read local与read选项有什么区别? 答:请参看章节内容。

9.您是如何理解锁的粒度、隐式锁与显式锁、锁的类型、锁的钥匙以及锁的生命周期等概念的?

答:请参看章节内容。

10.您如何理解锁的粒度、锁的生命周期与数据库的并发性能之间的关系?

答:锁的粒度越小,锁的生命周期越短,数据库的并发性能就越高,数据库越适合做并发更新操作。反之亦然。

11.您如何理解锁的粒度、锁的生命周期与服务器资源之间的关系?

答:锁粒度越小,完成某个功能时所需要的加锁、解锁的次数就会越多,反而会消耗较多的服务器资源,甚至会出现资源的恶性竞争,甚至发生死锁问题。锁是数据库管理系统重要的数据库资源,需要耗费一定的服务器内存,锁的生命周期越长,该锁占用服务器内存的时间间隔就越长;锁的生命周期越短,该锁占用服务器内存的时间间隔就越短。因此为了节省服务器资源,数据库开发人员必须尽可能的缩短锁的生命周期,尽可能早地释放锁资源。

12.“选课系统”应该使用哪种粒度的锁机制?为什么?

答:对于“选课系统”而言,系统需要为上百名学生,甚至几百名学生同时提供选课、调课、退课服务。为了提高并发性能,“选课系统”将选用行级锁,这也是“选课系统”的各个数据库表使用InnoDB存储引擎的原因。

13.为InnoDB表施加行级锁的语法格式是什么? 答:请参看章节内容。

14.请列举现实生活中的“资源竞争”问题,如何使用锁机制解决此类“资源竞争”问题?

答:现实生活中,选课系统就存在“资源竞争”问题,解决方案请参看章节内容。 15.完成调课功能的replace_course_proc()存储过程以及完成选课功能choose_proc()存储过程使用了行级锁解决了“资源竞争”问题,能不能将存储过程中下面的select语句写在“start transaction;”语句之前,以便缩短行级锁的生命周期?

说明:题目中的“select state into status from course where course_no=c_no”应该修改为

“select available into s3 from course where course_no=c_no for update” 答:select available into s3 from course where course_no=c_no for update 必须放在“start transaction;”语句之后,目的是:延长行级排他锁的生命周期,所以需要将该select语句写在了start transaction语句后,封装到事务中。

16.InnoDB什么时候使用间隙锁,什么时候使用记录锁?间隙锁与记录锁之间的区别是什么?

答: 当事务的隔离级别设置为repeatable read,此时为InnoDB表施加行级锁,默认情况下使用间隙锁。当事务的隔离级别设置为read uncommitted或者read committed,此时为InnoDB表施加行级锁,默认情况下使用记录锁(record lock)。

间隙锁(next-key锁):当检索条件为某个区间(例如account_no between 1 and 100)范围时,对该区间范围施加共享锁或排他锁后,满足该区间范围的记录(例如account_no=1或者account_no=2的记录)存在共享锁或排他锁;满足该区间范围,但表中不存在的记录(例如account_no=50或者account_no=100的记录)也会存在共享锁或排他锁,即行级锁会锁定相邻的键(next-key locking)。

记录锁:与间隙锁不同,记录锁仅仅为满足该查询范围的记录施加共享锁或排他锁。

17.锁等待与死锁之间是什么关系? 答:请参看章节内容。

18.请解释事务的ACID特性。 答:请参看章节内容。

19.MySQL支持哪些事务隔离级别?默认的事务隔离级别是什么? 答:请参看章节内容。

20.每一种事务隔离级别可能引发什么问题? 答:脏读、不可重复读、幻读、死锁等问题。

21.脏读现象、不可重复读现象以及幻读现象之间有什么区别? 答:请参看章节内容。

22.您如何理解事务、锁机制、事务的隔离级别之间的关系? 答:请参看章节内容。

select state into status from course where course_no=c_no;

第十章答案

1.选用PHP脚本语言开发网上选课系统的原因是什么? 答:请参看章节内容。

2.请简单描述PHP脚本程序的工作流程。 答:请参看章节内容。

3.什么是软件开发生命周期?对于一个真实的软件项目而言,您觉得编码阶段是软件开发生命周期中最难实现的环节吗?

答:请参看章节内容。对于一个真实的软件项目而言,编码阶段仅仅是软件开发生命周期中的其中一个环节,并不是最难实现的环节,俗话说,万事开头难,一般而言,最难实现的环节一般是系统规划和系统分析阶段。

4.请简单描述网上选课系统的目标、可行性分析、项目进度、人员分工。 答:请参看章节内容。

5.请简单描述网上选课系统的功能需求分析与非功能需求分析。 答:请参看章节内容。

6.请简单描述网上选课系统的系统设计。 答:请参看章节内容。

7.按照本章要求、步骤实现网上选课系统。 答:请参看本章代码部分内容。

8.根据本章的知识,参看视图与触发器章节的内容,为网上选课系统添加两个新的功能模块:重置所有学生的密码,重置所有教师的密码。

答:代码略。

9.根据本章的知识,为网上选课系统添加新的功能模块:任课教师编辑未经审核的课程信息。

答:代码略。

10.什么是MVC模式,使用MVC模式开发程序有哪些优点? 答:请参看章节内容。

11.编写功能测试用例,测试网上选课系统其他功能模块。 答:请参看章节内容。

MySQL数据库基础与实例教程练习题参考答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c2ql4o04gqt5gf8x599ez10e609m8f001ba4_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top