数据库实验二及其答案.docx

上传人:苏美尔 文档编号:8614262 上传时间:2020-12-07 格式:DOCX 页数:9 大小:24.71KB
返回 下载 相关 举报
数据库实验二及其答案.docx_第1页
第1页 / 共9页
数据库实验二及其答案.docx_第2页
第2页 / 共9页
数据库实验二及其答案.docx_第3页
第3页 / 共9页
数据库实验二及其答案.docx_第4页
第4页 / 共9页
数据库实验二及其答案.docx_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《数据库实验二及其答案.docx》由会员分享,可在线阅读,更多相关《数据库实验二及其答案.docx(9页珍藏版)》请在三一文库上搜索。

1、实验名称实验二:使用分组,排序,汇课程名称 数据库原理与设计成绩总学院(系)软件学院专业计算机软件工程班级学生姓名学号实验地点实验日期实验目的:1. 掌握通配符的用法2. 掌握 GROUP BY子句的使用3. 掌握 ORDER BY子句的使用4. 掌握 TOP和 DISTINCT关键字的使用5. 掌握 COMPUTE和 COMPUTE BY子句的使用6. 掌握聚集函数的使用实验内容完成在在 Recruitment ,GlobalToyz 和 Student 数据库基础上的查询,按要求完成给出的下列题目,要求写出相应数据库的查询语句( SELECT语句)1. 显示以S开头,并且玩具名称不少于 7

2、 个字符的玩具名称 vToyName。2. 显示名称里包含字母 u或 x的玩具 ID 和名称以及价格。3. 查询信用卡号( cCreditCardNo )中包含 4 个 8 的订购者( Shopper)的详细信息。4. 统计订单号为 000001的订单订购的玩具的数量和玩具的总花费( mToyCost)。5. 统计每份提单订购的玩具数量和玩具花费。6. 对于 GlobalToyz 数据库的 Country 表,统计国家名称只由六个字母构成的国家的数目。7. 显示价格最高的五种玩具的名称和价格( vToyName,mToyRate)。8. 输出 Shopper 表的 Texas州的前 10%的订

3、购者的详细信息。9. 统计被人订购过的玩具的数量, 相同的玩具只统计一次。 ( OrderDetail表)10. toys 表中,按照玩具的类别( cCategoryId )统计每类玩具的数量和平均价格( mToyrate),只输出平均价格大于 20$的玩具的信息。思考:能输出的列可以有哪些?请写出相应的查询。11. 对于 PickofMonth 表,打印出该表的详细信息, 并在底部汇总出 2000 年销售数量的总和。12. 对于 OrderDetail 表,请输出订单号, cWrapperId ,vMessage和mToyCost,并根据 cWrapperId 小计玩具花销的平均值和总值,在

4、底部总1计玩具花销的平均值和总值。13. 打印出玩具花费最高的三份订单的详情。14. 以下这段代码将会输出什么:SELECT cOrderNo,cToyId,SUM(mToyCost)FROM OrderDetailGROUP BY cOrderNo请写出正确的语句。选择列表中的列 OrderDetail.cToyId无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。SELECT cOrderNo , cToyId , SUM( mToyCost ) 小计总值 FROM OrderDetailGROUP BY cOrderNo, cToyId15. 下面包含 COMPUTE BY子

5、句的代码都会产生错误,请写出产生错误的原因,并将其改为正确的带 COMPUTE BY子句的 SQL语句。SELECT cToyId,mToyCostFROM OrderDetailCOMPUTE SUM(mToyCost) BY cToyId在排序依据列表中没有找到COMPUTE BY 子句中的某一项。计算依据列表中的所有表达式也必须同时出现在排序依据列表中。compute ?by 子句中?出的列必须出现在选择列表中以 cToyId没有包含在聚合函数或GROUP BY 子句中。应改成如下所示:SELECT cToyId , mToyCost , SUM( mToyCost ) 小计总值 FRO

