好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

函数的功能:对日期时间进行格式化。 10.通过本章知识的讲解,您是如何理解中文全文检索的?您觉得实现中文全文检索的核心技术是什么?

答:请参考第五章课后习题答案。

第七章答案

1.视图与基表有什么区别和联系?视图与select语句有什么关系? 答:视图与基表有什么区别和联系:

数据库表称为基本表或者基表,视图称为虚表。基表的数据发生变化时,虚表的数据也会随之变化。

触发器基于表(严格地说是基于表的记录),这里的表是基表,不是临时表(temporary类型的表),也不是视图。

通过视图虽然可以更新基表的数据,但本书并不建议这样做。原因在于,通过视图更新基表数据,并不会触发触发器的运行。

视图与select语句有什么关系:

视图中保存的就是一条select语句。对于经常使用的结构复杂的select语句,建议将其封装为视图。

2.什么是检查视图?什么是local检查视图与cascaded检查视图?

答:创建视图时,没有使用with check option子句时,即with_check_option的值为0,表示视图为普通视图;使用with check option子句或者with cascaded check option子句时,表示该视图为cascaded检查视图;使用with local check option子句,表示该视图为local检查视图。

检查视图:通过检查视图更新基表数据时,检查视图对更新语句进行了先行检查,只有满足检查条件的更新语句才能成功执行。如果更新语句不满足检查视图定义的检查条件,则检查视图抛出异常,更新失败。

local检查视图与cascaded检查视图的区别联系,请参看7.1.7章节内容

3.请用触发器实现检查约束:一个学生某门课程的成绩score要求在0到100之间取值。

答:本题需要为choose表创建了一个before、insert触发器和一个before、update触发器。由于本章7.2.3章节中,已经为choose表创建了一个before、insert触发器和一个before、update触发器。而同一个表不能创建两个相同触发时间、触发事件的触发程序。

因此,为了实现本题功能,需要首先删除7.2.3章节中的两个触发器。 drop trigger choose_insert_before_trigger; drop trigger choose_delete_before_trigger; 然后再为choose表创建一个after、insert触发器和一个after、update触发器,自动维护课程available的字段值。

delimiter $$ create trigger choose_insert_after_trigger after insert on choose for each row begin update course set available=available-1 where course_no=new.course_no; end; $$ delimiter ;

delimiter $$ create trigger choose_delete_after_trigger after delete on choose for each row begin update course set available=available+1 where course_no=old.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(new.score>=0 && new.score<=100) then set new.score = new.score; 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(new.score>=0 && new.score<=100) then set new.score = new.score; else insert into mytable values(0); end if; end; $$ delimiter ;

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

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

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

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

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

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

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

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

第八章答案

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

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

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

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

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

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

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

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

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

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

函数的功能:对日期时间进行格式化。10.通过本章知识的讲解,您是如何理解中文全文检索的?您觉得实现中文全文检索的核心技术是什么?答:请参考第五章课后习题答案。第七章答案1.视图与基表有什么区别和联系?视图与select语句有什么关系?答:视图与基表有什
推荐度:
点击下载文档文档为doc格式
8cezz67lc55gf8x599ez10e609m8f001b9f
领取福利

微信扫码领取福利

微信扫码分享