数据库管理系统实验报告含答案_第1页
数据库管理系统实验报告含答案_第2页
数据库管理系统实验报告含答案_第3页
数据库管理系统实验报告含答案_第4页
数据库管理系统实验报告含答案_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、XXXX大学数据库管理系统课程实验报告班级: 姓名: 实验时间: 年 月日 指导教师:一、实验目的1通过实验,使学生全面了解最新数据库管理系统的基本内容、基本 原理。2、牢固掌握SQL SERVE的功能操作和Transact-SQL语言。3、紧密联系实际,学会分析,解决实际问题。学生通过小组项目设计, 能够运用最新数据库管理系统于管理信息系统、企业资源计划、供应链管理 系统、客户关系管理系统、电子商务系统、决策支持系统、智能信息系统中二、实验内容1 导入实验用示例数据库:教学库.mdf教学库og.ldf仓库库存.mdf仓库库存og.ldf1.1将数据库导入在 SqIServer 2005 导入

2、已有的数据库(*.mdf)文件,在 SQL Server Management Studio 里连接上数据库后,选择新建查询,然后执行语句EXEC sp_attach_db dbname =教学库, 教学库.mdf, 教学库og.ldfgouse 教学库EXEC sp_cha ngedbow nersagoEXEC sp_attach_db db name =仓库库存 仓库库存.mdf,仓库库存_log.ldfgouse 仓库库存EXEC sp_cha ngedbow nersago 1.2可能出现问题附加数据库出现无法打开物理文件X.mdf。操作系统错误5:5(拒绝访问。)。(Microso

3、ft SQL Server,错误:5120)。”解决:找到要附加的.mdf文件-右键-属性-安全-选择当前用户-编辑-完全控 制。对.log文件进行相同的处理。2.删除创建的数据库,使用T-SQL语句再次创建该数据库,主文件和日志文件的文件名同上,要求:仓库库存_data最大尺寸为无限大, 增长速度为20% ,日志文件初始 大小为2MB,最大尺寸为 5MB,增长速度为 1MB。CREATE DATABASE 仓库库存(NAME =仓库库存 _data,仓库库存_data.MDF,SIZE = 10MB,FILEGROWTH = 20%)LOG ON(NAME =仓库库存og,仓库库存og. L

4、DF,SIZE = 2MB,MAXSIZE = 5MB,FILEGROWTH = 1MB) 2.1在数据库仓库库存”中完成下列操作。(1)创建 商品表,表结构如表1 :表1 商品表列名数据类型长度是否允许为空值说明商品编号Char6NOT NULL主键商品名称Varchar20NOT NULL,单价1Float生产商Varchar30(2)创建仓库”表,表结构如表2:表2仓库表列名数据类型长度是否允许为空值说明仓库编号Char3NOT NUL主键仓库地址Varchar20NOT NULL创建库存情况”表,表结构如表3:表3库存情况表列名数据类型长度是否允许为空值说明仓库编号Char3NOT N