6、M OrderDetailGROUP BY cToyId, mToyCostORDER BY cToyIdCOMPUTE SUM( mToyCost)BY cToyIdSELECT cCartIdFROM OrdersORDER BY cCartIdCOMPUTE AVG(mTotalCost) BY cCartId2compute ?by 子句中?出的列必须出现在选择列表中SELECT之后 如果用了聚集函数和某一属性列则该属性列必须用GROUP分组应改为:SELECT cCartId,AVG( mTotalCost)FROM OrdersGROUP BY cCartIdORDER BY cC

7、artIdCOMPUTE AVG( mTotalCost)BY cCartId实验报告答案如下:一.实验内容:1. 完成在在 Recruitment ,GlobalToyz 和 Student 数据库基础上的查询,按要求完成给出的 15 道题目,要求写出相应数据库的查询语句 (SELECT语句)。3二.实验目的:1. 掌握通配符的用法2. 掌握 GROUP BY子句的使用3. 掌握 ORDER BY子句的使用4. 掌握 TOP和 DISTINCT关键字的使用5. 掌握 COMPUTE和 COMPUTE BY子句的使用6. 掌握聚集函数的使用三 .实验原理:本次实验主要通过根据题目要求完成对数据

8、库的查询,加深对sql 语言的印象。主要的原理就是 SQL 语言基本语句及语法。四.实验过程及编写代码:1. 显示以 S开头,并且玩具名称不少于 7 个字符的玩具名称 vToyName。SELECT vToyNameFROM ToysWHEREvToyNamelikeS_%2. 显示名称里包含字母 u或 x的玩具 ID 和名称以及价格。SELECT cToyId, vToyName, mToyRateFROM ToysWHEREvToyNamelikeu%or vToyNamelikex%3. 查询信用卡号( cCreditCardNo )中包含 4 个 8 的订购者( Shopper)的详细

9、信息。SELECT*FROM ShopperWHEREcCreditCardNolike%8%8%8%8%4. 统计订单号为 000001的订单订购的玩具的数量和玩具的总花费( mToyCost)。SELECT cOrderNo, mTotalCostFROM OrdersWHEREcCartId= 0000015. 统计每份提单订购的玩具数量和玩具花费。SELECT cOrderNo, mToyCostFROM OrderDetail6. 对于 GlobalToyz 数据库的 Country 表,统计国家名称只由六个字母构成的国家的数目。SELECTcount( cCountry) 国家数量

10、 FROM Country4WHEREcCountrylike_7. 显示价格最高的五种玩具的名称和价格( vToyName,mToyRate)。SELECTTOP 5 vToyName, mToyRateFROM Toys8. 输出 Shopper 表的 Texas州的前 10%的订购者的详细信息。SELECTTOP 10PERCENT *FROM ShopperWHEREcCity=Texas9. 统计被人订购过的玩具的数量, 相同的玩具只统计一次。 (OrderDetail 表)SELECTcount( cOrderNo) 订购数量 FROM OrderDetailGROUP BY cT

11、oyId10. toys 表中,按照玩具的类别( cCategoryId )统计每类玩具的数量和平均价格( mToyrate),只输出平均价格大于 20$的玩具的信息。思考:能输出的列可以有哪些?请写出相应的查询。SELECTcount( cCategoryId) 玩具类别 ,count( mToyRate) 平均价格 FROM Toysgroupby cCategoryIdhavingavg ( mToyRate) 2011. 对于 PickofMonth 表,打印出该表的详细信息,并在底部汇总出 2000年销售数量的总和。SELECT*,SUM( iTotalSold) 销售数量总和FRO

12、M PickOfMonthGROUP BY cToyId, siMonth, iYear, iTotalSoldCOMPUTE SUM( iTotalSold)12. 对于 OrderDetail 表,请输出订单号, cWrapperId ,vMessage和 mToyCost,并根据 cWrapperId 小计玩具花销的平均值和总值,在底部总计玩具花销的平均值和总值。SELECT cToyId, cWrapperId, vMessage, mToyCost, avg ( mToyCost) 小计平均值 , sum ( mToyCost) 小计总值 FROM OrderDetailGROUP

