数据库技术实验指导书14信工缩略版.docx
- 文档编号:8552075
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:49
- 大小:771.73KB
数据库技术实验指导书14信工缩略版.docx
《数据库技术实验指导书14信工缩略版.docx》由会员分享,可在线阅读,更多相关《数据库技术实验指导书14信工缩略版.docx(49页珍藏版)》请在冰豆网上搜索。
数据库技术实验指导书14信工缩略版
《数据库技术》
实验指导书
吴老师编写
适用专业:
信息工程
信息与通信工程学院
2016年3月
前言
一、课程性质
《数据库技术》是信息工程专业的一门专业必修课。
该课程主要研究数据库结构、存储、设计和使用的一门软件学科,是进行数据管理和处理的技术。
该课程实验,主要是为了配合课堂教学,旨在提高学生对数据库的动手操作能力,加深学生对关系数据库理论的理解,培养学生运用数据库技术解决实际问题的能力,激发他们在数据库领域中继续学习和研究的愿望,增强本专业学生的专业知识应用能力和就业优势。
本课程实验采用经典数据库系统SQLServer进行,通过实验教学,使学生能够灵活运用SQL语言创建、操纵、查询关系数据库,初步掌握数据库保护机制(包括数据库完整性、数据库安全性、数据库恢复和并发控制等),使学生系统地掌握数据库的基本理论、方法和技术,并采用开发工具设计和开发出符合一定实际需求的数据库应用系统。
二、项目设置
本课程共16学时,开设实验项目共计12个,其中验证性实验项目2个,综合性、设计性的实验项目10个。
实验项目设置与内容提要
序号
实验项目
实验
学时
每组
人数
实验
类型
实验
要求
内容提要
1
数据库及基本表的建立
2
1
验证
必修
服务管理器、企业管理器、查询分析器的使用和管理;两个存储过程;(sp_tables和sp_help<表名>)的使用;SQLServer联机丛书和Transact-SQL帮助;利用企业管理器和T-SQL的create语句创建、修改数据库、基本表;修改数据库、基本表的属性;修改表结构。
2
数据更新
2
1
综合
必修
设计Insert语句对基本表进行数据插入;
设计Delete语句对基本表进行数据删除;
设计Update语句对基本表进行数据更新。
3
数据查询
2
1
综合
必修
设计Select语句,实现单表查询、连接查询、嵌套查询、模糊查询和集合查询等。
4
索引及视图
2
1
综合
必修
利用企业管理器和T-SQL语句创建和管理聚簇索引和唯一索引、删除索引,创建视图、删除视图。
5
数据安全性
2
1
综合
任选
利用企业管理器和T-SQL语句创建用户;设计Grant、Revork、Deny语句进行DAC操作;
6
数据完整性与触发器
2
1
综合
任选
利用企业管理器和T-SQL语句创建PRIMARYKEY约束、UNIQUE约束、DEFAULT约束、CHECK约束、IDENTITY属性列;创建主表和子表关联关系,通过外键实现引用完整性约束;修改、删除引用完整性约束;利用企业管理器和T-SQL语句创建、绑定、解除规则。
设计T-SQL命令创建、修改、删除与执行触发器。
7
存储过程
4
1
设计
任选
企业管理器对存储过程的操作与使用;设计T-SQL命令创建、查看、执行、修改和删除用户的存储过程;
8
自定义数据类型与函数
2
1
综合
任选
在查询分析中使用SQL中的常用函数;利用系统存储过程和企业管理器创建用户定义数据类型和用户自定义函数,修改和删除用户自定义精确类型和函数。
9
T-SQL程序设计
2
1
设计
任选
在查询分析器中针对STU数据库设计2个简单的T-SQL程序。
10
数据备份与恢复
1
1
综合
任选
利用企业管理器和T-SQL语句执行完全数据库备份、差异数据库备份及恢复;利用企业管理器进行事务日志备份及恢复。
11
事务处理
1
1
设计
任选
在查询分析器中针对STU数据库设计一个简单事务或复杂事务,并执行该事务。
12
数据库访问及数据库应用系统开发
4
1
设计
任选
设计程序,利用ADO访问SQLServer数据库,建立应用程序与数据库的连接。
设计并实现一个以数据库为核心的C/S或B/S结构的数据库应用系统,如人事管理系统、仓库管理系统、户籍管理信息系统等,开发工具不限。
三、专业安排
信息工程专业应选修4个必修实验(8课时),其余为8课时的任选实验,在任选实验时,根据学生掌握知识的程度或学生的兴趣选做。
四、本实验指导书特点
最大特点在于实验采用当前经典数据库系统SQLServer进行,与近几年国内外数据库技术发展相结合,围绕数据库应用系统设计这一核心,着重培养学生的项目方案设计、开发的能力。
目录
实验1数据库及基本表的建立4
实验2数据操纵7
实验3数据查询8
实验4索引及视图11
实验5数据安全性12
实验6数据完整性15
实验7存储过程19
实验8自定义数据类型与函数26
实验9T-SQL程序设计36
实验10数据备份与恢复39
实验11事务处理45
本学期《数据库技术》实验实训内容:
第1次实验:
完成实验一:
建立数据库及三张表,并对三张表插入教材P82所述的记录。
第2次实验:
完成实验二,数据的更新操作。
第3次实验:
完成实验三,数据的查询操作。
第4次实验:
完成实验四,索引及视图的建立。
第5次实验:
完成实验五,数据控制设置。
第6次实验:
完成实验六,数据完整性设置和触发器的使用。
第7次实验:
完成实验七,存储过程的建立及其他操作。
第8次实验:
完成实验八、实验九和实验十,即验证该实验中的实例。
课程设计:
完成实验十二。
其余实验项目自行选做。
实验1数据库及基本表的建立
实验学时:
2
实验类型:
验证
实验要求:
必修
一、实验目的
通过本实验的学习,使学生熟悉SQLServer2000系统环境,了解SQLServer基本的管理工具、实用程序的使用,掌握创建数据库的两种方法,熟悉查看、修改数据库属性的方法,掌握创建与删除表的两种方法,了解修改表结构的方法。
二、实验内容
1.创建一个学生选课系统的stu数据库,该数据库存放在E:
\sql_data目录下(如果没有该文件夹,请事先在E盘中建立该文件夹)。
CREATEDATABASEstu--数据库名为stu
ON
(NAME=student_data,--数据库的逻辑名为student_data
FILENAME=‘E:
\sql_data\student_data.mdf‘,--数据库的物理名
SIZE=10MB,--数据库的初始大小为10MB
MAXSIZE=50MB,--数据库的最大容量为50MB
FILEGROWTH=10%--数据库容量自动按10%的比例增长
)
LOGON
(NAME=stu_log,--日志文件的逻辑名为stu_log
FILENAME='E:
\sql_data\student_log.ldf',
SIZE=2MB,
MAXSIZE=5MB,
FILEGROWTH=1MB
)
2.分别创建三张表的结构,执行结果如下图所示。
(见教材P82页)
(1)学生表student
createtablestudent
(snochar(9)notnull,
snamechar(8),
ssexchar
(2),
sagesmallint,
sdeptchar
(2),
primarykey(sno),
check(ssexin('男','女')),
check(sagebetween15and30));
完成表student的创建后,可用select*fromstudent查看该表。
(2)课程表course:
createtablecourse
(cnochar
(2)notnull,
cnamechar(12),
cpnochar
(2),
ccreditsmallint,
primarykey(cno));
注:
student和course表建完以后,最后建SC表。
因为SC表的SNO和CNO是外码,必须先建立student和course表,才能建SC表,不能颠倒顺序。
(3)选课表SC
createtableSC
(snochar(9)notnull,
cnochar
(2)notnull,
gradedecimal(3),
primarykey(sno,cno),
foreignkey(sno)referencesstudent(sno),
foreignkey(cno)referencescourse(cno),
check(gradebetween0and100));
3.给以上三张表插入记录,将第82页各个表中的记录分别插入各个基本表。
以下给出插入记录的命令,也可自行任意添加记录,使每张的表的记录都添加至10条。
insertintostudentvalues('200215121','李勇','男',20,'CS');
insertintostudentvalues('200215122','刘晨','女',19,'IS');
insertintostudentvalues('200215123','王敏','女',18,'MA');
insertintostudentvalues('200215125','张立','男',19,'IS');
insertintocoursevalues('1','数据库','5',4);
insertintocoursevalues('2','数学',null,2);
insertintocoursevalues('3','信息系统','1',4);
insertintocoursevalues('4','操作系统','6',3);
insertintocoursevalues('5','数据结构','7',4);
insertintocoursevalues('6','数据处理',null,2);
insertintocoursevalues('7','PASCAL语言','6',4);
insertintoSCvalues('200215121','1',92);
insertintoSCvalues('200215121','2',85);
insertintoSCvalues('200215121','3',88);
insertintoSCvalues('200215122','2',90);
insertintoSCvalues('200215122','3',80);
select*fromstudent;
select*fromcourse;
select*fromsc;
四、实验报告要求
实验报告中简单描述实验步骤,详细写明建库及建表的代码。
五、思考题
1.练习以下常用的系统存储过程:
①.Sp_tables//返回当前环境下可查询的对象列表
②.Sp_helpstudent//显示stduent表的所有信息
③.sp_helpindexstudent//显示stduent表所建的索引
④.Sp_rename‘sc’‘scb’//将sc表改名为scb
2.利用企业管理器和查询分析析器分别访问系统自带的数据库Northwind。
分析并记录该数据库中各表的结构。
3.在“查询分析器”中打开“帮助(H)”,在“键入要查找的关键字”框中键入“CREATEDATABASE”,查看该语句的语法。
实验2数据操纵
实验学时:
2
实验类型:
综合
实验要求:
必修
一、实验目的
通过本实验的学习,使学生掌握利用企业管理器和Transact-SQL语句两种方法对基本表进行插入、删除及修改操作。
二、实验内容
打开查询分析器,完成以下实验内容:
(1)、①在SC中插入记录(‘200115130’,‘1’)
②在Student表中插入记录(‘200115130’,‘陈冬’,‘男’,18,‘IS’),若先执行①,再执行②,结果会怎么样?
为什么?
(2)、先创建一个基本表Student_AVG(包含学号和平均成绩),然后将各个学生的学号和平均成绩插入;
(3)、将所有学生的年龄都增加1岁;
(4)、将计算机系的全体学生的成绩置零;
(5)、删除Student_AVG学号为200215122的学生记录;
(6)、将SC表中所有选2号课的学生成绩修改为70分。
(7)、修改cno为‘1’的记录的课程名称为‘数据库技术’。
(8)、删除Sc表中计算机系所有学生的选课记录;
(9)、将pubs数据库中authors的前10条记录的state列更改为ZZ。
USEpubs
GO
UPDATEauthors
SETState=‘ZZ’
FROM(SELECTTOP10*FROMauthorsorderbyau_lname)AST1
WHEREauthors.au_id=T1.au_id
GO
(10)、从course表中删除所有ccredit为4的记录。
四、实验报告要求
在实验报告必须给出详细的数据更新的代码。
五、思考题
SC_TXT.TXT
1.可以先在Student表中删除学生“李勇”的记录,然后再删除SC中的相应的记录吗?
会出现什么异常情况?
为什么会出现这些异常情况?
"200215122""4"60
"200215123""1"75
"200215123""4"55
"200215125""1"48
"200215125""4"80
"200215125""6"505505050
2.利用SQLServer导入数据的功能,把一个存放有选课信息的文本文件SC_TXT.TXT中的内容导入数据库stu中的SC表中。
文本文件SC_TXT.TXT的数据格式如右表所示。
3.把成绩不及格的学生的学号、课号和成绩放入一个新表makeup_s中。
实验3数据查询
实验学时:
2
实验类型:
综合
实验要求:
必修
一、实验目的
通过本实验的学习,使学生掌握SQLServer中的各种查询方法。
二、相关知识点
1.SELECT语句的基本语法。
2.SQLServer中简单查询、子查询、连接查询、查询语句中的统计函数,查询语句中的GROUPBY和ORDERBY子句。
三、实验内容
1.查询所有年龄在20岁以下的学生姓名、性别及其年龄;
2.查询全体学生的姓名、出生年份和所在系,并使用中文别名;
3.查询信息系(IS)、数学系(MA)和计算机系(CS)学生的姓名和性别;
4.进行模糊查询,查询所有姓“张”的学生的姓名和学号;
5.查询以“PA”开头,且倒数第5个字符为‘C’的课程的详细情况;
6.查询选修了3号课程的学生学号及其成绩,查询结果按分数的降序排列;
7.查询选修了3号课程的学生人数;
8.计算各门课程的平均成绩和选课人数;
9.计算每个学生的平均成绩;
10.查询选修了2号课程且成绩在90分以上的所有学生的学号、姓名和成绩;
11.查询与“刘晨“在同一个系学习的学生的详细情况;
12.查询选修了课程名为“信息系统”的学生学号、姓名和成绩;
13.查询没有选修1号课程的学生姓名、年龄和所在系;
14.查询至少选修了学生“200215122”选修的全部课程的学生的学号;
15.查询选修了1号课程和2号课程的学生的学号和姓名;
16.找出至少选修了一门其先行课为“5”号课程的学生姓名;
17.查询选2号课程的学生最高分数;
18.查询所有不姓刘的学生姓名;
19.从course表中查询出课程号不为“1”、“4”或“7”的课程的课程号、课程名称、以及学分,cno用别名“课程序号”,cname用别名“课程名称”,ccredit用别名“学分”;
20.使用SELECT语句查看全局变量的数据,在查询分析器中输入以下代码:
SELECT@@version
GO
21.分别从course中检索出前2条及前面67%的教师的信息,在查询分析器中输入以下代码:
SELECTtop2*FROMcourse;
go
SELECTtop67Percent*FROMcourse;
go
(注:
SQLServer2000提供了TOP关键字,用于指定只返回前面一定数量的数据。
当查询到数据非常多,但又没有必要对所有的数据进行浏览时,使用TOP关键字可以大大减少查询时间。
使用TOP关键字的SELECT语法如下:
SELECT[TOPinterer|TOPintegerPERCENT]columnname[,..n]FROMtablename)
22.用SQL语句中使用字符串连接符(+)来连接各个目标列,在查询分析器中输入以下代码:
。
SELECTcno+′,′+cname+′,′+cpno+str(ccredit)FRONcourse
GO
23.建立从student到sc的外连接。
1.SELECTstudent.sno,sname,cno,grade
fromstudentfullOUTERJOINscONstudent.sno=sc.sno//全外连接
2.SELECTstudent.sno,sname,cno,grade
fromstudentleftOUTERJOINscONstudent.sno=sc.sno//左外连接
3.SELECTstudent.sno,sname,cno,grade
fromstudentrightOUTERJOINscONstudent.sno=sc.sno//右外连接
四、实验报告要求
要求在实验报告中给出详细的T-SQL语言描写的代码。
五、思考题
1.左外连接:
查询所有选课学生的学号,姓名,选课名称及成绩(没有选课的同学的选课信息显示为空)。
2.带有比较运算符的嵌套查询:
查询其他系中比数学系所有学生年龄都大的学生姓名及年龄。
实验4索引及视图
实验学时:
2
实验类型:
验证
实验要求:
必修
一、实验目的
通过本实验的学习,使学生掌握使用企业管理器创建、修改、删除索引和视图,掌握使用T-SQL语言创建、修改、删除索引和视图,掌握索引的管理和维护,掌握修改、删除视图的方法。
二、实验内容
1.利用查询分析器完成以下索引的建立。
(1)为Student表按学号升序建立唯一索引(取名为StuSno);
(2)为Course表按课程名的降序建立聚簇索引(取名为CouCname);(注:
先删除Course表中按Cno升序的聚簇索引)
(3)为SC表按学号升序和课程号降序建立唯一索引(取名为SCSnoCno)。
(4)使用系统存储过程sp_helpindexstudent;及sp_helpindexcourse,查看student和course表上的索引信息。
(5)删除Student中的StuSno索引。
2.利用T-SQL语句创建视图,并对视图进行查询、插入、修改和删除操作。
建立计算机系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有计算机系的学生;
建立计算机系选修了1号课程且成绩在90分以上的学生的视图,视图名为:
S_C;
建立一个学生出生年份的视图,视图名为:
S_Year;
将学生的学号及其平均成绩定义为一个视图(取名为S_G)。
⑤建立一个视图,要求给出每一门课的间接先行课。
⑥建立一个男生所在系的视图,视图包括学号、姓名、性别、系别共4列。
⑦建立一个视图,给出每一门课的平均成绩。
⑧删除第⑤题建立的视图。
⑨查询第
题建立的视图,只显示姓名及出生年份。
⑩将第
题中的学生“张立”的名字改为“张力”。
⑾在第⑥题的视图中插入新的学生,学号:
200215135,姓名:
王小二,性别:
男,系:
计算机系。
⑿删除第⑥题视图中的‘李勇‘的记录。
⒀查询第②题建立的视图,显示选修了1号课程的学生学号和姓名(在视图中查询)。
⒁在S_G视图中查询平均成绩在90分以上的学生的学号和平均成绩。
四、实验报告要求
要求在实验报告中详细给出所有题目的T-SQL代码。
五、思考题
1.什么是视图?
视图有哪些特点?
实验5数据安全性
实验学时:
2
实验类型:
综合
实验要求:
选修
一、实验目的
通过本实验的学习,使学生了解或掌握SQL授权语句的基本格式,掌握运用授权语句向用户授权及收回权限。
二、实验内容
1、数据控制语句的使用
1.1、建立SQL用户帐号
①.登录SQL查询分析器。
(注:
用Windows身份验证登录)
②.查看当前SQL的用户帐号,在查询分析器输入以下命令:
EXECsp_helpuser--列出当前数据库中所有的用户帐号
Go
SQL系统中只有dbo和guest两个用户帐号,dbo是指系统管理员,用sa帐号登录即为系统管理员。
为了做授权操作,这两个帐号不够,因此再添加15个用户帐号。
③.添加SQL用户帐号,命令如下:
以下代码是用SQL存储过程编写的添加15个用户帐号的程序,把这段代码复制到查询分析器中再运行即可添加15个用户帐号S101~S115,密码与用户名相同:
declare@iint,@studentchar(4)--声明两个变量,一个为整型,一个为字符型
set@i=101
while@i<=115
begin
set@student='S'+CAST(@iaschar(3))
execsp_addlogin@loginame=@student,@passwd=@student,--创建SQL服务器的登录帐号
@defdb='stu',@deflanguage='english'--设置登录数据库为stu
usestu--打开stu数据库
EXECsp_grantdbaccess@loginame=@student,@name_in_db=@student--创建数据库用户帐号,与登录帐号一致,才能用登录帐号访问数据库
EXECsp_addrolemember@rolename='db_owner',@membername=@student--为数据库角色增加用户帐号
set@i=@i+1
end
go
usestu
go
EXECsp_helpuser--列出当前数据库中所有的用户帐号(注:
在查询分析器中无须输入注释语句)
1.2、数据库DAC操作
⑴、关闭当前以用户名Sa登录的查询分析器,再分别以S101和S102这两个用户名登录,密码即用户名,启动两个查询分析器。
1.2关闭当前的查询分析器,然后每位同学在s101~s115用户名中任选两个用户重新登录SQL。
两次登录系统时选择“SQLServer身份验证登录”,如用户名分别为:
s101,密码:
s101;及用户名:
s102,密码:
s102;以两个不同的用户进行下列授权及收回授权操作:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库技术 实验 指导书 14 缩略
![提示](https://static.bdocx.com/images/bang_tan.gif)