5、ULL主键商品编号Char6NOT NUL主键数量int(1) USE仓库库存2.2建立商品”表、GO2.3分别给商品”表、仓库”表和库存情况”表添加数据。CREATE TABLE商品(商品编号char(6)NOTNULL PRIMARY KEY商品名称char(20)NOTNULL,单价Float,生产商Varchar(30)(2), ( 3)略。仓库”表和 库存情况”表三表之间的关系图。3.数据库查询.3.1试用SQL的查询语句实现下列查询:(1 )统计有学生选修的课程门数。答: SELECT COUNT(DISTINCT 课程号)FROM 选课(2) 求选修C004课程的学生的平均年龄。

6、答:SELECT AVG(年龄)FROM 学生,选课WHERE学生学生号=选课学生号and课程号=C04(3) 求学分为3的每门课程的学生平均成绩。答:SELECT课程课程号,AVG(成绩)FROM 课程,选课WHERE课程课程号=选课课程号and学分=3GROUP BY 课程.课程号(4 )统计每门课程的学生选修人数,超过3人的课程才统计。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。答:SELECT 课程号,COUNT(*) FROM 选课GROUP BY课程号HAVING COUNT(*) 3ORDER BY COUNT(*) DESC, 课程号(5)检

7、索学号比王明同学大,而年龄比他小的学生姓名。答:SELECT姓名FROM学生WHERE学生号(SELECT 学生号FROM学生WHERE姓名=王明)and 年龄(SELECT AVG(年龄)FROM 学生WHERE性别=女)(9)求年龄大于所有女同学年龄的男学生姓名和年龄。答:SELECT姓名,年龄 FROM 学生WHERE性别=男and年龄 all (SELECT 年龄 FROM 学生WHERE性别=女)(10)检索所有比王明年龄大的学生姓名、年龄和性别。答:SELECT姓名,年龄性别 FROM学生WHERE 年龄 (SELECT 年龄 FROM 学生WHERE姓名=王明)(11)检索选修课

8、程 C001的学生中成绩最高的学生的学号。答:SELECT学生号 FROM选课WHERE 课程号=C00 and 成绩=(SELECT MAX(成绩)FROM 选课WHERE 课程号=C00)(12)检索学生姓名及其所选修课程的课程号和成绩。答:SELECT姓名,课程号,成绩FROM学生选课WHERE学生学生号=选课学生号(13) 检索选修2门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的 降序排列出来。答:SELECT学生号,SUM(成绩)FROM 选课WHERE 成绩 =60GROUP BY学生号HAVING COUNT(*)=2ORDER BY SUM(成绩)DESC3.2

9、利用控制流语句,查询学生号为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 cou=( SELECT count(*) FROM学生

10、,选课WHERE学生学生号=选课 学生号 and课程号=cn and 专业=p)RETURN couEND3.4用函数实现:查询某个专业所有学生所选的每门课的平均成绩。答: CREATE FUNCTION average (p char(10) RETURNS floatASBEGINDECLARE aver floatSELECT aver=( SELECT 课程号,avg(成绩)FROM 学生,选课WHERE学生.学生号=选课 学生号 and 专业=p GROUP BY课程号)RETURN averEND3.5针对 仓库库存”中的 商品”表,查询商品的价格等级,商品号、商品名和价格等级(单

11、价1000元以内为 低价商品”,10003000元为 中等价位商品”,3000元以上为 高 价商品”)。答:SELECT商品编号,商品名称,CASEWHEN 单价1000 then 低价商品WHEN 单价3000 then 中等价位商品WHEN 单价=3000 then 高价商品END AS价格等级FROM商品4视图与索引4.1在SQL Server Management Studio中创建一个仓库库存信息视图,要求包含仓库库存数据库中三个表的所有列。答:略。4.2利用T-SQL语句创建一个查询每个学生的平均成绩的视图,要求包含学生的学生号和姓名。答:CREATE VIEW 学生_平均成绩AS

12、SELECT学生学生号,姓名,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 Sn

13、ame S_n varchar(20), sum1 int OUTPUTASSELECT sum仁sum(成绩)FROM 选课,学生 WHERE 姓名=S_n and学生学生号=选课学生号5.2在教学库中建一个学生党费表,属性(学生号,姓名,党费),学生号是主键,也是外键(参考学生表的学生号);创建一个触发器,保证只能在每年的6月和12月交党 费,如果在其它时间录入则显示提示信息。答:CREATE TABLE 学生党费表(学生号 CHAR (7) primary key foreign key references 学生(学生号), 姓名 char(6), 党费int)CREATE TRIGGER trg_ 学生党费表on学生党费表 for insertASif no t(datepart(mm,getdate()=O6 or datepart(mm,getdate()=12)BEGINprint对不起,只能在每年的6月和12月交党费rollbackEND6 事务与并发控制6.1创建一个事务,将所有女生的考试成绩都加5分,并提交。答:BEGIN TRANSACTIONUSE教学库UPDATE选课SET成绩=成绩+5WHERE 学生号in (SELECT 学生号 FROM学生 WHERE 性别=女) COMM

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论