版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上xxxx大学数据库管理系统课程实验报告班级: _姓名: 实验时间: 年 月 日 指导教师:_一、实验目的1、通过实验,使学生全面了解最新数据库管理系统的基本内容、基本原理。2、牢固掌握SQL SERVER的功能操作和Transact-SQL语言。3、紧密联系实际,学会分析,解决实际问题。学生通过小组项目设计,能够运用最新数据库管理系统于管理信息系统、企业资源计划、供应链管理系统、客户关系管理系统、电子商务系统、决策支持系统、智能信息系统中等。二、实验内容1导入实验用示例数据库:f:教学库.mdff:教学库_log.ldff:仓库库存.mdff:仓库库存_log.ldf
2、1.1 将数据库导入在SqlServer 2005 导入已有的数据库(*.mdf)文件,在SQL Server Management Studio里连接上数据库后,选择新建查询,然后执行语句 EXEC sp_attach_db dbname = '教学库', filename1 = 'f:教学库.mdf', filename2 = 'f:教学库_log.ldf' gouse 教学库EXEC sp_changedbowner 'sa'goEXEC sp_attach_db dbname = '仓库库存', filen
3、ame1 = 'f:仓库库存.mdf', filename2 = 'f:仓库库存_log.ldf'go use 仓库库存EXEC sp_changedbowner 'sa'go1.2 可能出现问题附加数据库出现“无法打开物理文件 "X.mdf"。操作系统错误 5:"5(拒绝访问。)"。 (Microsoft SQL Server,错误: 5120)”。解决:找到要附加的.mdf文件->右键->属性->安全->选择当前用户->编辑->完全控制。对.log文件进行相同的处理。
4、2删除创建的数据库,使用T-SQL语句再次创建该数据库,主文件和日志文件的文件名同上,要求:仓库库存_data最大尺寸为无限大,增长速度为20%,日志文件初始大小为2MB,最大尺寸为5MB,增长速度为1MB。CREATE DATABASE仓库库存(NAME = '仓库库存_data', FILENAME = 'F:仓库库存_data.MDF' , SIZE = 10MB, FILEGROWTH = 20%)LOG ON (NAME ='仓库库存_log', FILENAME = 'F:仓库库存_log. LDF', SIZE =
5、2MB, MAXSIZE = 5MB,FILEGROWTH = 1MB)2.1 在数据库“仓库库存”中完成下列操作。(1)创建“商品”表,表结构如表1: 表1 商品表列名数据类型长度是否允许为空值说明商品编号Char6NOT NULL主键商品名称Varchar20NOT NULL,单价Float生产商Varchar30(2)创建“仓库”表,表结构如表2: 表2 仓库表列名数据类型长度是否允许为空值说明仓库编号Char3NOT NUL主键仓库地址Varchar20NOT NULL(3)创建“库存情况”表,表结构如表3: 表3 库存情况表列名数据类型长度是否允许为空值说明仓库编号Char3NOT
6、NULL主键商品编号Char6NOT NUL主键数量int(1)USE仓库库存GOCREATE TABLE 商品 (商品编号 char(6) NOT NULL PRIMARY KEY, 商品名称 char(20) NOT NULL, 单价 Float, 生产商 Varchar (30) )(2),(3)略。2.2 建立“商品”表、“仓库”表和“库存情况”表三表之间的关系图。2.3分别给“商品”表、“仓库”表和“库存情况”表添加数据。3数据库查询.3.1 试用SQL的查询语句实现下列查询:(1)统计有学生选修的课程门数。答:SELECT COUNT(DISTINCT 课程号) FRO
7、M 选课(2)求选修C004课程的学生的平均年龄。答:SELECT AVG(年龄) FROM 学生,选课 WHERE 学生.学生号=选课.学生号 and 课程号=C004(3)求学分为3的每门课程的学生平均成绩。答:SELECT 课程.课程号,AVG(成绩) FROM 课程,选课WHERE 课程.课程号=选课.课程号and 学分=3GROUP BY 课程.课程号(4)统计每门课程的学生选修人数,超过3人的课程才统计。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。答:SELECT 课程号,COUNT(*) FROM 选课GROUP BY 课程号HAVING CO
8、UNT(*) >3ORDER BY COUNT(*) DESC, 课程号(5)检索学号比王明同学大,而年龄比他小的学生姓名。答:SELECT 姓名 FROM 学生WHERE 学生号>(SELECT 学生号FROM 学生WHERE 姓名='王明') and 年龄<(SELECT 年龄FROM 学生WHERE 姓名='王明')(6)检索姓名以王打头的所有学生的姓名和年龄。答:SELECT 姓名,年龄 FROM 学生 WHERE 姓名 LIKE 王%(7)在选课表中检索成绩为空值的学生学号和课程号。答:SELECT 学生号,课程号 FROM 选课 W
9、HERE 成绩 IS NULL(8)求年龄大于女同学平均年龄的男学生姓名和年龄。答:SELECT 姓名,年龄 FROM 学生WHERE 性别=男 and 年龄 >(SELECT AVG(年龄) FROM 学生WHERE 性别=女) (9)求年龄大于所有女同学年龄的男学生姓名和年龄。答:SELECT 姓名,年龄 FROM 学生WHERE 性别=男 and 年龄 > all (SELECT 年龄 FROM 学生WHERE 性别=女) (10)检索所有比王明年龄大的学生姓名、年龄和性别。答:SELECT 姓名,年龄,性别 FROM 学生WHERE 年龄 > (SELECT 年龄 F
10、ROM 学生WHERE 姓名=王明) (11)检索选修课程C001的学生中成绩最高的学生的学号。答:SELECT 学生号 FROM 选课WHERE 课程号=C001 and 成绩=(SELECT MAX(成绩) FROM选课 WHERE课程号=C001)(12)检索学生姓名及其所选修课程的课程号和成绩。答:SELECT 姓名, 课程号, 成绩 FROM 学生,选课 WHERE学生.学生号=选课.学生号(13)检索选修2门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。答:SELECT 学生号,SUM(成绩) FROM 选课WHERE 成绩>=60GROUP BY
11、学生号HAVING COUNT(*)>=2ORDER BY SUM(成绩) DESC3.2 利用控制流语句,查询学生号为的学生的各科成绩,如果没有这个学生的成绩,就显示“此学生无成绩”。答:IF EXISTS ( SELECT * FROM 选课 WHERE 学生号='')SELECT 课程号,成绩 FROM 选课 WHERE 学生号=''ELSE PRINT '此学生无成绩'3.3 用函数实现:求某个专业选修了某门课的学生人数。答:CREATE FUNCTION renshu(p char(10),cn char(4) RETURNS f
12、loatASBEGIN DECLARE cou float SELECT cou=( SELECT count(*) FROM 学生,选课 WHERE学生.学生号=选课.学生号 and课程号=cnand 专业=p) RETURN cou END3.4 用函数实现:查询某个专业所有学生所选的每门课的平均成绩。答:CREATE FUNCTION average (p char(10) RETURNS floatASBEGIN DECLARE aver float SELECT aver=( SELECT 课程号,avg(成绩) FROM 学生,选课 WHERE学生.学生号=选课.学生号 and 专
13、业=pGROUP BY 课程号) RETURN aver END3.5 针对“仓库库存”中的“商品”表,查询商品的价格等级,商品号、商品名和价格等级(单价1000元以内为“低价商品”,10003000元为“中等价位商品”,3000元以上为“高价商品”)。答:SELECT商品编号, 商品名称, CASE WHEN 单价<1000 then '低价商品' WHEN 单价<3000 then '中等价位商品' WHEN 单价>=3000 then '高价商品'END AS 价格等级FROM 商品4视图与索引4.1在SQL Server
14、 Management Studio中创建一个仓库库存信息视图,要求包含仓库库存数据库中三个表的所有列。答:略。4.2 利用T-SQL语句创建一个查询每个学生的平均成绩的视图,要求包含学生的学生号和姓名。答:CREATE VIEW 学生_平均成绩ASSELECT 学生.学生号,姓名,avg(成绩) AS平均成绩FROM 学生,选课WHERE 学生.学生号=选课.学生号 GROUP BY学生.学生号,姓名4.3 在SQL Server Management Studio中按照选课表的成绩列升序创建一个普通索引(非唯一、非聚集)。答:略。4.4 利用T-SQL语句按照商品表的单价列降序创建一个普通
15、索引。答:CREATE INDEX index_商品单价 ON 商品(单价 DESC)5存储过程、触发器和游标5.1 创建存储过程,计算指定学生(姓名)的总成绩,存储过程中使用一个输入参数(姓名)和一个输出参数(总成绩)。答:CREATE PROCEDURE Sname S_n varchar(20), sum1 int OUTPUTASSELECT sum1= sum(成绩) FROM 选课,学生WHERE 姓名=S_nand 学生.学生号=选课.学生号5.2 在教学库中建一个学生党费表,属性(学生号,姓名,党费),学生号是主键,也是外键(参考学生表的学生号);创建一个触发器,保证只能在每年
16、的6月和12月交党费,如果在其它时间录入则显示提示信息。答:CREATE TABLE 学生党费表(学生号 CHAR(7) primary key foreign key references 学生(学生号), 姓名 char(6), 党费 int)CREATE TRIGGER trg_学生党费表on 学生党费表 for insertASif not(datepart(mm,getdate()='06' or datepart(mm,getdate()='12')BEGINprint'对不起,只能在每年的6月和12月交党费'rollbackEND6事务与并发控制6.1 创建一个事务,将所有女生的考试成绩都加5分,并提交。答:BEGIN TRANSACTION USE 教学库UPDATE 选课SET 成绩=成绩+5WHERE 学生号 in (SELECT 学生号 FROM 学生 WHERE 性别=女)COMMIT TRANSACTIO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 七年级语文下册 第五单元 18 一棵小桃树教案 新人教版
- 2024年保险业务代理合同
- 九年级信息技术第一学期机器人编程(仿真)软件简介教案 青岛版
- 2015年浙江省绍兴市中考真题语文试题(解析版)
- 2015年山东省临沂市中考真题语文试题(解析版)
- 2024年五年级品德与社会上册 第三单元 不屈的民族 第7课《悲壮的古炮台》教案 粤教版
- 机床主传动设计课程设计
- 机场工程课程设计
- 机器人基础课程设计
- 机器人关节课程设计
- SOAP病历冠心病介绍
- 《深化运用监督执纪“第一种形态”实施细则(试行)》测试题【附答案】
- 新媒体视听节目制作 第八章 剪辑的法则
- 张晓风散文自选集
- 环境、社会与公司治理(ESG)
- 餐饮行业初期投资预算分析
- 退费申请表模板(直接打印)
- 剪映:手机短视频制作-配套课件
- 西气东输二线25标段山岭隧道内管道安装技术
- A12.工程初验终验报审表
- 新探索研究生英语(基础级)读写教程参考答案Language-focus
评论
0/150
提交评论