北邮大数据库实验三
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三完整性及视图、索引
视图是基于某个查询结果的一个虚拟表,只是用来查看数据的窗口而已。索引能够提供一种以一列或多列的值为基础迅速查找数据表(或视图)中行的能力,用来快速访问数据表(或视图)中的数据。触发器是一种特殊的存储过程,它在特定语言事件发生时自动执行,通常用于实现强制业务规则和数据完整性。
【实验目的】
掌握MySQL视图、索引的使用,理解什么是数据库的完整性。
【实验要求】
1、每完成一个任务,截取全屏幕快照1~3作为中间步骤和结果的贴图,粘贴在最后的实验报告中。
2、除了使用我们提供的数据外还要自己向表中添加些新数据,以保证每个查询结果不为空集,或计数结果不为0。
3、思考题可以选做,作为优秀加分的依据。
【实验任务】
1、创建一个视图,该视图为每门课程的平均成绩,视图包括的列有课程号
及平均成绩,并用利用该视图查询所有课程的平均成绩,要求给出课程号、课程名及平均成绩。
2、创建一个视图,该视图为每门课程的平均成绩,视图包括的列有课程号、
课程名及平均成绩,并用利用该视图查询所有课程的平均成绩,要求给出课程号、课程名及平均成绩。
3、为院系代码表(dept_code)创建基于“院系代码”列的索引。
4、为教室信息表(classroom_info)创建基于room_id列的惟一索引并插入一
条room_id列与表中已有的值重复的数据,观察系统的反馈。
5、重新修改表stud_info、lesson_info及stud_grade,修改的容为:
①为三表增加主码约束,stud_info的主码为stud_id,lesson_info的主码为
course_id,stud_grade的主码为stud_id、course_id。
②为表stud_grade增加外码,其中stud_id参照stud_info的stud_id,course_id参照lesson_info的course_id。
5、使用SQL语句向上题的3表中插入新的数据,要求分别违反刚刚增加的
主码约束、外码约束及原有的非空约束并观察系统的反馈。
a.违反主码约束:
b.违反外码约束
c.违反非空约束
6、删除stud_info及lesson_info表里的部分数据使得表stud_grade中存在违
反外码约束的数据并观察系统的反馈。
【思考题】
1在学生成绩表上建一个触发器阻止将成绩由及格改为不及格。
2、两名同学一组,各自设计一些简单的事务(对数据的增删改等操作)。要求先将参数autocommit设为无效且所有的事务以start transaction开始,这些事务有的以rollback结束、有的以commit结束,有的没有明确的结束语句。
3、两名同学各自用自己的客户端登录同伴的服务器并各自执行自己的事务,同时通过SELECT语句在rollback、commit等语句执行前后分别观察一次执行结果(自己查看结果的同时,同伴用相同的语句在另一电脑上也要查看)。
4、执行完没有明确的结束语句的事务后,在同伴观察结果后,选择关闭自己使用的客户端软件看看有什么情况发生,同伴同时再次观察结果。
5、根据实验结果你对MySQL的相关策略有什么样的认识?