《数据库概论》实验指导书.docx
- 文档编号:13695952
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:14
- 大小:21.34KB
《数据库概论》实验指导书.docx
《《数据库概论》实验指导书.docx》由会员分享,可在线阅读,更多相关《《数据库概论》实验指导书.docx(14页珍藏版)》请在冰点文库上搜索。
《数据库概论》实验指导书
《数据库概论》实验指导书
(2010级)
一、实验目的:
数据库系统是一门应用性很强的课程,上机实验是数据库课程的重要环节。
本实验是结合《数据库概论》课程的学习而开设的实验。
本实验目的如下:
1.通过上机实验,加深对数据库系统理论知识的理解,增强对网络环境下大型数据库的感性认识和实际操作能力;
2.通过使用具体的DBMS,了解一种实际的数据库管理系统,并掌握其操作技术。
熟悉ORACLE数据库的Net8工具,掌握ORACLE数据库的网络连接配置;
3.学习使用SQL语言,加深对SQL语言的认识和理解,提高SQL语言的实际应用能力;
4.加强对事务处理、权限管理等概念的认识和理解。
二、适应专业:
计算机科学和技术专业
三、实验学时数:
8学时
四、实验内容及学时安排:
实验一:
数据定义/数据操纵语言
实验目的:
熟悉Oracle上机环境以及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。
学时数:
2学时
实验内容:
SQL数据定义语句,SQL数据操纵语句。
实验要求:
1.熟悉Oracle上机环境;
2.建立数据库表,修改数据库表结构,建立、删除索引;
3.对数据库表进行插入、修改和删除数据的操作。
实验二:
数据查询语言
实验目的:
体会SQL语言数据查询功能的丰富和复杂。
学时数:
4学时
实验内容:
SQL数据查询语句。
实验要求:
对数据库表进行各种查询操作。
实验三:
视图、授权控制与事务处理
实验目的:
通过实验进一步理解视图的建立和更新、数据库的权限管理和事务处理功能。
学时数:
2学时
实验内容:
1.视图的定义与操纵;
2.SQL数据控制语句;
3.SQL事务处理。
实验要求:
1.建立视图,视图查询,视图更新;
2.给某一或全部用户授权和收回授权;
3.事务回退,事务提交。
五、教材及参考文献
1.《数据库系统概论》(第三版)萨师煊等编著高等教育出版社2000.2
2.《ORACLE8.xForWindowsNT实用教程》翁正科等编著清华大学出版社1998.10
六、实验环境
实验要求如下环境
服务器端:
Windows2000NTServer;
ORACLE8.xDatabaseServerForWindowsWindows2000Server
客户端:
Windows9x;Oracle8.xClient
网络协议:
TCP/IP
七、成绩考核
上机实验考核采取实验报告和上机抽查检验相结合的方式。
每次实验结束后都必须写出实验报告。
八.实验报告
实验一:
数据定义/数据操纵语言
[实验日期]年月日
[实验目的]
熟悉Oracle上机环境以及Oracle客户端的配置;熟练掌握和使用DDL语言,建立、修改和删除数据库表、主键、外键约束关系和索引;熟练掌握和使用DML语言,对数据进行增加、修改和删除操作。
[实验内容]
Oracle上机环境以及Oracle客户端的配置参见附录。
1.SQL数据定义语句:
例1-1:
(建立数据库表)建立教学数据库的四个数据库表,其中Student表中不包含SSEX(C,2)字段,Sname字段为Sname(C,8)且可为空。
例1-2:
(修改数据库表)在Student表中增加SSEX(C,2)字段。
例1-3:
(修改数据库表)将Student表中把Sname字段修改为Sname(C,10)且为非空。
例1-4:
(建立索引)为Score表按学号升序和按分数降序建立索引,索引名为GRADE_NDX。
例1-5:
(删除索引)删除索引SC_NDX_SNO。
例1-6:
(建立数据库表)建立数据库表S1(SNO,SNAME,SD,SA),其字段类型定义与Student表中的相应字段(SNO,SNAME,SDEPT,SAGE)的数据类型定义相同。
例1-7:
(修改数据库表)删除成绩表Score的参照完整性约束关系。
例1-8:
(修改数据库表)添加成绩表Score的参照完整性约束关系。
2.SQL数据操纵语句:
例2-1:
(插入数据)按前面各表中的数据分别插入到教学数据库的四个数据库表中。
例2-2:
(多行插入)将表Student中在计算机系(‘CS’)的学生数据插入到表S1中。
例2-3:
(利用查询来实现表的定义与数据插入)求每一个学生的平均成绩,把结果存入数据库表Student_Gr中。
例2-4:
(修改数据)将S1表中所有学生的年龄加2。
例2-5:
(修改数据)将Course表中‘程序设计’课时数修改成与‘数据结构’的课时数相同。
例2-6:
(插入数据)向Score表中插入数据(‘98001’,‘001’,95),根据返回信息解释其原因。
例2-7:
(插入数据)向Score表中插入数据(‘97001’,‘010’,80),根据返回信息解释其原因。
例2-8:
(删除数据)删除Score表中学号为‘96001’的成绩信息,根据返回信息解释其原因。
例2-9:
(删除数据)删除Score表中课程号为‘003’的成绩信息,根据返回信息解释其原因。
例2-10:
(删除数据)删除学生表S1中学号以96打头的学生信息。
例2-11:
(删除数据)删除数据库表S1中所有学生的数据。
例2-12:
(删除表)删除数据库表S1和Student_Gr。
[实验要求]
①熟悉Oracle上机环境,掌握Oracle客户端的配置;
②建立数据库表,修改数据库表结构,建立、删除索引;
③对数据库表进行插入、修改和删除数据的操作。
[实验方法]
①按照附录中的操作步骤进行客户端的配置;
②将实验需求用SQL语句表示;
③执行SQL语句;
④查看执行结果,如果结果不正确,进行修改,直到正确为止
。
[实验总结]
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;
④收获与体会。
实验二:
数据查询语言
[实验日期]年月日
[实验目的]
体会SQL语言数据查询功能的丰富和复杂。
[实验内容]
3.SQL数据查询语句:
例3-1:
(选择表中的若干列)求全体学生的学号、姓名、性别和年龄。
例3-2:
(不选择重复行)求选修了课程的学生学号。
例3-3:
(选择表中的所有列)求全体学生的详细信息。
例3-4:
(使用表达式)求全体学生的学号、姓名和出生年份。
例3-5:
(使用列的别名)求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。
例3-6:
(比较大小条件)求年龄大于19岁的学生的姓名和年龄。
例3-7:
(比较大小条件)求计算机系或信息系年龄大于18岁的学生的姓名、系和年龄。
例3-8:
(确定范围条件)求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。
例3-9:
(确定范围条件)求年龄不在19岁与22岁之间的学生的学号和年龄。
例3-10:
(确定集合条件)求在下列各系的学生信息:
数学系、计算机系。
例3-11:
(确定集合条件)求不是数学系、计算机系的学生信息。
例3-12:
(匹配查询)求姓名是以“李”打头的学生。
例3-13:
(匹配查询)求姓名中含有“志”的学生。
例3-14:
(匹配查询)求姓名长度至少是三个汉字且倒数第三个汉字必须是“马”的学生。
例3-15:
(匹配查询)求选修课程001或003,成绩在80至90之间,学号为96xxx的学生的学号、课程号和成绩。
例3-16:
(涉及空值查询)求缺少学习成绩的学生的学号和课程号。
例3-17:
(控制行的显示顺序)求选修003课程或004课程的学生的学号、课程号和分数。
例3-18:
(组函数)求学生总人数。
例3-19:
(组函数)求选修了课程的学生人数。
例3-20:
(组函数)求计算机系学生的平均年龄。
例3-21:
(组函数)求选修了课程001的最高、最低与平均成绩。
例3-22:
(分组查询)求各门课程的平均成绩与总成绩。
例3-23:
(分组查询)求各系、各班级的人数和平均年龄。
例3-24:
(分组查询)输入以下查询语句并执行,观察出现的其结果并分析其原因。
SELECTSNAME,SDEPT,COUNT(*)FROMSTUDENT
WHERESDEPT=’CS’GROUPBYSDEPT;
例3-25:
(分组查询)分析以下语句为什么会出现错误。
并给出正确的查询语句。
SELECTSAGEFROMSTUDENTGROUPBYSNO;
例3-26:
(分组查询)求学生人数不足3人的系及其相应的学生数。
例3-27:
(分组查询)求各系中除01班之外的各班的学生人数。
例3-28:
(涉及空值的查询)分别观察各组函数、行的显示顺序以及分组查询与空值的关系。
例3-29:
(自然连接查询)求学生号以及其选修课程的课程号和成绩,但查询结果中只能有一个SNO字段。
例3-30:
(连接查询)求选修了课程001且成绩在70分以下或成绩在90分以上的学生的姓名、课程名称和成绩。
例3-31:
(连接查询与表的别名)求选修了课程的学生的学生姓名、课程号和成绩。
例3-32:
(自身连接查询)求年龄大于’李丽’的所有学生的姓名、系和年龄。
例3-33:
(外部连接查询)求选修了课程002或003的学生的学号、课程号、课程名和成绩。
例3-34:
(子查询)求与‘李丽’年龄相同的学生的姓名和系。
例3-35:
(子查询)求选修了课程名为’数据结构’的学生的学号和姓名。
例3-36:
(子查询ANY)求比数学系中某一学生年龄大的学生的姓名和系。
例3-37:
(子查询ALL)求比数学系中全体学生年龄大的学生的姓名和系。
例3-38:
(子查询EXISTS)求选修了课程004的学生的姓名和系。
例3-39:
(返回多列的子查询)求与‘李丽’同系且同龄的学生的姓名和系。
例3-40:
(多个子查询)求与‘李丽’同系,且年龄大于‘黎明’的学生的信息。
例3-41:
(子查询中使用表连接)求数学系中年龄相同的学生的姓名和年龄。
例3-42:
(连接或嵌套查询)检索至少选修王成刚老师所授课程中一门课程的女学生姓名。
例3-43:
(嵌套与分组查询)检索选修某课程的学生人数多于3人的教师姓名。
例3-44:
(集合查询)列出所有教师和同学的姓名和性别。
例3-45:
(相关子查询)求未选修课程004的学生的姓名。
例3-46:
(相关子查询)求选修了全部课程的学生的姓名。
例3-47:
(相关子查询)求至少选修了学生‘96002’所选修的全部课程的学生的学号。
例3-48:
(相关子查询)求成绩比所选修课程平均成绩高的学生的学号、课程号、和成绩。
例3-49:
(相关子查询)查询被一个以上的学生选修的课程号。
例3-50:
(相关子查询)查询所有未选课程的学生姓名和所在系。
[实验要求]
对数据库表进行各种查询操作。
[实验方法]
①将实验需求用SQL语句表示;
②执行SQL语句;
③查看执行结果,如果结果不正确,进行修改,直到正确为止
。
[实验总结]
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;
④收获与体会。
实验三:
视图、授权控制与事务处理
[实验日期]年月日
[实验目的]
通过实验进一步理解视图的建立和更新、数据库的权限管理和事务处理功能。
[实验内容]
4.SQL视图的定义与操纵:
例4-1:
(建立视图)建立计算机系的学生的视图STUDENT_CS。
例4-2:
(建立视图)建立由学号和平均成绩两个字段的视图STUDENT_GR。
例4-3:
(视图查询)利用视图STUDENT_CS,求年龄大于19岁的学生的全部信息。
例4-4:
(视图查询)利用视图STUDENT_GR,求平均成绩为88分以上的学生的学号和平均成绩。
例4-5:
(视图更新)利用视图STUDENT_CS,增加学生(‘96006’,‘张然’,‘CS’,‘02’,‘男’,19)。
例4-6:
(视图更新)利用视图STUDENT_CS,将学生年龄增加1岁。
观察其运行结果并分析原因。
例4-7:
(视图更新)利用视图STUDENT_GR,将平均成绩增加2分。
观察其运行结果并分析原因。
例4-8:
(视图更新)删除视图STUDENT_CS中学号为‘96006’的学生的全部数据。
例4-9:
(视图更新)删除视图STUDENT_GR的全部数据。
例4-10:
(删除视图)删除视图STUDENT_CS和STUDENT_GR。
5.SQL数据控制语句:
例5-1:
(授权)给左右邻近同学(用户)授予在表Student上的SELECT权限,并使这两个用户具有给其他用户授予相同权限的权限。
例5-2:
(授权)给邻近同学(用户)授予Teach表上的所有权限。
例5-3:
(授权)给所有用户授予Score表上的SELECT权限。
例5-4:
(授权验证)观察左右邻近同学查询你所授权的表中的内容。
例5-5:
(收回授权)收回上面例子中的所有授予的权限。
6.SQL事务处理:
例6-1:
(事务回退)将课程名称表中的‘程序设计’课程学时数修改为80、‘编译原理’课程学时数修改为70学时,查询全部课程的总学时数后,取消所有修改(ROLLBACK)。
再次查询全部课程的总学时数。
注意比较分析两次查询的结果。
例6-2:
(事务提交)将课程名称表中的‘程序设计’课程学时数修改为80、‘编译原理’课程学时数修改为70学时,查询全部课程的总学时数后,确认所有修改(COMMIT)。
再次查询全部课程的总学时数。
注意比较分析两次查询的结果。
[实验要求]
①建立视图,视图查询,视图更新;
②给某一或全部用户授权和收回授权;
③事务回退,事务提交。
[实验方法]
①将实验需求用SQL语句表示;
②执行SQL语句;
③查看执行结果,如果结果不正确,进行修改,直到正确为止
。
[实验总结]
①SQL语句以及执行结果;
②对重点实验结果进行分析;
③实验中的问题和提高;
④收获与体会。
六.教学管理数据库设计
各表的数据结构和数据如下:
1.学生情况表Student
CS:
计算机系
SNO(C,5)
学号
SNAME(C,10)
姓名
SDEPT(C,2)
系
SCLASS(C,2)
班级
SSEX(C,2)
性别
SAGE(N,2)
年龄
96001
马小燕
CS
01
女
21
MA:
数学系
IS:
信息系
96002
黎明
CS
01
男
18
96003
刘东明
MA
01
男
18
96004
赵志勇
IS
02
男
注意:
区别大小写
20
97001
马蓉
MA
02
女
19
97002
李成功
CS
01
男
20
97003
黎明
IS
03
女
19
97004
李丽
CS
02
女
19
96005
司马志明
CS
02
男
18
主关键字:
SNO非空字段:
SNAME,SDEPT,SCLASS
2.课程名称表Course3.教师授课表Teach
CNO(C,3)
课程号
CNAME(C,16)
课程名称
CTIME(N,3)
学时数
TNAME(C,8)
教师姓名
TSEX(C,2)
性别
CNO(C,3)
课程号
TDATE
授课日期
TDEPT(C,2)
系
001
数学分析
144
王成刚
男
004
1999.9.5
CS
002
普通物理
144
李正科
男
003
1999.9.5
CS
003
微机原理
80
严敏
女
001
1999.9.5
MA
004
数据结构
72
赵高
男
004
1999.9.5
IS
005
操作系统
80
李正科
男
003
2000.2.23
MA
006
数据库原理
80
刘玉兰
女
006
2000.2.23
CS
007
编译原理
60
王成刚
男
004
2000.2.23
IS
008
程序设计
40
马悦
女
008
2000.9.6
CS
主关键字:
CNO候选关键字:
CNAME主关键字:
TNAME,CNO,TDEPT参照关系:
Course(CNO)
4.成绩表Score
SNO(C,5)
学号
CNO(C,3)
课程号
SCORE(N,5,2)
分数
SNO(C,5)
学号
CNO(C,3)
课程号
SCORE(N,5,2)
分数
SNO(C,5)
学号
CNO(C,3)
课程号
SCORE(N,5,2)
分数
96001
001
77.5
96005
004
92
96004
001
87
96001
003
89
96005
005
90
96003
003
91
96001
004
86
96005
006
89
97002
003
91
96001
005
82
96005
007
76
97002
004
96002
001
88
96003
001
69
97002
006
92
96002
003
92.5
97001
001
96
97004
005
90
96002
006
90
97001
008
95
97004
006
85
主关键字:
SNO,CNO参照关系:
Student(SNO),Course(CNO)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库概论 数据库 概论 实验 指导书