当前位置:文档之家› 2013版《数据库原理实验》指导书

2013版《数据库原理实验》指导书

《数据库原理实验》指导书计算机与通信工程学院2010年7月目录前言 (1)实验一数据库查询 (2)实验二数据库定义 (5)实验三数据更新 (7)实验四视图和索引 (8)实验五数据安全性 (9)实验六T-SQL编程 (12)实验七存储过程编程 (14)实验八触发器编程 (15)实验九事务与死锁 (16)实验十JDBC编程 (18)课程设计 (19)前言(一)本课程的教学目的和要求:SQL语言是关系数据库的标准语言,是本课程的一个重点。

通过上机实验,可以使学生加深对课堂讲授内容的理解,循序渐进地掌握SQL语言的使用;同时,使学生了解和熟悉SQL SERVER 2000开发的环境,逐步掌握编辑、调试、运行程序的方法,初步积累编程经验。

(二)实验步骤:1.准备好上机所需的程序。

手编程序应书写整齐,并经人工检查无误后才能上机,以提高上机效率。

对程序中自己有疑问的地方,应作出记号,以便在上机时给予注意。

2.上机输入和调试自己所编的程序。

一人一组,独立上机,上机过程中出现的问题,除了是系统的问题以外,一般应自己独立处理。

3.上机结束后,整理出实验报告,实验报告应包括以下内容:1)题目;2)程序清单(加注释);3)运行结果;4)对运行情况所作的分析5)本次调试程序取得的经验。

(三)教学重点与难点:1.数据库及表的建立与使用2.简单查询3.连接查询4.嵌套查询5.数据库更新6.视图的定义和查询7.安全性控制8.事务的建立和使用9.存储过程的使用10.触发器的使用11.数据转换实验一数据库查询课程名称:数据库原理实验实验类型:验证型实验名称数据库查询学时4学时实验目的:使学生掌握SQL Server Query Analyzer的使用方法,加深对SQL和T-SQL语言的查询语句的理解。

熟练掌握表的基本查询,连接查询和嵌套查询,以及掌握数据排序和数据分组的操作方法。

