当前位置:文档之家› 南京信息工程大学数据库作业

南京信息工程大学数据库作业

南京信息工程大学数据库系统实验(实习)报告实验(实习)名称数据库系统实验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 SPDGBGROUP BY 客户编号,商品编号HAVING COUNT(商品编号)>=2)AND SPDGB.商品编号 IN(SELECT 商品编号FROM SPDGBGROUP BY 商品编号,客户编号HAVING COUNT(商品编号)>=2)•语句执行结果如下:7、查询22岁以下的客户编号、客户姓名及其订单信息。

•在KHB中添加信息:•在SPDGB中添加信息:•设计的SQL语句:SELECT a.客户编号,客户姓名,b.*FROM KHB a INNER JOIN SPDGB b ON a.客户编号=b.客户编号WHERE YEAR(GETDATE())-YEAR(出生日期)<22•语句执行结果如下:8、统计各个女客户的客户姓名及其订单数量。

•设计的SQL语句:SELECT 客户姓名,COUNT (商品编号) AS 订单数量FROM KHB a INNER JOIN SPDGB b ON a.客户编号=b.客户编号WHERE 性别='女'GROUP BY 客户姓名•语句执行结果如下:9、统计姓“张”的客户姓名及其订单数量。

•设计的SQL语句:SELECT 客户姓名,COUNT (商品编号) AS 订单数量FROM KHB a INNER JOIN SPDGB b ON a.客户编号=b.客户编号WHERE 客户姓名 LIKE '张%'GROUP BY 客户姓名•语句执行结果如下:10、统计订购的食品类订单数量在2个及其以上的客户姓名及其食品类订单数量。

•在SPDGB中添加信息:•设计的SQL语句:SELECT DISTINCT 客户姓名,COUNT(*) AS '食品类订单数量'FROM KHB JOIN SPDGB JOIN SPB ON SPB.商品编号=SPDGB.商品编号ON KHB.客户编号=SPDGB.客户编号WHERE 商品类别='食品'GROUP BY 客户姓名HAVING COUNT(SPDGB.商品编号)>=2•语句执行结果如下:11、查询所在省市为“江苏南京”的客户的订单信息。

•设计的SQL语句:SELECT b.*FROM KHB a INNER JOIN SPDGB b ON a.客户编号=b.客户编号WHERE b.客户编号 IN(SELECT b.客户编号FROM SPDGBWHERE 所在省市='江苏南京')•语句执行结果如下:12、计算所有订购了商品的客户的平均年龄。

•设计的SQL语句:SELECT AVG(YEAR(GETDATE())-YEAR(出生日期)) AS '平均年龄'FROM KHBWHERE 客户编号 IN(SELECT DISTINCT 客户编号FROM SPDGB)•语句执行结果如下:13、查询订购了“新新文化用品制造厂”产品的客户编号、客户姓名和相应订单信息。

•设计的SQL语句:SELECT DISTINCT 客户姓名,SPDGB.*FROM KHB JOIN SPDGB JOIN SPB ON SPB.商品编号=SPDGB.商品编号ON KHB.客户编号=SPDGB.客户编号WHERE 生产商 IN(SELECT 生产商FROM SPBWHERE 生产商='新新文化用品制造厂')•语句执行结果如下:14、查询订购了“食品”类商品的“江苏南京”的客户的最小年龄。

•设计的SQL语句:SELECT MIN(YEAR(GETDATE())-YEAR(出生日期)) AS '最小年龄'FROM KHB JOIN SPDGB ON KHB.客户编号=SPDGB.客户编号WHERE 所在省市='江苏南京' AND SPDGB.商品编号 IN(SELECT SPDGB.商品编号FROM SPDGB JOIN SPB ON SPDGB.商品编号=SPB.商品编号WHERE 商品类别='食品')•语句执行结果如下:15、查询订购了“食品”类商品的“江苏南京”的年龄最小的客户信息。

•设计的SQL语句:SELECT KHB.*FROM KHB JOIN SPDGB JOIN SPB ON SPB.商品编号=SPDGB.商品编号ON KHB.客户编号=SPDGB.客户编号WHERE 所在省市='江苏南京' AND 商品类别='食品' ANDYEAR(GETDATE())-YEAR(出生日期)=(SELECT MIN(YEAR(GETDATE())-YEAR(出生日期)) AS '最小年龄'FROM KHB)•语句执行结果如下:16、查询“张小林”订购过的商品信息。

相关主题