数据库原理及应.docx
《数据库原理及应.docx》由会员分享,可在线阅读,更多相关《数据库原理及应.docx(30页珍藏版)》请在冰豆网上搜索。
数据库原理及应
攀枝花学院
PanzhihuaUniversity
教案
2010~2011学年度第2学期
课程名称数据库原理
学时(学分)16
适用班级08网络
授课教师刘继光
教师职务
教学单位计算机学院
教务处制
实验教案编写说明
1、实验教案的编写要求参照《攀枝花学院教案编写规范》(攀院教[2007]04号)执行。
2、实验教案格式可按附后“实验教案”格式采用手写或打印。
3、实验教案的基本内容可包括:
教学目的与要求、教学重点与难点、仪器设备及用具、教学过程(含①实验预习检查②实验原理及方法③仪器设备介绍④实验内容及注意事项⑤实验指导要点⑥检查实验结果)、实验预做记录(含①原始实验数据记录②数据处理及结果分析)、实验预习要求、实验报告要求、参考书目、后记等相关内容。
4、实验教案编写应在坚持教案编写基本要求的基础上,充分考虑教师自身条件和学科的差异,针对教师、学科、学生以及教学情景的不同,编写出形式多样,能体现教学风格、具有特色的教案,促进教案的创新。
5、教案编写水平的高低,很大程度上取决于教师钻研教材与实验方法,研究学生实际状况和设计教学方法的水平,取决于教师对本学科知识掌握的深度和广度以及教师教育思想的端正更新。
因此,教师应努力提高自身素质,提高教师教案编写水平。
实验教案
实验课程名称
数据库原理及应用
实验学时
16
□独立设课
□非独立设课
实验课类别
1.基础□2.专业基础□3.专业□4.其它□
任课教师
刘继光
职称
高级工程师
授课对象
年级:
08专业:
软件 班级:
08网络
□本科
□专科
教材
和
主要参考资料
教材:
《数据库系统概论》(第三版),萨师煊等著,高等教育出版社,2000
主要参考书:
《数据库系统及应用》,崔巍等,高等教育出版社,2005
教学目的和
教学要求
通过本课程的学习,主要巩固课堂的理论教学成果,并加强学生动手实践能力培养,为今后的进一步学习或工作奠定一定的实践基础。
学生应初步具备数据库的分析、设计、实现能力,能够运用所学的数据库知识编写小型的基于数据库的应用系统。
教学重点和
教学难点
重点:
数据库基础理论知识的学习;
数据库设计理论知识的学习;
数据库SQL语句的学习与应用。
难点:
数据库基础理论知识的学习;
数据库设计理论知识的学习;
数据库SQL语句的学习与应用;
数据库的分析、设计能力的培养。
教学进程安排
课次
实验项目(实验内容)
学时
备注
1
数据库基本操作实验
2
2
数据库完整性约束实验
2
3
简单数据查询
2
4
连接数据查询
2
5
数据库DML语句操作实验
2
6
数据库事务及并发控制
2
7
数据库设计
2
8
学生成绩管理系统
2
课题(项目)名称:
数据库基本操作实验
计划学时:
实验类型:
1.演示性□2.验证性□3.综合性□4.设计性□5.其它□
授课日期:
年月日
第周星期第节
实验一
实验名称:
数据库基本操作实验
实验学时:
2
实验目的:
1、通过实验,加深学生对数据库基本概念和理论的理解与掌握,能够更好的理论联系实际。
2、通过实验,使学生掌握如下的数据库操作的基本技能与方法:
Ø创建、修改、删除数据库
Ø创建、修改、删除数据库表;
Ø创建数、删除数据库表的索引;
实验内容及要求(用企业管理期或查询分析器完成):
一、创建、修改、删除数据库;(分别用企业管理器、查询分析器完成)
1、创建数据库“MyDB”,该数据库有两个数据文件,一个日志文件。
数据文件中的一个件初始大小30M,最大值50M,文件属性为自动增长,另一个固定尺寸为20M。
日志文件初始大小为50M,每次增长10M。
2、修改数据库“MyDB”,删除固定大小的数据文件,将数据库名称改为“TESTDB”,增加一个数据文件,数据文件位于E:
\,其他参数默认。
3、删除创建的数据库。
二、熟悉数据库表的定义、修改操作
1、在Northwind数据库下建立数据库表TEST,表结构为
2、将数据表名称更改为TEST1。
3、将CompanyName的字段长度缩小为30。
4、添加ShippID为主键。
5、将ShippID数据类型改为CHAR(4)。
6、将ShippID列名改为SID。
7、添加列名TestCol,数据类型为VARCHAR(32)。
8、删除列TestCol
9、调换CompanyName、Phone列的顺序。
三、熟悉数据库表索引的建立
1、为上述表建立聚簇索引(ShipperID)与非聚簇(CompanyName)唯一升序索引。
输入如下两条数据进行测试(观察现象)。
1A
2A
2、删除CompanyName列上的索引,在CompanyName建立聚簇索引。
3、删除该数据库表
四、思考与练习
1.唯一性索引有何作用?
聚簇索引与非聚簇有何区别?
2.创建数据库时,如何创建多个文件组?
3.更改数据库表结构可能导致哪些问题?
实验报告要求:
1.实验目的
2.实验内容及步骤
3.实验习题的源程序清单
4.写出在实验过程中遇到的问题及解决方法
5.要求字迹端正、条理清晰、概念正确
课题(项目)名称:
数据库完整性约束实验
计划学时:
实验类型:
1.演示性□2.验证性□3.综合性□4.设计性□5.其它□
授课日期:
年月日
第周星期第节
实验二
实验名称:
数据库完整性约束实验
实验学时:
2
实验目的:
数据库完整性是保证数据库中数据正确性的重要手段,通过实验,使学生加深对数据库完整性的基本概念的理解与掌握,并能够熟练创建、修改、删除各类完整性约束,从而达到灵活应用的目的。
Ø实体完整性约束验证;
Ø引用完整性验证;
Ø唯一约束;
Ø非空约束;
Ø缺省值;
Ø检查约束;
实验内容及要求:
五、数据库完整性约束试验。
试验所使用的数据库表结构如下:
Student(学生记录表)
SNO(学号)CHAR(10)PRIMARYKEY
SNAME(姓名)VARCHAR(16)
SEX(性别)VARCHAR
(2)
DEPT(专业号)VARCHAR()
AGE(年龄)SMALLINT
Course(课程表)
CNO(课程号)CHAR(4)PRIMARYKEY
CNAME(课程名)VARCHAR(32)
SCORE(学分)SMALLINT
SC(学生选课成绩表)
SNO(学号)CHAR(7)PRIMARYKEY
CNO(课程号)CHAR(4)PRIMARYKEY
GRADE(成绩)INT
使用查询分析器,建立数据库SC,数据库参数默认。
建立Student、Course、SC数据库表,并完成下面题目:
1、“课程名”属性必须取唯一值。
插入重复值,出现什么现象,为什么?
2、“课程名”也不能取空值。
插入空值,出现什么现象,为什么?
3、“学分”属性只能取值{1,2,3,4},如果没有输入学分信息,学分的缺省值为3。
插入非{1,2,3,4}的值,出现什么现象,为什么?
4、“学号”的前两位为“20”,第三位与第四位为数字。
插入前两位不是“20”的学号,出现什么现象,为什么?
5、“GRADE”大于等于0并且小于等于100。
插入分数不在0~100之间的值,出现什么现象,为什么?
6、SC中,SNO、CNO为外键,请建立外键约束。
插入SNO或CNO没有在Student和Course中出现的记录,出现什么现象,为什么?
六、思考与练习。
1.外键约束约束有何作用?
外键取值有何要求?
2.实体完整性通过什么机制保证?
3.唯一性约束与主键有何区别?
4.SQLServer中唯一性约束通过什么机制保证?
实验报告要求:
6.实验目的
7.实验内容及步骤
8.实验习题的源程序清单
9.写出在实验过程中遇到的问题及解决方法
10.要求字迹端正、条理清晰、概念正确
课题(项目)名称:
数据库DML语句操作实验
计划学时:
实验类型:
1.演示性□2.验证性□3.综合性□4.设计性□5.其它□
授课日期:
年月日
第周星期第节
实验三
实验名称:
数据库DML语句操作实验
实验学时:
2
实验目的:
数据库更新操作是SQL语句的重要组成部分,通过试验,加深学生对数据更新操作基本概念的理解与掌握,从而达到灵活应用的目的。
实验内容及要求:
试验所使用的数据库表结构如下:
Student(学生记录表)
SNO(学号)CHAR(10)PRIMARYKEYCHECKLEFT(SNO,7)=''
SNAME(姓名)VARCHAR(16)NOTNULL
SEX(性别)VARCHAR
(2)NOTNULL
DEPT(专业号)VARCHAR(16)NOTNULL
AGE(年龄)SMALLINTNOTNULL
Course(课程表)
CNO(课程号)CHAR(4)PRIMARYKEY
CNAME(课程名)VARCHAR(32)NOTNULLUNIQUE
SCORE(学分)SMALLINTNOTNULLDEFAULT4
SC(学生选课成绩表)
SNO(学号)CHAR(7)PRIMARYKEYFOREIGNKEY
CNO(课程号)CHAR(4)PRIMARYKEYFOREIGNKEY
GRADE(成绩)INTCHECK(Grade>=0andGrade<=100)
七、Insert
1、向Student表插入下面5单条记录
张三男CS17
李四男CS18
王武男CS18
郑艳女CS16
刘莉女CS18
2、向Course插入4门课程信息
C001数据库原理NULL
C002自动控制原理3
C003专业英语2
C004数字电路3
3、向SC表插入
C00180
C00279
C00369
C00488
C00168
C00273
C00399
C00482
C00170
C00272
C00387
C00445
C001NULL
C002NULL
C00387
C00493
4、将Student表的数据批量插入##Student中
insertinto##studentselect*fromstudent
5、向Student表插入一条记录
学号:
姓名:
李新性别:
男专业:
与在同一专业年龄:
与的年龄相同
6、学号为的学生,选修了所有的课程,每门功课都还没有成绩,请将该同学的选课记录插入到选课表中。
八、Update
1、单条记录更新:
将student表中,学号为的记录年龄更新19,系编码更新为MA
updatestudentsetage=19wheresno=''
updatestudentsetdept='MA'wheresno=''
2、单条记录更新:
将student表中,学号为的记录年龄更新为学号为的年龄减1,性别更新成与的性别相同
updatestudentsetage=(selectagefromstudentwheresno='')-1wheresno=''
updatestudentsetsex=(selectagefromstudentwheresno='')wheresno=''
3、批量更新:
将student表中,所有年龄大于18岁的男同学的专业信息更改成MA,年龄更新成20岁
4、
5、带子查询的更新:
将SC表中,学号在Student中出现过并且考试成绩为空的考试成绩更新为60
九、Delete
1、单条记录删除:
删除student中,学号为的记录(想想应该如何删除)
2、批量删除:
删除SC中,学号为的记录
3、带子查询的删除:
删除Student表中存在,但是在SC表中不存在选课记录的学生。
一十、思考与练习
1.临时表分为哪两种?
有什么区别?
实验报告要求:
11.实验目的
12.实验内容及步骤
13.实验习题的源程序清单
14.写出在实验过程中遇到的问题及解决方法
15.要求字迹端正、条理清晰、概念正确
附1:
表创建语句
createtablestudent
(
SNOCHAR(10)PRIMARYKEYcheck(left(sno,8)=''),
SNAMEVARCHAR(16)notnull,
SEXVARCHAR
(2)notnull,
DEPTVARCHAR(16)notnull,
AGESMALLINTnotnull
)
createtablecourse
(
CNOCHAR(4)PRIMARYKEY,
CNAMEVARCHAR(32)unique,
SCORESMALLINTnotnulldefault4check(scorein(1,2,3,4))
)
createtablesc
(
SNOCHAR(10)foreignkeyreferencesstudent(sno),
CNOCHAR(4)foreignkeyreferencescourse(cno),
GRADEINTcheck(grade>=0andgrade<=100),PRIMARYKEY(sno,cno),
)
课题(项目)名称:
简单数据查询
计划学时:
实验类型:
1.演示性□2.验证性□3.综合性□4.设计性□5.其它□
授课日期:
年月日
第周星期第节
实验四
实验名称:
简单数据查询
实验学时:
2
实验目的:
数据查询语句是SQL语句的重要组成部分,合理使用数据查询语句,可以极大的简化应用程序编制、快速的定位分析数据库系统的故障,查询语句是编程人员与数据库管理人员必不可少的工具,通过试验,加深学生对查询语句基本概念的理解与掌握,最终达到灵活应用的目的。
实验内容:
恢复上次课的数据库表结构和数据。
1.选择表中的若干列
2.对表和列使用别名
3.查询计算列
4.选择表中的若干元组
5.对查询结果排序
6.使用集函数
7.对查询结果分组
实验内容及要求:
1.查询全体学生的学号与姓名
2.查询全体学生的全部信息,并为学生表命名别名
3.查全体学生的出生年份,并为年份加上标题
4.查询选修了课程的学生学号,要求消除重复行
5.查询所有年龄在20岁以下的学生姓名及其年龄
6.查询年龄在20~23岁的学生信息(要求至少使用两种方式完成查询)
7.使用IN关键字查询信息系(IS)、数学系(MA)和计算机科学系(CS)的学生
8.查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。
9.查询所有姓刘学生的姓名、学号和性别
10.查询名字中第2个字为"阳"字的学生的姓名和学号
11.查询DB_Design课程的课程号和学分(先在Course表中插入“DB_Design”课程信息)
12.查询没有考试成绩的学生学号和课程号
13.查询计算机系年龄在20岁以下的学生姓名
14.查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列
15.查询学生总人数
16.查询选修了课程的学生人数
17.计算1号课程的学生平均成绩
18.查询选修1号课程的学生最高分数
19.求各个课程号及相应的选课人数
20.查询选修了3门以上课程的学生学号(提示用Having字句)
21.查询有3门以上课程是90分以上的学生的学号及(90分以上的)课程数。
思考与练习
1.Where与Having语句有何差别?
2.Count(*)与Count(字段名)有何差别?
3.LIKE'[^s][^y][^s]%'与NOTLIKE'sys%'有无区别?
请加以验证
实验报告要求:
16.实验目的
17.实验内容及步骤
18.实验习题的源程序清单
19.写出在实验过程中遇到的问题及解决方法
20.要求字迹端正、条理清晰、概念正确
课题(项目)名称:
连接查询
计划学时:
实验类型:
1.演示性□2.验证性□3.综合性□4.设计性□5.其它□
授课日期:
年月日
第周星期第节
实验五
实验名称:
连接查询
实验学时:
2
实验目的:
数据查询语句是SQL语句的重要组成部分,合理使用数据查询语句,可以极大的简化应用程序编制、快速的定位分析数据库系统的故障,查询语句是编程人员与数据库管理人员必不可少的工具,通过试验,加深学生对查询语句基本概念的理解与掌握,最终达到灵活应用的目的。
实验内容:
恢复上次课的数据库表结构和数据。
1.广义笛卡尔积连接
2.连接查询
Ø自身连接
Ø外连接
Ø复合条件连接
Ø多表连接
3.嵌套查询
Ø不相关子查询
Ø相关子查询
4.集合查询
实验要求:
1.查询全体学生与选课表的笛卡尔积
2.查询每个学生及其选修课程的情况
3.查询每个学生及其选修课程的情况(去掉重复属性)
4.查询某门课程考试成绩相同的学生学号和课程信息
5.查询每个学生的选修课程包括没有选修课程的学生(外连接)
6.查询每个学生的选修课程包括没有被学生选修的课程(外连接)
7.查询每个学生的选修课程即包括没有被学生选修的课程又包括没有被学生选修的课程(全连接)
8.查询选修2号课程且成绩在90分以上的所有学生的学号、姓名
9.查询每个学生的学号、姓名、选修的课程名及成绩
10.查询与“张三”在一个系学习的学生(IN)
11.查询选修了课程名为“信息系统”的学生学号和姓名
12.查询与“张三”在同一个系学习的学生(EXISTS)
13.查询选修了课程1或者选修了课程2的学生(要求消除重复组UNION)
14.查询选修了课程1或者选修了课程2的学生(要求不消除重复组UNIONALL)
15.查询所有考试成绩均在90分以上的同学的信息
思考与练习:
1.IN与Exists语句有何区别?
2.全连接、左连接、右连接有什么不同?
3.UNION与UNIONALL有何差别,谁的性能高?
4.不相关子查询、相关子查询有何区别?
实验报告要求:
1.实验目的
2.实验内容及步骤
3.实验习题的源程序清单
4.写出在实验过程中遇到的问题及解决方法
5.要求字迹端正、条理清晰、概念正确
课题(项目)名称:
视图的使用
计划学时:
实验类型:
1.演示性□2.验证性□3.综合性□4.设计性□5.其它□
授课日期:
年月日
第周星期第节
实验六
实验名称:
视图的使用
实验内容及要求:
一、创建视图
1、创建信息系学生的视图(注意withcheckoption的用途)
2、创建信息系选修了1号课程的学生的视图
3、创建信息系选修了3号课程并且该课程的考试成绩大于90分的学生视图
4、创建反映学生出生年份的视图
5、创建视图,该视图包含学号、姓名、所在系、性别、课程名称、考试成绩
6、为所有考试成绩都大于85的学生创建视图,该视图包含学号、姓名、所在系、课程名称、考试成绩
7、为选修了3门以上课程的学生信息创建视图
8、依据(1)创建信息系的女生信息视图
9、创建信息系学生的视图,信息包括学生姓名、性别、年龄、系别
二、视图查询
1、在信息系学生的视图中,查询年龄小于20的学生
2、查询选修了1号课程的计算机系的学生
3、创建信息系选修了3号课程并且该课程的考试成绩大于90分的数学系的学生信息
4、查询信息系学生出生年份信息
5、查询信息系的女生的考试情况,包括学号、姓名、课程名称、考试成绩
6、查询信息系,考试成绩都大于85的学生考试成绩信息
三、更新视图
1、将信息系的学生“张三”名字更改为“李四”
2、向信息系插入一条新的学生记录:
学号为,姓名为赵兴,年龄为23
3、删除信息系中,学号为的学生
4、对创建视图中的9创建的视图,进行插入操作,出现什么情况,为什么?
四、删除视图
对上述创建的视图进行删除(注意,删除视图1时,对视图8进行查询,出现什么情况,为什么?
。
五、思考与练习
1、withcheckoption的作用?
2、那些视图能够被更新?
课题(项目)名称:
存储过程
计划学时:
实验类型:
1.演示性□2.验证性□3.综合性□4.设计性□5.其它□
授课日期:
年月日
第周星期第节
实验七
实验名称:
存储过程
实验学时:
2
实验目的:
一、试验目的
事务处理及其并发控制是所有数据库产品的一个关键问题,是提供数据一致性和可恢复性的重要保障,事务处理方式的不同会导致数据库性能和功能上的巨大差异,熟练掌握数据库事务处理和并发控制的基本原理对于后续的学习和工作有着重要的帮助。
1).通过试验,加深学生对事务的基本概念理解语掌握;
2).通过试验,加深学生对并发控制的基本概念理解,认识不正确的并发控制所带来的危害;
3).通过试验,加深学生对锁的基本概念的掌握与理解,认识锁带来的问题;
二、实验环境
硬件:
奔腾4处理器,1.8GHz,512M内存
操作系统软件:
WindowsXP
数据库系统:
SQLServer2000桌面版
数据库用户帐号:
sa
数据库用户口令:
使用的数据库:
Northwind
数据库表:
##temp
数据库工具:
企业管理器、查询分析器
实验内容及要求:
一、存储过程的创建和使用
i.使用带有复杂SELECT语句的简单过程
下面的存储过程从四个表的联接中返回所有作者(提供了姓名)、出版的书籍以及出版社。
该存储过程不使用任何参数。
USEpubs
IFEXISTS(SELECTnameFROMsysobjects
WHEREname='au_info_all'ANDtype='P')
DROPPROCEDUREau_info_all
GO
CREATEPROCEDUREau_info_all
AS
SELECTau_lname,au_fname,title,pub_name
FROMauthorsaINNERJOINtitleauthorta
ONa.au_id=ta.au_i