数据库实验答案Word格式.docx
《数据库实验答案Word格式.docx》由会员分享,可在线阅读,更多相关《数据库实验答案Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
中的3
张表(见下面),同时指定主码、外码、约束等。
3、在3张表中插入下面的示例数据
表1
学生表(Students)数据
学号Sno
姓名Sname
性别Ssex
出生日期Sbirthday
所在系Sdept
备注Memo
钟耀华
男
1987-05-01
计算机
优秀毕业生
吴佳硕
女
1987-03-24
爱好:
音乐
吴纯斌
1988-07-01
王腾飞
1988-05-04
机电
林师微
1987-04-03
体育
李乐怡
1986-03-03
李奇
1988-09-17
工商管理
表2
课程表(Courses)数据
课程号Cno
课程名Cname
先行课PreCno
学分Credit
C1
数据结构
4
C2
数据库原理
C3
大型数据库
3
C4
高尔夫
1
表3
选课表(SC)数据
成绩Grade
61
72
88
50
78
52
87
实验(3)、交互式SQL
(2)—简单查询
2012-04-2622:
12:
00|
分类:
默认分类|字号
订阅
实验目的:
掌握单表查询SELECT、FROM、WHERE
的用法,特别要掌握比较运算符、逻辑运算符的使用。
注意事项:
子句WHERE<
条件>
表示元组筛选条件;
子句HAVING<
表示元组选择条件;
必须和GROUPBY
子句配合使用;
二、教材例题练习(不需要记录在实验报告上)
在实验
(2)创建的表与插入的示例数据(数据库TSC)基础上,完成教材P83
例3.9
三、实验内容与步骤(在实验报告中记录每个查询的SQL语句)
在实验
(2)创建的表与插入的示例数据(数据库StudentCourse)基础上,完成
①
查询计算机系全体学生的信息
②
查询姓“李”的学生的学号和姓名。
③
查询课程表中先行课为空的课程名。
④
查询考试成绩有不与格的学生的学号。
⑤
求选修了C1
课程或C2
课程的学生的学号与成绩。
⑥
查询全体计算机系学生的姓名与其年龄。
⑦
查询计算机系在1986-1987
年之间出生的学生的姓名。
⑧
查询姓“李”的前2个学生(按姓名升序排列)的学号和姓名。
⑨
查询选修了两门以上课程的学生学号与课程数。
⑩
查询选修课程数大于等于2
的学生的学号、平均成绩和选课门数,并按平均成绩降序排列。
附:
参考解答
实验(4)、交互式SQL(3)—复杂查询
16:
24|
1.
理解多表查询的概念;
掌握多表查询的SELECT、
FROM、WHERE、JOIN子句的用法,特别要对比内连接、外连接的结果差异。
2.
掌握查询中嵌套查询和组合查询的操作方法,进一步加深对SELECT
语句的理解。
1、
内连接、
左外连接和右外连接的含义与表达方法;
2、
子句的使用,注意语句的层次嵌套关系和括号的配对使用问题;
在实验
(2)创建的表与插入的示例数据(数据库TSC)基础上,完成
1、教材P93
例3.19,注意some,
all的使用方法,并掌握其相应的IN
、NOTIN的等价表示
2、教材P94
例3.20,注意SQLServer2000不支持
Unique谓词,请给出解决这个问题的SQL语句,并记录在教材例3.20的旁边。
在查询分析器中输入SELECT
查询语句,对在实验
(2)中已完成的StudentCourse数据库中的表,进行下列查询操作:
1、多表连接查询
(1)
查询选修了【数据库原理】的计算机系的学生学号和姓名。
(2)
查询每一门课的间接先行课(即先行课的先行课)。
(3)
查询学生的学号、姓名、选修课程的名称和成绩。
(4)
查询选修了课程的学生姓名。
(5)
查询所有学生的信息和所选修的课程,没有选课的同学对应的选课信息为空。
(6)
查询所有课程的课程编号、课程名称与选课人数,没有被选的课程选课人数显示为0。
(7)
列出学生所有可能的选修情况。
(8)
查找计算机系的学生选修课程数大于2
的学生的姓名、
平均成绩和选课门数,并按平均成绩降序排列。
2、嵌套查询和组合查询操作。
统计选修了【数据库原理】课程的学生人数。
查询没有选修【数据库原理】课程的学生信息。
查询其他系中比计算机系学生年龄都小的学生。
查询被
学生或
学生所选修的课程的课程号(用UNION
组合查询与IN
条件查询两种方法实现)。
查询
学生和
学生同时选修的课程的课程号(用IN
子查询与EXISTS
嵌套子查询两种方法实现)。
查询被学号
学生所选修的课程的课程号。
实验(5)、交互式SQL(4)—数据更新
19:
2010级数据库教学|字号
熟悉插入、修改和删除SQL
语句的用法
对于INSERT
语句,要求理解默认值约束、非空约束在插入时所起的作用。
1、教材P98
例3.25,注意更正教材上第③,⑤小题的错误,并记录在该题的旁边
2、教材P99
例3.26
3、教材P99
例3.27,注意更正教材上第④小题的错误,并记录在该题的旁边
向表Students
中插入(0601001,赵林,
男,1985-09-08,计算机)的记录。
向SC
表中添加一个学生的选课记录,学号为,所选的课程号为C2。
SC表中有Sno、Cno、Grade
这3
个列。
这里只知道学号和课程号,不知道成绩值。
中插入(0601002,张修雨,default)记录,该记录的数据中default
表示默认值‘男’,其他数据为空值。
用CREATE
语句建立表StudentBAK1,包含(与Students
的Sno、Sname、Sdept
相同)3
个字段,
然后用INSERTSELECT
语句实现向StudentBAK1
添加Students
表中的计算机系学生的学号、姓名、所在系的信息。
用
SELECT…INTO
语句实现把Students
表中1986
年后(包含1986
年)出生的学生的学号、姓名存储到一个新表StudentBAK2。
将Students表中姓名为【赵林】的同学所在系改为【机电】,爱好改为【足球】。
将选修了课程名为【数据库原理】并且有成绩的学生成绩加5
分。
将StudentCourse
数据库的StudentBAK1
表中所有姓赵的同学删除。
删除机电系课程成绩不与格或者没有登记成绩的学生选课记录。
数据库的StudentBAK2
表中的所有行删除。
实验(六)、第四章数据库安全性
2011-11-0113:
00:
58|
一、实验目的
1.熟悉通过SQL语句对数据进行安全控制
2.完成《数据库系统概论》(第四版)一书中第四章例题的上机练习
二、实验平台
MSSQLServer2000
三、实验要求
1、使用SQL语句对数据进行安全控制,包括授权和权力回收。
2、授权操作完成后,检查用户是否真正具有所授予的数据操作权力;
在权力回收操作之后,用户是否确实丧失了所回收的数据操作权力。
四、实验内容与完成情况(实验参考解答见教学博客)
在实验开始之前,需要把ftp(网盘上亦提供)上所提供的2个数据库文件(实验(6)student.mdf,
实验(6)student_log.ldf)下载到本机,并将其附加到SQLServer上。
附加完成以后,会出现数据库student,在这个数据库中已建立了三张基本表:
student、course、SC,下面的实验是在这3张表的基础上进行的。
1.在数据库student中创建7个用户U1,U2,U3,U4,U5,U6,U7
<
记录下创建用户的过程,需要自己完成>
记录你的实际操作过程
2.完成教材4.2.4小节[例1]~[例7](P138~139)的授权语句。
记录下授权的过程,需要自己完成>
3.在授权完成以后,验证用户是否拥有相应的权限
注意:
验证时需要分别以不同的用户(U1~U7)身份登录到数据库,进行相关的操作,检查他们是否具有教材表4.4(P139)中的相应权限。
记录下验证过程,需要自己完成>
4.完成教材4.2.4小节[例8]~[例10](P140)的权限回收语句,并验证在权限回收以后,该用户是否真正丧失了对数据的相应权限。
记录下权限回收与验证过程,需要自己完成>
5.数据库角色的使用
包括:
创建角色,为角色授权,将用户添加到角色中,从角色移除用户等操作,角色概念介绍参考教材4.2.5小节数据库角色的内容(P142),而在SQLServer上机操作需要参考教学博客上提供的示例代码自行完成。
记录下角色的使用过程,需要自己完成>
五、出现的问题与解决方案
记录下自己在实验过程中出现的问题与解决方法,需要自己完成>
附录一:
SQLServer2000数据库附加方法
附录二:
本次实验参考解答
实验(七)、第五章数据库完整性
2011-11-0714:
37:
12|
1.熟悉通过SQL语句对数据进行完整性控制
2.完成《数据库系统概论》一书中第五章例题的上机练习
使用SQL语句对数据进行完整性控制,包括3类完整性约束、CHECK短语、CONSTRAINT子句、触发器。
通过实验证实,当操作违法完整性约束条件时,系统是如何处理的。
四、实验内容与完成情况
在本次实验中,对数据完整性进行上机练习。
包括3类完整性、CHECK短语、CONSTRAINT子句、触发器。
因为完整性约束绝大部分是在定义表结构时进行的,因此可能需要多次重复定义同一张表。
如果表名发生重复,则需要先删除旧表后再重新建立。
在开始实验之前,先创建一个名为Practice7的数据库,下面所有的SQL语句都是在Practice7这个数据库内执行的
1.在数据库Practice7中创建教材P82的student,course,sc三张表,先不设置主键,检查能否向表中插入重复值。
记录下验证的过程,需要自己完成>
2.实体完整性:
删除上一步创建的3张表,重新创建,对每张表都设置主键,先不为SC
表设置外键。
再次检查能否向表中插入重复值,能否在SC表中插入不存在的学号(Sno)或者课程号(Cno)
3.
参照完整性:
删除上一步创建的SC表,重新创建SC表并为其设置主键和外键。
再次验证能否在SC表中插入不存在的学号(Sno)或者课程号(Cno)
4.
用户定义的完整性:
完成教材
P158[例10],并通过插入数据进行验证。
5.触发器的使用(选做)
创建一个名为Tab的表,它仅包含一整数列(列名为col)。
在表Tab上定义触发器Tri,在对Tab表插入或者更新前进行检查,如果插入或更新的值在60~100之间,将值设置为60;
如果大于100,则给出新值不允许大于100的提示信息。
附录: