以下为《《数据库原理及应用》实验指导书》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
说 明
本实验指导书是根据教材------《面向21世纪高等院校计算机教材系列实验大纲编写而成。
在8个实验执行之前,须预先做前期准备阶段的2个实验:
第一个前期实验为数据库系统设计,要求写出如下三个设计报告:
1.系统需求分析报告;
2.数据库信息要求报告;
3.数据库的操作和应用要求报告。
第二个前期实验为关系数据模型的设计,
系统概念模型设计,要求使用E-R图表示系统中的实体情况,实体与实体间的联系情况。并使用数据字典对E-R图的实体和联系进行详细说明。
2.系统的关系数据模型设计,要求详细说明系统需要的基本表及属性、视图和索引,对基本表的主码、外码及被参照表进行说明。并对表中数据的约束条件进行详细说明。
实验一 SQL Server集成环境、数据库定义
一.实验目的
1.了解SQL Server的组成、主要管理工具,初步认识和了解SQL Server集成开发环境
2.了解SQL Server 数据库的文件组成
3.学会创建数据库的两种方法
4.掌握数据库备份的方法
二.实验内容
1、自行学习教材《数据库原理及应用(第2版)》第7章的7.1,了解SQL Server的组成、主要管理工具等相关知识。
2、自行学习教材第7章的7.2.1,了解SQL Server 数据库的文件组成的相关知识。
3、按照7.2.2中的方法,使用SQL Server Management Studio创建一个数据库,并设置和查看该数据库的属性。
4、参考教材P72例3-2,使用语句创建数据库,要求是:在D盘根目录下,创建 library 数据库,数据库各属性值(如初始大小、最大值等)可自行设置,写出创建数据库的代码。
5、数据库的分离和附加 (假设已经创建了一个数据库dlqx)
(1)分离:鼠标右键单击所要分离的数据库名,选择“任务”中的“分离”
弹出如下对话框,点“删除连接”,“更新统计信息”,使之打钩,单击“确定”按钮,完成数据库分离。
(2)复制数据库文件
按照该数据库数据文件的存储路径,找到所属打开文件夹,
可以看到两个数据库文件: dlqx .mdf 和 dlqx_log.ldf
复制这两个文件到你的 U盘中。
(3)附加
打开SQL Server ,连接后,开始数据库附加工作。单击数据库对象,选择“附加”,弹出对话框后,单击“添加”,通过文件浏览方式,选择你U盘中的数据库文件(dlqx.mdf),建议:先将U盘中文件拷贝到硬盘中,这样操作速度会快一些,只是记住上机结束时将数据库重新分离,再将新的数据库文件拷贝到U盘即可。
“确定”后,上次分离的数据库就附加到SQL Server 中了。
三.实验报告要求
所有代码不允许只以截图方式呈现,实验结果可以截图,需要有一定的文字说明。
实验二 数据表的建立与维护
一.实验目的
1.掌握数据库表的基础知识。
2.掌握创建、修改、使用、删除表不同方法,其中创建表要求会用Create Table语句建表。
二.实验内容
1、在实验一创建的数据库library中,建立以下数据表:(表结构+表数据)
要求:建表使用Create Table 语句,数据输入建议使用Insert 语句。
读者类型表 Reader_Type 结构
列名
数据类型
可否为空
备注
Rtype
Char(8)
否
读者类型 主码
Rnum
int
否
可借书数量
Reader_Typ
Rtype
Rnum
学生
10
教师
20
读者信息表Readers结构
列名
数据类型
可否为空
备注
RID
Char(10)
否
读者编号 主码
Rname
Char(10)
否
读者姓名
Rtype
Char(8)
否
读者类型 外码
Gender
Char (2)
否
性别,取值为男或女
Tel
Char(11)
可
手机号
Dept
Char(20)
可
所属院系
Borrowed
int
否
已借数量 默认值为0
Readers
RID
Rname
Rtype
Gender
Tel
Dept
Borrowed
S1039
赵某某
学生
男
***
***
0
S2213
王某某
学生
女
***
计***
2
S1905
李某某
学生
男
***
计***
2
S4077
蒋萧某某
学生
男
***
***
1
T0099
陆某某
教师
女
***
计***
1
T0348
张某某
教师
男
***
数理部
0
T0252
张某某
教师
女
***
***
0
图书类型表 Books_Type 结构
列名
数据类型
可否为空
备注
BTID
Char(4)
否
类型编号 主码
BTname
Char(20)
否
类型名称
BTID
BTname
S01
社会科学类
W05
外文期刊
N01
小说
N02
纪实
J01
计算机丛书
Books_Type
图书基本信息表 Books 结构
列名
数据类型
可否为空
备注
BID
Char(10)
否
图书编号 主码
ISBN
Char(13)
否
ISBN号 唯一约束
BTID
Char(4)
否
类型 外码
Bname
Char(30)
否
书名
Author
Char(20)
可
作者
Publisher
Char(50)
可
出版社
price
float
否
价格
status
Char(6)
否
状态 默认“可借”,取值(“可借”,“不可借”)
Books
BID
ISBN
BTID
Bname
Author
Publisher
price
status
J02234
***12218
J01
离散数学
蔡某某
西安电子科技大学出版社
32.0
不可借
J23900
***00707
J01
Oracle数据库教程
赵某某
清华大学出版社
49.0
可借
J01080
***65256
J01
数据库原理及应用(第2版)
姜某某
清华大学出版社
45.0
可借
J22215
***39922
J01
离散数学学习指导与习题解析
屈某某
高等教育出版社
40.2
不可借
N87888
***42929
N01
挪威的森林
村上春树
上海译文出版社
23.0
可借
N86531
***90518
N01
猫武士
艾琳·亨特
中国少年儿童出版社
20.0
可借
N90001
***31657
N02
中国八零后调查
段某某
重庆出版社
25.0
可借
N90002
***00919
N02
血色黄昏
老鬼
新星出版社
39.0
可借
Z10005
***63279
S01
在陌生人世界的思考
刘伟
清华大学出版社
58.0
不可借
Z10020
***78067
S01
千年文化的回想
黄某某
社会科学文献出版社
69.0
可借
Z10047
***53241
S01
偏爱学问
俞可平
上海交通大学出版社
38.0
不可借
Z10084
***52798
S01
字里行间
余斌
南京大学出版社
20.0
不可借
J05491
***33503
J01
计算机操作系统(第四版)
汤某某
西安电子科技大学出版社
39.0
不可借
图书借阅表 Borrow 结构
列名
数据类型
可否为空
备注
RID
Char(10)
否
读者编号 主码 外码
BID
Char(10)
否
图书编号 主码 外码
Borrow_date
datetime
否
借阅日期 主码
Due_date
datetime
否
到期日期 晚于 借阅日期
Return_date
datetime
可
实际归还日期
status
Char(4)
否
状态 默认“借出”,取值(“借出”,“已还”)
Borrow
RID
BID
Borrow_date
Due_date
Return_date
status
S2213
J05491
2017-1-7
2017-3-7
2017-3-1
已还
S2213
J02234
2018-8-30
2018-10-30
NULL
借出
S2213
J22215
2018-8-30
2018-10-30
NULL
借出
T0099
J05491
2018-9-20
2018-11-20
NULL
借出
S4077
Z10005
2018-2-1
2018-4-1
2018-4-1
已还
S4077
Z10005
2018-9-30
2018-11-30
NULL
借出
T0348
J05491
2018-1-5
2018-3-5
2018-2-22
已还
T0348
Z10020
2018-1-5
2018-3-5
2018-2-22
已还
S1905
Z10047
2018-7-29
2018-9-29
NULL
借出
S1905
Z10084
2018-7-29
2018-9-29
NULL
借出
T0252
Z10084
2017-12-12
2018-2-12
2018-1-2
已还
T0252
Z10047
2017-12-12
2018-2-12
2018-3-2
已还
T0252
Z10047
2018-4-4
2018-6-4
2018-4-30
已还
S2213
J01080
2018-7-7
2018-9-7
2018-9-10
已还
2、请先建立电力抢修工程数据库dlqx,在此数据库中,三张表的属性和含义、表数据如下:
(1)抢修工程计划表:
salvaging(prj_num, prj_name, start_date, end_date, Prj_status)
其中prj_num为主码
各属性含义如下:
工程项目编号(prj_num)
工程项目名称(prj_name)
开始日期(start_date)
结束日期(end_date)
是否按期完成(Prj_status)
(2)配电物资库存记录表:
stock(mat_num, mat_name, speci, warehouse, amount, unit, total)
其中mat_num为主码。
各属性含义如下:
物资编号(mat_num)
物资名称(mat_name)
规格(speci)
仓库名称(warehouse)
数量(amount)
单价(unit)
总金额(total)
(3)配电物资领料出库表:
out_stock(prj_num, mat_num, amount, get_date, department)
主码为(prj_num, mat_num)
各属性含义如下:
工程项目编号(prj_num)
物资编号(mat_num)
领取数量(amount)
领料日期(get_date)
领料部门(department)
三张表的建表语句,已经部分写好,请填写缺少的内容,数据需要同学自行输入(用语句或直接在环境中完成均可)
CREATE TABLE salvaging
( prj_num char(8) , /* 列级完整性约束,prj_num是主码*/
prj_name varchar(50) ,
start_date datetime ,
end_date datetime ,
prj_status ,
check( end_date>=start_date ) /* 表级完整性约束*/
);
CREATE TABLE stock
( mat_num char(8) PRIMARY KEY,
mat_name varchar(50) NOT NULL,
speci varchar(20) NOT NULL,
warehouse varchar(50) ,
amount int , /* 列级完整性约束,要求数量大于0*/
unit decimal(18, 2) ,
total AS ([amount] * [unit]),
/* as为自动计算字段,不能输入值,表示:总金额=数量*单价*/
);
CREATE TABLE out_stock
( prj_num char(8) ,
mat_num char(8) ,
amount int ,
get_date datetime ,
department varchar(100) ,
, /* 主码由两个属性构成,必须作为表级完整性约束*/
FOREIGN KEY (prj_num) REFERENCES salvaging(prj_num), /* 第一个外码*/
, /* 第二个外码*/
);
请将你完成的2个数据库做好备份(方法见实验一),以备下次上机时使用。建议建表、输入数据均使用SQL语句,以防数据文件损坏或数据库环境不兼容造成的数据库无法附加的情况出现。
三.实验报告要求
所有代码不允许只以截图方式呈现,实验结果可以截图,需要有一定的文字说明。
实验三 简单查询
一.实验目的
1.了解查询的概念和方法
2.掌握在SQL Server Management Studio中执行SELECT操作的方法
3.掌握SELECT语句在单表查询中的应用
二.实验内容
1.基于实验二中已建立的数据库library,请用SELECT语句实现下列查询,列出查询结果
查询单价在20-60之间的可借阅的图书书名和编号
查询查询目前借了书的男同学的姓名
在Borrow表中查询每位借书者所借过图书的数目(包括借过已还的和正在借阅的)
在Books表中查询每类图书的最高单价、最低单价
查询或是ISBN号尾号为7的、或是清华大学出版社出版的图书信息
2.基于实验二中已创建好的数据库dlqx,请用SELECT语句实现下列查询,列出查询结果
(1)查询所有工程的抢修天数
(2)查询供电局1#仓库中单价小于80的物资编号和名称
(3)查询物资名称中第三、四个字为“绝缘”的物资信息,结果按编号的降序排列
(4)查询查询使用了两种及两种以上物资的抢修工程项目号
(5)查询每个仓库中存放的物资种类数,结果列为仓库名称、物资种类数目
三.实验要求
将查询需求用SQL语言表示;写出查询语句后,请在数据库中新建查询验证你的查询结果是否正确,如果结果不正确,要进行修改,直到正确为止。如有需要添加和修改的数据,请自行在数据表中操作。
四.实验报告要求
所有代码不允许只以截图方式呈现,实验结果可以截图,需要有一定的文字说明。
实验四 连接查询
一.实验目的
1.掌握SELECT语句在多表查询中的应用
2.初步掌握SELECT语句在复杂查询中的应用
二.实验内容
1.基于数据库library,请用SELECT语句实现下列查询,列出查询结果
查询比蔡某某所著“离散数学”的ISBN号小、但单价却比它高的图书信息
查询在册的“小说”类的图书都是哪些出版社出版的
查询姓“张”的男老师的借书记录,列出老师姓名、借阅的图书名、借阅日期
查询超期归还的借阅记录,列出读者编号和姓名、他所借图书的书名
查询属于"计算机丛书"的图书的所有被借记录,列出图书名、借阅者姓名、图书借阅状态(即是借出还是已还)
2.基于数据库dlqx,请用SELECT语句实现下列查询,列出查询结果
(1)查询同时使用了物资编号为m001和m002的抢修工程的工程号(请用至少两个不同的SELECT语句完成)
(2)查询工程3部曾经领用过哪些物资,列出编号和名称
(3)查询被领用次数最多的物资的编号、名称及领用次数
(4)查询未按期完工的工程是哪个或哪几个工程部负责的
(5)查询2011年1月到3月期间,按期完成的每个抢修工程领用了几种物资
三.实验要求
将查询需求用SQL语言表示;写出查询语句后,请在数据库中新建查询验证你的查询结果是否正确,如果结果不正确,要进行修改,直到正确为止。如有需要添加和修改的数据,请自行在数据表中操作。
四.实验报告要求
所有代码不允许只以截图方式呈现,实验结果可以截图,需要有一定的文字说明。
实验五 综合查询
一.实验目的
1. 熟练掌握SELECT语句在多表查询中的应用
2. 掌握SELECT语句在复杂和综合查询中的应用
二.实验内容
1.基于数据库library,请用SELECT语句实现下列查询,列出查询结果
(1)查询从未被借阅过的图书编号和书名
(2)某读者遗失了他的借书证,他提供了手机号“***”,希望查询他是否有未归还的图书,请将他所需要的信息列出:姓名、未还图书名、归还时间
(3)统计每位女性读者的借书次数(包括已归还和未归还的图书、一个读者借阅一本书,为一次借书)
(4)统计清华大学出版社的图书在2018年被借出过多少次
(5)查询从未借过“计算机丛书”的读者编号、姓 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 表,对应属性为职工号,编号为外码,其被参照表为社会团体表,对应属性为编号。
建立数据库和以上三个表,设置主键、外键和必要的约束;输入一些数据备用;
2. 用SQL语句表达下列操作:
(1) 查找姓李的男性职工的姓名和手机号,查询结果按照年龄降序排列,年龄相同的按职工号升序排列
(2) 查找在2017年参加书法社或篮球队的职工姓名
(3) 查找50岁以上、没有参加任何团体的职工工号和姓名
(4) 查找篮球队和话剧社的负责人的姓名
(5) 求社会团体的参加人数超过5人的社团名称
(6) 建立视图:参加了两个或两个以上社团的职工工号和姓名
(7) 加入一个新社团:舞蹈社、编号W56,由工号是1234的职工负责,其它信息暂无
(8) 篮球队获得了奖项,请将所有篮球队队员的“获奖情况”修改为“市级冠军”
(9) 删除职工号为007的职工的一切信息(假定他不是任何一个社团的负责人)
(10) 删除职工号为007的职工的一切信息;假定他是篮球队的负责人,但是篮球队并不解散,请问,这个操作如何进行?
三.实验报告要求
所有代码不允许只以截图方式呈现,实验结果可以截图,需要有一定的文字说明。
[文章尾部最后500字内容到此结束,中间部分内容请查看底下的图片预览]
以上为《《数据库原理及应用》实验指导书》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。