13、BY cToyId, cWrapperId, vMessage, mToyCostORDER BY cWrapperIdCOMPUTE avg ( mToyCost), sum ( mToyCost)13. 打印出玩具花费最高的三份订单的详情。SELECTTOP 3*FROM Toys14. 以下这段代码将会输出什么:5SELECT cOrderNo,cToyId,SUM(mToyCost)FROM OrderDetailGROUP BY cOrderNo请写出正确的语句。选择列表中的列 OrderDetail.cToyId无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。SELE

14、CT cOrderNo, cToyId, SUM( mToyCost) 小计总值 FROM OrderDetailGROUP BY cOrderNo, cToyId15. 下面包含 COMPUTE BY子句的代码都会产生错误,请写出产生错误的原因,并将其改为正确的带 COMPUTE BY子句的 SQL语句。SELECT cToyId,mToyCostFROM OrderDetailCOMPUTE SUM(mToyCost) BY cToyId在排序依据列表中没有找到COMPUTEBY 子句中的某一项。计算依据列表中的所有表达式也必须同时出现在排序依据列表中。compute ?by 子句中?出的

15、列必须出现在选择列表中以 cToyId没有包含在聚合函数或GROUP BY 子句中。应改成如下所示:SELECT cToyId, mToyCost,SUM( mToyCost) 小计总值 FROM OrderDetailGROUP BY cToyId, mToyCostORDER BY cToyIdCOMPUTE SUM( mToyCost)BY cToyIdSELECT cCartIdFROM OrdersORDER BY cCartIdCOMPUTE AVG(mTotalCost) BY cCartIdcompute ?by 子句中?出的列必须出现在选择列表中SELECT之后 如果用了聚集

16、函数和某一属性列则该属性列必须用GROUP分组应改为:SELECT cCartId,AVG( mTotalCost)FROM OrdersGROUP BY cCartIdORDER BY cCartIdCOMPUTE AVG( mTotalCost)BY cCartId6五、 实验问题:1、第十五题的第二问从理论上说是没问题,但是还是出现如下错误提示:COMPUTE子句 #1 、聚合表达式 #1 不在选择列表中 。已解决:改成 SELECT cCartId, mTotalCost,AVG( mTotalCost)FROM OrdersGROUP BY cCartId, mTotalCostOR

17、DER BY cCartIdCOMPUTE AVG( mTotalCost)BY cCartId六、实验总结:1.使用 COMPUTE子句的注意事项和原则1.1.在一条语句中,不能同时使用多个COMPUTE 和 COMPUTE BY子句Server 中要求选择列表中的字段和COMPUTE 子句中的字段相同1.3.不能同时使用 SELECT INTO 和 COMPUTE ,因为 COMPUTE 不会生成关系型的输出结果2.使用 COMPUTE BY子句的注意事项和原则2.1.应当同时使用 ORDER BY 子句和 COMPUTE BY 子句,这样记录就会被分组显示2.2.应在 COMPUTE B

18、Y 子句后指定字段名,使 SQL Server 能够决定要生成的汇总值是什么2.3.出现在 COMPUTE BY 子句后的字段必须出现在 ORDER BY 子句后,且顺序相同,始于同一表达式,不能略过任一表达式3.SELECT 之后 如果用了聚集函数和某一属性列则该属性列必须用GROUP 分组如:SELECT cToyId, SUM(mToyCost)7FROM OrderDetail会提示错误:选择列表中的列OrderDetail.cToyId 无效,因为该列没有包含在聚合函数或GROUP BY 子句中。改为如下所示:SELECT cToyId, SUM(mToyCost)FROM OrderDetailGROUP BY cToyId则能成功查询指导教师日期注:请用 A4 纸书写,不够另附纸。第页,共页8

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1