数据库管理系统实验报告含答案.docx
- 文档编号:12850608
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:11
- 大小:20.10KB
数据库管理系统实验报告含答案.docx
《数据库管理系统实验报告含答案.docx》由会员分享,可在线阅读,更多相关《数据库管理系统实验报告含答案.docx(11页珍藏版)》请在冰点文库上搜索。
数据库管理系统实验报告含答案
xxxx大学《数据库管理系统》课程实验报告
班级:
_______姓名:
实验时间:
年月日指导教师:
_______
一、实验目的
1、通过实验,使学生全面了解最新数据库管理系统的基本内容、基本原理。
2、牢固掌握SQLSERVER的功能操作和Transact-SQL语言。
3、紧密联系实际,学会分析,解决实际问题。
学生通过小组项目设计,能够运用最新数据库管理系统于管理信息系统、企业资源计划、供应链管理系统、客户关系管理系统、电子商务系统、决策支持系统、智能信息系统中等。
二、实验内容
1.导入实验用示例数据库:
f:
\教学库.mdf
f:
\教学库_log.ldf
f:
\仓库库存.mdf
f:
\仓库库存_log.ldf
1.1将数据库导入
在SqlServer2005导入已有的数据库(*.mdf)文件,在SQLServerManagementStudio里连接上数据库后,选择新建查询,然后执行语句
EXECsp_attach_db@dbname='教学库',
@='f:
\教学库.mdf',
@='f:
\教学库_log.ldf'
go
use[教学库]
EXECsp_changedbowner'sa'
go
EXECsp_attach_db@dbname='仓库库存',
@='f:
\仓库库存.mdf',
@='f:
\仓库库存_log.ldf'
go
use[仓库库存]
EXECsp_changedbowner'sa'
go
1.2可能出现问题
附加数据库出现“无法打开物理文件"X.mdf"。
操作系统错误5:
"5(拒绝访问。
)"。
(MicrosoftSQLServer,错误:
5120)”。
解决:
找到要附加的.mdf文件-->右键-->属性-->安全-->选择当前用户-->编辑-->完全控制。
对.log文件进行相同的处理。
2.删除创建的数据库,使用T-SQL语句再次创建该数据库,主文件和日志文件的文件名同上,要求:
仓库库存_data最大尺寸为无限大,增长速度为20%,日志文件初始大小为2MB,最大尺寸为5MB,增长速度为1MB。
CREATEDATABASE仓库库存
(NAME='仓库库存_data',
='F:
\仓库库存_data.MDF',
SIZE=10MB,
=20%)
LOGON
(NAME='仓库库存_log',
='F:
\仓库库存_log.LDF',
SIZE=2MB,
MAXSIZE=5MB,
=1MB)
2.1在数据库“仓库库存”中完成下列操作。
(1)创建“商品”表,表结构如表1:
表1商品表
列名
数据类型
长度
是否允许为空值
说明
商品编号
Char
6
NOTNULL
主键
商品名称
Varchar
20
NOTNULL,
单价
Float
生产商
Varchar
30
(2)创建“仓库”表,表结构如表2:
表2仓库表
列名
数据类型
长度
是否允许为空值
说明
仓库编号
Char
3
NOTNUL
主键
仓库地址
Varchar
20
NOTNULL
(3)创建“库存情况”表,表结构如表3:
表3库存情况表
列名
数据类型
长度
是否允许为空值
说明
仓库编号
Char
3
NOTNULL
主键
商品编号
Char
6
NOTNUL
主键
数量
int
(1)USE仓库库存
GO
CREATETABLE商品
(商品编号char(6)NOTNULLPRIMARYKEY,
商品名称char(20)NOTNULL,
单价Float,
生产商Varchar(30)
)
(2),(3)略。
2.2建立“商品”表、“仓库”表和“库存情况”表三表之间的关系图。
2.3分别给“商品”表、“仓库”表和“库存情况”表添加数据。
3.数据库查询.
3.1试用SQL的查询语句实现下列查询:
(1)统计有学生选修的课程门数。
答:
SELECTCOUNT(DISTINCT课程号)FROM选课
(2)求选修C004课程的学生的平均年龄。
答:
SELECTAVG(年龄)FROM学生,选课
WHERE学生.学生号=选课.学生号and课程号=’C004’
(3)求学分为3的每门课程的学生平均成绩。
答:
SELECT课程.课程号,AVG(成绩)FROM课程,选课
WHERE课程.课程号=选课.课程号and学分=3
GROUPBY课程.课程号
(4)统计每门课程的学生选修人数,超过3人的课程才统计。
要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
答:
SELECT课程号,COUNT(*)FROM选课
GROUPBY课程号
HAVINGCOUNT(*)>3
ORDERBYCOUNT(*)DESC,课程号
(5)检索学号比王明同学大,而年龄比他小的学生姓名。
答:
SELECT姓名FROM学生
WHERE学生号>(SELECT学生号FROM学生
WHERE姓名='王明')
and年龄<(SELECT年龄FROM学生
WHERE姓名='王明')
(6)检索姓名以王打头的所有学生的姓名和年龄。
答:
SELECT姓名,年龄FROM学生
WHERE姓名LIKE‘王%’
(7)在选课表中检索成绩为空值的学生学号和课程号。
答:
SELECT学生号,课程号FROM选课
WHERE成绩ISNULL
(8)求年龄大于女同学平均年龄的男学生姓名和年龄。
答:
SELECT姓名,年龄FROM学生
WHERE性别=’男’
and年龄>(SELECTAVG(年龄)FROM学生
WHERE性别=’女’)
(9)求年龄大于所有女同学年龄的男学生姓名和年龄。
答:
SELECT姓名,年龄FROM学生
WHERE性别=’男’
and年龄>all(SELECT年龄FROM学生
WHERE性别=’女’)
(10)检索所有比王明年龄大的学生姓名、年龄和性别。
答:
SELECT姓名,年龄,性别FROM学生
WHERE年龄>(SELECT年龄FROM学生
WHERE姓名=’王明’)
(11)检索选修课程C001的学生中成绩最高的学生的学号。
答:
SELECT学生号FROM选课
WHERE课程号=’C001’and成绩=(SELECTMAX(成绩)FROM选课
WHERE课程号=’C001’)
(12)检索学生姓名及其所选修课程的课程号和成绩。
答:
SELECT姓名,课程号,成绩FROM学生,选课
WHERE学生.学生号=选课.学生号
(13)检索选修2门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。
答:
SELECT学生号,SUM(成绩)FROM选课
WHERE成绩>=60
GROUPBY学生号
HAVINGCOUNT(*)>=2
ORDERBYSUM(成绩)DESC
3.2利用控制流语句,查询学生号为的学生的各科成绩,如果没有这个学生的成绩,就显示“此学生无成绩”。
答:
IFEXISTS(SELECT*FROM选课WHERE学生号='0101001')
SELECT课程号,成绩FROM选课
WHERE学生号='0101001'
ELSE
PRINT'此学生无成绩'
3.3用函数实现:
求某个专业选修了某门课的学生人数。
答:
CREATEFUNCTIONrenshu(@pchar(10),@cnchar(4))RETURNSfloat
AS
BEGIN
DECLARE@coufloat
SELECT@cou=(SELECTcount(*)FROM学生,选课
WHERE学生.学生号=选课.学生号and课程号=@cn
and专业=@p)
RETURN@cou
END
3.4用函数实现:
查询某个专业所有学生所选的每门课的平均成绩。
答:
CREATEFUNCTIONaverage(@pchar(10))RETURNSfloat
AS
BEGIN
DECLARE@averfloat
SELECT@aver=(SELECT课程号,avg(成绩)FROM学生,选课
WHERE学生.学生号=选课.学生号and专业=@p
GROUPBY课程号)
RETURN@aver
END
3.5针对“仓库库存”中的“商品”表,查询商品的价格等级,商品号、商品名和价格等级(单价1000元以内为“低价商品”,1000~3000元为“中等价位商品”,3000元以上为“高价商品”)。
答:
SELECT商品编号,商品名称,
CASE
WHEN单价<1000then'低价商品'
WHEN单价<3000then'中等价位商品'
WHEN单价>=3000then'高价商品'
ENDAS价格等级
FROM商品
4.视图及索引
4.1在SQLServerManagementStudio中创建一个仓库库存信息视图,要求包含仓库库存数据库中三个表的所有列。
答:
略。
4.2利用T-SQL语句创建一个查询每个学生的平均成绩的视图,要求包含学生的学生号和姓名。
答:
CREATEVIEW学生_平均成绩
AS
SELECT学生.学生号,姓名,avg(成绩)AS平均成绩
FROM学生,选课
WHERE学生.学生号=选课.学生号
GROUPBY学生.学生号,姓名
4.3在SQLServerManagementStudio中按照选课表的成绩列升序创建一个普通索引(非唯一、非聚集)。
答:
略。
4.4利用T-SQL语句按照商品表的单价列降序创建一个普通索引。
答:
CREATEINDEXindex_商品单价ON商品(单价DESC)
5.存储过程、触发器和游标
5.1创建存储过程,计算指定学生(姓名)的总成绩,存储过程中使用一个输入参数(姓名)和一个输出参数(总成绩)。
答:
CREATEPROCEDURESname@S_nvarchar(20),@sum1intOUTPUT
AS
SELECT@sum1=sum(成绩)FROM选课,学生
WHERE姓名=@S_nand学生.学生号=选课.学生号
5.2在教学库中建一个学生党费表,属性(学生号,姓名,党费),学生号是主键,也是外键(参考学生表的学生号);创建一个触发器,保证只能在每年的6月和12月交党费,如果在其它时间录入则显示提示信息。
答:
CREATETABLE学生党费表
(学生号CHAR(7)primarykeyforeignkeyreferences学生(学生号),
姓名char(6),
党费int)
CREATETRIGGERtrg_学生党费表
on学生党费表forinsert
AS
ifnot(datepart(mm,getdate())='06'ordatepart(mm,getdate())='12')
BEGIN
print'对不起,只能在每年的6月和12月交党费'
rollback
END
6.事务及并发控制
6.1创建一个事务,将所有女生的考试成绩都加5分,并提交。
答:
BEGINTRANSACTION
USE教学库
UPDATE选课
SET成绩=成绩+5
WHERE学生号in(SELECT学生号FROM学生WHERE性别=’女’)
COMMITTRANSACTION
6.2创建一个事务,向商品表中添加一条记录,设置保存点;再将商品编号为“ds-001”的单价改为“2000”。
答:
BEGINTRANSACTION
USE仓库库存
INSERTINTO商品(商品编号,商品名称,单价,生产商)
VALUES('bx-159','冰箱',2500,'安徽美菱')
SAVETRANsavepoint
UPDATE商品SET单价=2000WHERE商品编号='ds-001'
COMMIT
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 管理 系统 实验 报告 答案