实验原理:SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]…FROM <表名或视图名>[,<表名或视图名>]…[WHERE <条件表达式>][GROUP BY <列名1> [HA VING <条件表达式>]][order by <列名2> [ASC|DESC]];实验方法:将查询需求用T-SQL语言表示;在SQL Server Query Analyzer的输入区中输入T-SQL 查询语句;设置Query Analyzer的结果区为Standard Execute(标准执行)或Execute to Grid (网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。

实验内容:1.分别用带DISTINCT和不带DISTINCT关键字的SELELCT在student中进行查询.2.将teacher表中各教师的姓名、教工号及工资按95%发放的信息,并将工资按95%发放后的列名改为‘预发工资’3.查询course表中所有学分大于2并且序号成绩不及格的学生的信息.4.查询学分在4~8之间的学生信息.(用between..and和复合条件分别实现)5.从student_course表中查询出学生为“2”,“4”的课程号、学生号以及学分,并按学分降序排列(用in实现)6.从teacher表中分别检索出姓王的教师的资料,或者姓名的第2个字是远或辉的教师的资料7.查询每个学生及其选修课情况8.以student表为主体列出每个学生的基本情况及其选课情况,如果学生没有选课,只输出其基本情况9.查询选修dep04_s001号课程且成绩在80分以上的学生信息。

(分别用连接,in和exists实现)10.查询所有上计算机基础课程的学生的学号、选修课程号以及分数(分别用连接,in和exists实现)11.查询选修了课程名为“数据库基础”的学生学号和姓名(分别用连接,in和exists实现)12.查询所有计算机系学生的学号、选修课程号以及分数(分别用连接,in和exists实现)13.查询每个dep_04系学生的总成绩、平均成绩,仅显示平均成绩及格的学生的记录。

14.查询“数据库开发技术”的平均成绩15.按职称查询教师的平均工资,并按总工资降序排列附录1:教务管理数据库jwgl结构student表结构Course表SC表Class_course表实验二数据库定义课程名称:数据库原理实验类型:验证型实验名称数据库定义学时2学时实验目的:(1)使学生掌握E_R图的设计方法,并能将E_R图转换成关系模式;(2)熟悉SQL DDL和DML语言,能够完成基本的表结构的定义、修改;(3)掌握数据库完整性约束定义实验原理:1.将E_R图转换为关系的方法:⏹一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的码就是关系的码⏹一个1:1联系可以转换为一个独立的关系模式,也可以与任意对应的关系模式合并⏹一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并⏹一个m:n联系转换为一个关系模式⏹三个或三个以上实体间的一个多元联系可以转换为一个关系模式2.定义库:Create DATABASE <数据库名>3.表⏹定义表CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束][,<列名><数据类型>[列级完整性约束]][,<表级完整性约束>]);⏹添加列ALTER TABLE <表名> ADD <列名> <类型>[列级完整性约束]⏹修改列ALTER TABLE <表名> ALTER COLUMN <列名> <类型>[列级完整性约束]⏹删除列ALTER TABLE <表名> DROP COLUMN <列名>实验方法:将查询需求用T-SQL语言表示;在SQL Server Query Analyzer的输入区中输入T-SQL 查询语句;设置Query Analyzer的结果区为Standard Execute(标准执行)或Execute to Grid (网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。

实验内容:假设某公司的业务规则如下:(1)公司下设几个部门,如技术部、财务部、市场部等。

(2)每个部门承担多个工程项目,每个工程项目属于一个部门。

(3)每个部门有多名职工,每一名职工只能属于一个部门。

(4)一个部门可能参与多个工程项目,且每个工程项目有多名职工参与施工,一个职工可以参与多个项目。

根据职工在工程项目中完成的情况发放酬金。

(5)工程项目有工程号、工程名两个属性;部门有部门号、部门名称、办公电话和办公地点等属性;职工有职工号、姓名、性别属性,出生日期;问题:1.根据上述规则设计E-R模型;2.将E-R模型转换成关系数据模型;3.利用SQL语句定义上述关系,要求:(1)为每个关系定义主码和外码;(2)职工姓名、部门名称不能取空值,并且部门名称是唯一的;(3)职工的性别只能取“男”和“女”,默认值为“男”;(4)部门号具有类似“B01”的形式,即每个部门号的首字符为“B”,其余两个字符为数字。

(5)酬金不低于2000元。

4.修改部门号的约束,改为“B001”的形式,每个部门号的首字符为“B”,其余三个字符为数字。

5.在原有关系的基础上,增加一个新列,用于记录每名职工参加项目的起始时间。

注意:请认真选择属性的数据类型和精度。

实验三数据更新课程名称:数据库原理实验类型:验证型实验名称数据更新学时2学时一.实验目的和要求:掌握用SQL语句实现数据的插入、修改和删除。

二.实验内容:1、将一个新学生记录(student_id:g9940303、student_name:张红、sex:女、birth:1985-02-08、class_id:g99402,department_id:Dep_03,home_addr:沈阳皇浦区34号)插入到student表中2、对每一个班,求学生的平均年龄,并把结果存入数据库。

(提示:先建立新表“age_avg”,其中一列存放班级,另一列存放相应的学生平均年龄,然后将所需数据存入age_avg)3、将学号为g9940201的学生的姓名改为张丽,年龄改为184、student表中的所有系别(department_id)均改为“dep_03”5、将班级号(class_id)为g99402的全体学生的成绩加30分6、从学生名单中删除所有课程号(course_id)为dep04_b001的记录实验报告:1. 实验各项内容实现的过程。

2. 实验结果分析。

实验四视图和索引课程名称:数据库原理实验类型:验证型实验名称视图和索引学时2学时实验目的:(1)掌握视图的定义、查询和更新;(2)掌握索引的定义;(3)掌握利用索引优化查询效率;实验原理:1.视图⏹定义视图CREATE VIEW <视图名> [(<列名> [,<列名>]…)]AS <子查询>[WITH CHECK OPTION];⏹删除视图DROP VIEW <视图名>2.索引(注意:索引不能修改)⏹定义索引CREATE [UNIQUE][CLUSTER] INDEX <索引名>ON <表名> (<列名>[<次序>][,<列名>[<次序>]]…);⏹删除索引DROP INDEX <索引名>实验方法:将查询需求用T-SQL语言表示;在SQL Server Query Analyzer的输入区中输入T-SQL 查询语句;设置Query Analyzer的结果区为Standard Execute(标准执行)或Execute to Grid (网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。

实验内容:在实验1中用到的教务管理数据库jwgl中完成如下问题:(1)创建一个名为stud_query_viewl的水平视图,从数据库JWGL的student表中查询出性别为“男”的所有学生的资料;(2)创建一个名为stulquery_view2的投影视图,从数据库JWGL的student表中查询出性别为“男”的所有学生的学号,姓名,性别,班级,家庭住址,入学时间,出生年月资料;(3)创建一个名为“stud_query__view3”的视图,它是由表course、book及class_course创建的一个显示“g99402”班所开课程的课程名、所用教材的教材名、出版社及作者的视图;(4)创建一个从视图stud query_viewl中查询出班级名为g99402的所有学生的视图;(5)从视图stud_query_view2中查询出班级为“g99402”、姓名为“张华”的资料;(6)向视图stud_query_View2中插入一行数据。

相关主题