南京信息工程大学数据库作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京信息工程大学数据库系统实验(实习)报告实验(实习)名称数据库系统实验2 实验(实习)日期2018-4-12 得分指导教师顾韵华
系计软院专业计科年级2016级班次计科三班姓名徐文庆学号20161308109
一、实验目的
1.掌握SELECT语句的基本语法
2.掌握查询条件表示方法
3.掌握数据汇总的方法
4.掌握GROUP BY、ORDER BY、HA VING子句的作用和使用方法
二、实验内容
在SPDG数据库中,用SQL语句实现如下查询:
说明:
1~10必须至少用连接谓词或JOIN子句表达。
1、查询订购了商品、所在省市为“江苏南京”的客户编号、客户姓名及其全部订
单信息。
2、查询订购了商品、所在省市为“江苏南京”的客户编号、客户姓名及其订购“食
品”类订单信息。
3、查询在“2013-2-17”以后订购了商品的客户编号、客户姓名以及订单信息。
4、查询在“2013-2-17”以后订购了“食品”类商品的客户编号、客户姓名及其订
单信息。
5、查询订购了单价在50元以上(含)、并且订购数量在2个以上(含)的客户编
号、客户姓名及其订购商品信息。
6、查询订购了同一编号的商品超过一次的客户编号、客户姓名及其相应商品编号。
7、查询22岁以下的客户编号、客户姓名及其订单信息。
8、统计各个女客户的客户姓名及其订单数量。
9、统计姓“张”的客户姓名及其订单数量。
10、统计订购的食品类订单数量在2个及其以上的客户姓名及其食品类订单数量。
说明:
11~20必须至少用子查询表达。
11、查询所在省市为“江苏南京”的客户的订单信息。
12、计算所有订购了商品的客户的平均年龄。
13、查询订购了“新新文化用品制造厂”产品的客户编号、客户姓名和相应订单信
息。
14、查询订购了“食品”类商品的“江苏南京”的客户的最小年龄。
15、查询订购了“食品”类商品的“江苏南京”的年龄最小的客户信息。
16、查询“张小林”订购过的商品信息。
17、查询订购了“张小林”订购过的商品的客户编号和客户姓名。
18、查询“食品”类商品被哪些省市的客户订购。
19、查询订购了库存量在50及以上的商品的客户编号和客户姓名。
20、查询订购数量比“张小林”所有订单数量都小的订单信息。
说明:
21~25必须至少用子查询表达。
21、查询年龄小于所有客户平均年龄的客户的订单信息。
22、查询库存量超过平均库存量的商品信息。
23、查询订购了商品名称中包含“球”的订单信息。
24、查询订购了“食品”类商品的客户编号和客户姓名。
25、查询具有相同出生日期的客户信息(注意:测试时添加一个与已有客户出生日
期相同的客户)。
说明:
26~30请综合运用SQL语言各种表达能力来完成。
26、查询有一个或一个以上订单总金额大于30的所有客户的编号、姓名。
27、计算所有订购了商品的客户的平均年龄。
28、查询每类商品被订购的总数量并由大到小排序。
29、查询每个客户姓名及其订购商品的总数量并由大到小排序(考虑有重名的情
况)。
30、查询每个客户姓名及其订购商品的总金额并由大到小排序(考虑有重名的情
况)。
三、实验过程与结果
1、查询订购了商品、所在省市为“江苏南京”的客户编号、客户姓名及其全部订单信息。
•设计的SQL语句如下:
SELECT 客户姓名,b.*
FROM KHB a INNER JOIN SPDGB b ON a.客户编号=b.客户编号
WHERE 所在省市='江苏南京'
•语句执行结果如下:
2、查询订购了商品、所在省市为“江苏南京”的客户编号、客户姓名及其订购“食品”类订单信息。
•设计的SQL语句:
SELECT KHB.客户姓名,SPDGB.*
FROM KHB JOIN SPB JOIN SPDGB ON SPDGB.商品编号=SPB.商品编号 ON KHB.
客户编号=SPDGB.客户编号
WHERE 所在省市='江苏南京'AND 商品类别='食品'
•语句执行结果如下:
3、查询在“2013-2-17”以后订购了商品的客户编号、客户姓名以及订单信息。
•设计的SQL语句:
SELECT 客户姓名,b.*
FROM KHB a INNER JOIN SPDGB b ON a.客户编号=b.客户编号
WHERE 订购时间>'2013-2-17'
•语句执行结果如下:
4、查询在“2013-2-17”以后订购了“食品”类商品的客户编号、客户姓名及其订单信息。
•设计的SQL语句:
SELECT KHB.客户姓名,SPDGB.*
FROM KHB JOIN SPB JOIN SPDGB ON SPDGB.商品编号=SPB.商品编号 ON KHB.
客户编号=SPDGB.客户编号
WHERE 订购时间>'2013-2-17'AND 商品类别='食品'
•语句执行结果如下:
5、查询订购了单价在50元以上(含)、并且订购数量在2个以上(含)的客户编号、客户姓名及其订购商品信息。
•设计的SQL语句:
SELECT KHB.客户姓名,KHB.客户编号,SPB.*
FROM KHB JOIN SPB JOIN SPDGB ON SPDGB.商品编号=SPB.商品编号 ON KHB.
客户编号=SPDGB.客户编号
WHERE 单价>=50 AND 数量>=2
•语句执行结果如下:
6、查询订购了同一编号的商品超过一次的客户编号、客户姓名及其相应商品编号。
•在SPDGB中添加信息:
•设计的SQL语句:
SELECT DISTINCT KHB.客户姓名,SPDGB.客户编号,SPB.商品编号
FROM KHB JOIN SPDGB JOIN SPB ON SPB.商品编号=SPDGB.商品编号
ON KHB.客户编号=SPDGB.客户编号
WHERE SPDGB.客户编号 IN
(SELECT 客户编号
FROM SPDGB
GROUP BY 客户编号,商品编号
HAVING COUNT(商品编号)>=2
)
AND SPDGB.商品编号 IN
(SELECT 商品编号
FROM SPDGB
GROUP BY 商品编号,客户编号
HAVING COUNT(商品编号)>=2
)
•语句执行结果如下: