数据库实验指导书
数 据 库 实验指导书
电气与电子工程学院
实 验 项 目
实验一 认识DBMS 及数据库的建立
实验二
实验三
实验四
交互式SQL(数据库查询与更新) 数据控制(安全性部分) 数据控制(完整性部分)
实验一 认识DBMS 及数据库的建立
一、实验目的:
1. 掌握使用SQL SERVER企业管理器及SQL 语言创建数据库与表。
2. 掌握使用SQL SERVER企业管理器及SQL 语言修改数据库与表。
3. 掌握使用SQL SERVER企业管理器及SQL 语言删除数据库与表。
二、实验内容及步骤:
1. 通过用企业管理器创建一个指定多个数据文件和日志文件的数据库,该数据库名称为jiaoxuedb ,要求:
有1个10MB 和1个20MB 的数据文件和2个10MB 的事务日志文件。数据文件逻辑名称为jiaoxuedb1和jiaoxuedb2,物理文件名为jiaoxuedb1.mdf 和jiaoxuedb2.mdf 。主文件是jiaoxuedb1,由primary 指定,两个数据文件的最大尺寸分别为无限大和100MB ,增长速度分别为10%和1MB 。事务日志文件的逻辑名为jiaoxuedblog1和jiaoxuedblog2,物理文件名为jiaoxuedblog1.df 和jiaoxuedblog2.ldf ,最大尺寸均为50MB ,文件增长速度为1MB 。
2. 用企业管理器在jiaoxuedb 数据库中建立如下表:
学生表: jiaoxuedbdent
课程表: Course
选课表: SC
3. 查看表格:显示当前数据库中所有对象的信息。
4. 利用企业管理器删除表:
在企业管理器中,展开指定的数据库和表格项,用右键单击要删除的表,从快捷菜单中选择“除去表”选项,则会出现除去对象对话框。单击“全部删除”按钮,即可去除 表。
5. 利用企业管理器删除数据库jiaoxuedb 。
6. 用SQL 语言创建数据库jiaoxuedb :
7. 用SQL 语言创建jiaoxuedb 中的表:
实验二 交互式SQL(数据库查询与更新)
一、实验目的:
1. 掌握SELECT 查询语句在单表查询、连接查询、嵌套查询和集合查询中的常规用法。
2. 掌握常用聚集函数的用法。
3. 掌握LIKE 、DISTINCT 、ORDER BY、GROUP BY及UNION 的用法。
4. 掌握带EXISITS 的查询语句。
5. 掌握用SQL 语句实现数据的插入、修改和删除。
二、实验内容及步骤:
基于jiaoxuedb 实验,需按实验一中的数据值建立数据库及其中的表。
1. 重建实验一中的数据库jiaoxuedb 和其中的表,并插入相应数据值。 插入jiaoxuedb 库中各表值:
2. 重建实验一中的数据库jiaoxuedb 和其中的表,并插入相应的数值。 创建数据库jiaoxuedb :
创建jiaoxuedb 中的表:
插入jiaoxuedb 库中各表值:
3. 将数据库jiaoxuedb 中信息系全体学生的成绩置0。
4. 将数据库jiaoxuedb 中电子商务系学生年龄增加1岁。
5. 将数据库jiaoxuedb 中计算机系所有学生的选课记录删除。
6. 查询成绩在80~90之间的记录。
7. 查询至少有4个同学选修的课程名。
8. 查询其他系中比“信息系”所有学生年龄都打的学生名单及年龄,并按年龄降序输出。
9. 查询与学生张建国同岁的所有学生的学号、姓名和系别。
10. 查询选修了2门以上课程的学生名单。
11. 查询至少有一门与“张建国”选课相同的学生的姓名、课程名和系别。
12. 查询成绩比该课程平均成绩高的学生的成绩表。
13. 查询选修课号为01001课程且成绩高于课程01002学生的成绩姓名、此两门课程的选
修课程名和成绩。
/*方法一*/ USE jiaoxuedb
SELECT Sname,Cname,Score FROM jiaoxuedbdent ,SC,Course WHERE jiaoxuedbdent.Sno in GO /*方法二*/ USE jiaoxuedb
SELECT Sname,Cname,Score FROM jiaoxuedbdent ,SC,Course WHERE jiaoxuedbdent.Sno in
GO
(SELECT Sno FROM SC x WHERE Score >=
(SELECT AVG(Score) FROM SC y WHERE y.Sno=x.Sno AND x.Cno='01001' AND y.Cno='01002') (SELECT s1.Sno FROM SC s1,SC s2
WHERE s1.Cno='01001' AND s2.Cno='01002' AND s1.Score>s2.Score AND s1.Sno=s2.Sno) AND SC.Sno=jiaoxuedbdent.Sno AND Course.Cno=SC.Cno
AND SC.Sno=jiaoxuedbdent.Sno AND Course.Cno=SC.Cno)
14. 查询所有未修01001号课程的学生名单。
15. 查询每个同学各门课程的平均成绩和最高成绩,按降序排列输出姓名、平均成绩、最
高成绩。
16. 查询所有学生都选修了的课程号和课程名。
17. 查询选修了991102号学生选修了的课程的学生学号和姓名。
实验三 数据控制(安全性部分)
一、实验目的:
1. 掌握利用SQL 语言及SQL SERVER企业管理器创建索引的操作。 2. 掌握利用SQL 语言及SQL SERVER企业管理器创建和查看视图的操作。 3. 掌握利用SQL 语言及SQL SERVER企业管理器修改和删除视图的操作。
二、实验内容及步骤:
基于jiaoxuedb 实验,需按实验二中的数据值建立数据库及其中的表。 1. 对教师表Teacher 中的教师号Tno 创建聚族索引,并按降序排列。
2. 对学生选课表SC ,先按课号Cno 升序排列,再按成绩Score 降序排列。
3. 对表jiaoxuedbdent 中的学号Sno 创建唯一索引,并按升序排列。
4. 通过企业管理器的索引管理功能观察Teacher 、jiaoxuedbdent 和SC 索引的建立情况。
5. 用DROP INDEX语句删除以上建立的索引。
6. 创建成绩视图SCORE_VIEW,包含学号SNO, 姓名SN ,课程名CN ,成绩SCORE 。
7. 创建一个计算机系学生名单视图S_VIEW,包含学号SNO ,姓名SN ,性别SEX 。
8. 通过上面的视图,修改学号为991102,课号为01001的成绩记录。
9. 创建一个视图,计算机系学生的成绩单SCORE_VIEW_CDEPT,包含学号SNO ,姓名
SN ,课程名CN ,成绩SCORE 。
10. 给视图S_VIEW增加一个年龄AGE 字段。
11. 创建一个教师工资表视图SAL_VIEW,包含字段教师名Tname ,性别Sex ,职称Prof ,
工资总和SALSUM ,系别Dept 。
12. 通过视图查询教师“张明”的工资收入。
13. 通过视图S_VIEW,删除学生王蕾的记录。
实验四 数据控制(完整性部分)
一、 实验目的:
掌握关系数据库中的实体、参照及用户自定义完整性约束定义。
二、实验内容及步骤:
基于jiaoxuedb 实验,需按实验三中的数据值建立数据库及其中的表。 1. 对各表创建实体完整性。
2. 创建表之间的参照完整性。
3. 用不同的方法创建下面约束。
(1)
“
性
别
”
字
段
取
值
为
:
„
男
‟
或
„
女
‟
;
默
认
值
„男‟;
(2)“年龄”和“分数”字段取值限定为:0~100之间。
:
4. 向表中添加数据、更新数据验证约束。要求
1)使用INSERT INTO 命令向表中分别插入若干数据,验证主键约束、唯一性约束、非空约束。
2)使用UPDA TE 命令更新数据,验证外键约束及以上建立自定义约束。 5. 依次删除以上约束。
6. 用SQL SERVER企业管理器完成以上完整性约束操作。