《数据库管理系统实验报告含答案.pdf》由会员分享,可在线阅读,更多相关《数据库管理系统实验报告含答案.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、xxxxxxxx 大学数据库管理系统课程实验报告大学数据库管理系统课程实验报告班级:班级:_ _:实验时间:实验时间:年年月月日日指导教师指导教师:_:_一、实验目的一、实验目的1、通过实验,使学生全面了解最新数据库管理系统的基本内容、基本原理。2、牢固掌握 SQL SERVER 的功能操作和Transact-SQL 语言。3、紧密联系实际,学会分析,解决实际问题。学生通过小组项目设计,能够运用最新数据库管理系统于管理信息系统、企业资源计划、供给链管理系统、客户关系管理系统、电子商务系统、决策支持系统、智能信息系统中等。二、实验内容二、实验内容1 1导入实验用例如数据库:导入实验用例如数据库:
2、f:教学库.mdff:教学库f:仓库库存.mdff:仓库库存1.11.1 将数据库导入将数据库导入在 SqlServer 2005 导入已有的数据库*.mdf文件,在 SQL Server Management Studio里连接上数据库后,选择新建查询,然后执行语句EXEC sp_attach_db dbname=教学库,filename1=f:教学库.mdf,filename2=f:教学库_log.ldfgouse 教学库EXEC sp_changedbownersagoEXEC sp_attach_db dbname=仓库库存,filename1=f:仓库库存.mdf,filename2
3、=f:仓库库存_log.ldf1gouse 仓库库存EXEC sp_changedbownersago1.21.2 可能出现问题可能出现问题附加数据库出现“无法打开物理文件 X.mdf。操作系统错误 5:5(拒绝访问。)。(Microsoft SQL Server,错误:5120)”。解决:找到要附加的.mdf 文件-右键-属性-安全-选择当前用户-编辑-完全控制。对.log 文件进行相同的处理。2 2删除创建的数据库,使用删除创建的数据库,使用 T-SQLT-SQL 语句再次创建该数据库,主文件和日志文件的文语句再次创建该数据库,主文件和日志文件的文件名同上,件名同上,要求:要求:仓库库存仓
4、库库存_data_data 最大尺寸为无限大,最大尺寸为无限大,增长速度为增长速度为 20%20%,日志文件初始日志文件初始大小为大小为 2MB2MB,最大尺寸为,最大尺寸为 5MB5MB,增长速度为,增长速度为 1MB1MB。CREATE DATABASE仓库库存(NAME=仓库库存_data,FILENAME=F:仓库库存_data.MDF,SIZE=10MB,FILEGROWTH=20%)LOG ON(NAME=仓库库存_log,FILENAME=F:仓库库存_log.LDF,SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB)2.12.1 在数据库在数据库“仓库库存
5、仓库库存”中完成以下操作。中完成以下操作。(1)创建“商品”表,表结构如表 1:表 1 商品表列名商品编号商品名称单价生产商数据类型CharVarcharFloatVarchar长度62030是否允许为空值NOT NULLNOT NULL,说明主键(2)创建“仓库”表,表结构如表 2:表 2 仓库表2列名仓库编号仓库地址数据类型CharVarchar长度320是否允许为空值NOT NULNOT NULL说明主键(3)创建“库存情况”表,表结构如表 3:表 3 库存情况表列名仓库编号商品编号数量数据类型CharCharint长度36是否允许为空值NOT NULLNOT NUL说明主键主键1USE
6、 仓库库存GOCREATE TABLE 商品(商品编号char(6)NOTNULL PRIMARY KEY,商品名称char(20)NOTNULL,单价Float,生产商Varchar 30)2,3略。2.22.2 建立建立“商品商品”表、表、“仓库仓库”表和表和“库存情况库存情况”表三表之间的关系图。表三表之间的关系图。分别给分别给“商品商品”表、表、“仓库仓库”表和表和“库存情况库存情况”表添加数据。表添加数据。3 3数据库查询数据库查询.3.13.1 试用试用 SQLSQL 的查询语句实现以下查询:的查询语句实现以下查询:1统计有学生选修的课程门数。答:SELECT COUNT(DIST
7、INCT 课程号)FROM 选课2求选修 C004 课程的学生的平均年龄。答:SELECT A VG(年龄)FROM 学生,选课WHERE 学生.学生号=选课.学生号 and 课程号=C0043求学分为 3 的每门课程的学生平均成绩。答:SELECT 课程.课程号,AVG(成绩)FROM 课程,选课WHERE 课程.课程号=选课.课程号and 学分=3GROUP BY 课程.课程号4统计每门课程的学生选修人数,超过3 人的课程才统计。要求输出课程号和选修人数,查询结果按人数降序排列,假设人数相同,按课程号升序排列。3答:SELECT 课程号,COUNT(*)FROM 选课GROUP BY 课程
8、号HAVING COUNT(*)3ORDER BY COUNT(*)DESC,课程号5检索学号比王明同学大,而年龄比他小的学生。答:SELECTFROM 学生WHERE 学生号(SELECT 学生号FROM 学生WHERE=王明)and 年龄(SELECTAVG(年龄)FROM 学生WHERE 性别=女)9求年龄大于所有女同学年龄的男学生和年龄。答:SELECT,年龄 FROM 学生WHERE 性别=男and 年龄 all(SELECT年龄 FROM 学生WHERE 性别=女)10检索所有比王明年龄大的学生、年龄和性别。答:SELECT,年龄,性别 FROM 学生WHERE年龄(SELECT年
9、龄 FROM 学生WHERE=王明)11检索选修课程 C001 的学生中成绩最高的学生的学号。答:SELECT 学生号 FROM 选课WHERE 课程号=C001and 成绩=(SELECT MAX(成绩)FROM 选课WHERE 课程号=C001)12检索学生及其所选修课程的课程号和成绩。答:SELECT,课程号,成绩 FROM 学生,选课WHERE 学生.学生号=选课.学生号13检索选修2 门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的4降序排列出来。答:SELECT 学生号,SUM(成绩)FROM 选课WHERE 成绩=60GROUP BY学生号HAVING COUNT(
10、*)=2ORDER BY SUM(成绩)DESC3.2 利用控制流语句,查询学生号为0101001 的学生的各科成绩,如果没有这个学生的成绩,就显示“此学生无成绩”。答:IF EXISTS(SELECT*FROM 选课 WHERE 学生号=0101001)SELECT 课程号,成绩 FROM 选课WHERE 学生号=0101001ELSEPRINT 此学生无成绩3.3 用函数实现:求某个专业选修了某门课的学生人数。答:CREATE FUNCTION renshu(p char(10),cn char(4)RETURNS floatASBEGINDECLARE cou floatSELECT c
11、ou=(SELECT count(*)FROM 学生,选课WHERE 学生.学生号=选课.学生号 and 课程号=cnand专业=p)RETURN couEND3.4 用函数实现:查询某个专业所有学生所选的每门课的平均成绩。答:CREATE FUNCTION average(p char(10)RETURNS floatASBEGINDECLARE aver floatSELECT aver=(SELECT 课程号,avg(成绩)FROM 学生,选课WHERE 学生.学生号=选课.学生号 and专业=pGROUP BY 课程号)RETURN averEND3.5 针对“仓库库存”中的“商品”表
12、,查询商品的价格等级,商品号、商品名和价格等级单价 1000 元以内为“低价商品”,10003000 元为“中等价位商品”,3000 元以上为“高价商品”。答:SELECT 商品编号,商品名称,CASE5WHEN单价1000 then 低价商品WHEN单价=3000 then 高价商品END AS 价格等级FROM 商品4 4视图与索引视图与索引在 SQL Server Management Studio中创建一个仓库库存信息视图,要求包含仓库库存数据库中三个表的所有列。答:略。4.2 利用 T-SQL语句创建一个查询每个学生的平均成绩的视图,要求包含学生的学生号和。答:CREATE VIEW
13、 学生_平均成绩ASSELECT 学生.学生号,avg(成绩)AS平均成绩FROM 学生,选课WHERE 学生.学生号=选课.学生号GROUP BY学生.学生号,4.3 在SQL Server Management Studio中按照选课表的成绩列升序创建一个普通索引 非唯一、非聚集。答:略。4.4 利用 T-SQL语句按照商品表的单价列降序创建一个普通索引。答:CREATE INDEX index_商品单价 ON 商品(单价 DESC)5存储过程、触发器和游标5.1 创建存储过程,计算指定学生的总成绩,存储过程中使用一个输入参数和一个输出参数(总成绩)。答:CREATE PROCEDURE
14、Sname S_n varchar(20),sum1 int OUTPUTASSELECT sum1=sum(成绩)FROM 选课,学生WHERE=S_nand 学生.学生号=选课.学生号5.2 在教学库中建一个学生党费表,属性学生号,党费,学生号是主键,也是外键参考学生表的学生号;创建一个触发器,保证只能在每年的 6 月和 12 月交党费,如果在其它时间录入则显示提示信息。答:CREATE TABLE 学生党费表(学生号 CHAR7 primary keyforeign key references 学生(学生号),char(6),党费 int)6CREATE TRIGGER trg_学生党
15、费表on 学生党费表 for insertASif not(datepart(mm,getdate()=06 or datepart(mm,getdate()=12)BEGINprint对不起,只能在每年的 6 月和 12 月交党费rollbackEND6事务与并发控制6.1 创建一个事务,将所有女生的考试成绩都加5 分,并提交。答:BEGIN TRANSACTIONUSE 教学库UPDATE 选课SET 成绩=成绩+5WHERE 学生号 in(SELECT 学生号 FROM 学生 WHERE 性别=女)COMMIT TRANSACTION6.2 创建一个事务,向商品表中添加一条记录,设置保存点;再将商品编号为“ds-001”的单价改为“2000”。答:BEGIN TRANSACTIONUSE 仓库库存INSERT INTO 商品(商品编号,商品名称,单价,生产商)VALUES(bx-159,冰箱,2500,安徽美菱)SAVE TRAN savepointUPDATE 商品 SET 单价=2000 WHERE 商品编号=ds-001COMMIT7