数据库管理系统实验报告含答案.docx

上传人:b****4 文档编号:26905175 上传时间:2023-06-23 格式:DOCX 页数:11 大小:40.83KB
下载 相关 举报
数据库管理系统实验报告含答案.docx_第1页
第1页 / 共11页
数据库管理系统实验报告含答案.docx_第2页
第2页 / 共11页
数据库管理系统实验报告含答案.docx_第3页
第3页 / 共11页
数据库管理系统实验报告含答案.docx_第4页
第4页 / 共11页
数据库管理系统实验报告含答案.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

数据库管理系统实验报告含答案.docx

《数据库管理系统实验报告含答案.docx》由会员分享,可在线阅读,更多相关《数据库管理系统实验报告含答案.docx(11页珍藏版)》请在冰豆网上搜索。

数据库管理系统实验报告含答案.docx

数据库管理系统实验报告含答案

数据库管理系统实验报告含答案

xxxx大学《数据库管理系统》课程实验报告

班级:

_______姓名:

实验时间:

年月日指导教师:

_______

一、实验目的

1、通过实验,使学生全面了解最新数据库管理系统的基本内容、基本原理。

2、牢固掌握SQLSERVER的功能操作和Transact-SQL语言。

3、紧密联系实际,学会分析,解决实际问题。

学生通过小组项目设计,能够运用最新数据库管理系统于管理信息系统、企业资源计划、供应链管理系统、客户关系管理系统、电子商务系统、决策支持系统、智能信息系统中等。

二、实验内容

1.导入实验用示例数据库:

f:

\教学库.mdf

f:

\教学库_log.ldf

f:

\仓库库存.mdf

f:

\仓库库存_log.ldf

1.1将数据库导入

在SqlServer2021导入已有的数据库(*.mdf)文件,在SQLServerManagementStudio里

1.2可能出现问题

附加数据库出现“无法打开物理文件"X.mdf"。

操作系统错误5:

"5(拒绝访问。

)"。

(MicrosoftSQLServer,错误:

5120)”。

解决:

找到要附加的.mdf文件-->右键-->属性-->安全-->选择当前用户-->编辑-->完全控制。

对.log文件进行相同的处理。

2.删除创建的数据库,使用T-SQL语句再次创建该数据库,主文件和日志文件的文件名同上,要求:

仓库库存_data最大尺寸为无限大,增长速度为20%,日志文件初始大小为2MB,最大尺寸为5MB,增长速度为1MB。

CREATEDATABASE仓库库存

(NAME='仓库库存_data',

FILENAME='F:

\仓库库存_data.MDF',

SIZE=10MB,

FILEGROWTH=20%)

LOGON

(NAME='仓库库存_log',

FILENAME='F:

\仓库库存_log.LDF',

SIZE=2MB,

MAXSIZE=5MB,

FILEGROWTH=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利用控制流语句,查询学生号为0101001的学生的各科成绩,如果没有这个学生的成绩,就显示“此学生无成绩”。

答:

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文学研究

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1