《数据库原理实验》指导书
计算机与通信工程学院
2010年7月
目 录
前言 ................................................................................................................................ 1 实验一 数据库查询 ...................................................................................................... 2 实验二 数据更新 .......................................................................................................... 5 实验三 视图和索引 ...................................................................................................... 6 实验四 数据库保护 ...................................................................................................... 8 实验五 T-SQL编程 .................................................................................................... 10 实验六 存储过程编程 ................................................................................................ 11 实验七 触发器编程 .................................................................................................... 12 实验八 JDBC编程* ................................................................................................. 13 实验九 事务与死锁* .................................................................................................. 14
1 2 3 4 5 6 7 8 9 实验名称 实验1 数据库查询 实验2 数据更新实验 实验3 索引和视图 实验4数据库保护 实验5 T-SQL编程 实验6存储过程 实验7 触发器 实验8 JDBC编程 实验9事务处理 学时 4 2 2 4 4 4 4 4 4 上课时间 6 7 8 10 11 9 12 13 1
前言
(一)本课程的教学目的和要求:
SQL语言是关系数据库的标准语言,是本课程的一个重点。通过上机实验,可以使学生加深对课堂讲授内容的理解,循序渐进地掌握SQL语言的使用;同时,使学生了解和熟悉SQL SERVER 2000开发的环境,逐步掌握编辑、调试、运行程序的方法,初步积累编程经验。 (二)实验步骤:
1.准备好上机所需的程序。手编程序应书写整齐,并经人工检查无误后才能上机,以提高上机效率。对程序中自己有疑问的地方,应作出记号,以便在上机时给予注意。
2.上机输入和调试自己所编的程序。一人一组,独立上机,上机过程中出现的问题,除了是系统的问题以外,一般应自己独立处理。
3.上机结束后,整理出实验报告,实验报告应包括以下内容:
1) 题目;
2) 程序清单(加注释); 3) 运行结果;
4) 对运行情况所作的分析 5) 本次调试程序取得的经验。 (三)教学重点与难点:
1. 数据库及表的建立与使用 2. 简单查询 3. 连接查询 4. 嵌套查询 5. 数据库更新 6. 视图的定义和查询 7. 安全性控制 8. 事务的建立和使用 9. 存储过程的使用 10.触发器的使用 11.数据转换
1
实验一 数据库查询
课程名称: 实验名称
数据库原理实验 数据库查询
实验类型: 学时
验证型 4学时
实验目的:
使学生掌握SQL Server Query Analyzer的使用方法,加深对SQL和T-SQL语言的查询语句的理解。熟练掌握表的基本查询,连接查询和嵌套查询,以及掌握数据排序和数据分组的操作方法。 实验原理:
SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]? FROM <表名或视图名>[,<表名或视图名>]? [WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]] [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. 查询选修了2学分以上的课程,并且笔试成绩不及格的学生的信息,只需给出学号、课
程号和笔试成绩。
4. 查询学分在4~8之间的课程信息.(用between..and和复合条件分别实现) 5. 从sc表中查询出学生“g9940202”,“g9940204”选择的课程号、学生号以及笔试成绩,
并按笔试成绩降序排列(用in实现)
6. 从teacher表中分别检索出姓王的教师的资料,或者姓名的第2个字是远或辉的教师的
资料
7. 查询每个学生及其选修课情况
8. 以student表为主体列出每个学生的基本情况及其选课情况,如果学生没有选课,只输
出其基本情况(提示:使用外连接)
9. 查询选修dep04_s001号课程且笔试成绩在80分以上的学生信息。(分别用连接,in和
exists实现)
10. 查询所有上“计算机基础”课程的学生的学号、选修课程号以及分数(分别用连接,in
和exists实现)
11. 查询所有“计算机科学与技术”专业学生的学号、选修课程号以及分数(分别用连接,
in和exists实现) 12.查询每个dep_04系学生的总成绩、平均成绩, 仅显示平均成绩及格的学生的记录。(提
2
示使用ISNULL函数,用法见附录2) 13.查询“数据库开发技术”的平均成绩
14.按职称查询教师的平均工资,并按总工资降序排列 15.将笔试成绩转换成A、B、C、D和E五分制显示。(提示使用CASE函数)
附录1:
教务管理数据库jwgl结构
student表结构 列名称 Student_id Student_name Sex Age Class_id Department_id Address Course表 字段名称 Course_id Course_name Book_id credit Total_period Week_period
SC表 字段名称 Course_id Student_id WrittenScore LabScore Teacher表 字段名称 Teacher_id Teacher_name Department_id Profession Sex phone adress
数据类型 Char Varchar Bit Int Char Char varchar 长度 8 8 1 4 6 6 50 允许空值 否 否 否 否 否 否 否 说明 学生学号 学生姓名 性别 年龄 班级号 系编号 家庭住址 数据类型 Char Varchar Char Tinyint Tinyint Tinyint 长度 10 20 15 允许空 否 否 否 否 否 否 说明 课程号 课程名称 书标识 学分 总学时 周学时 数据类型 Char Varchar Tinyint Tinyint 长度 10 8 允许空 否 否 否 否 说明 课程号 学生号 笔试成绩 实验成绩 数据类型 Char nvarchar Char Nvarchar Bit Nvarchar Nchar 长度 9 8 6 16 15 40 3
允许空 否 否 否 否 是 是 说明 教师编号 教师姓名 所在系号 职称 性别 电话 住址