数据库实验二:查询

一、实验目的与要求

1、掌握SQL单表及多表之间的查询
2、掌握统计及分组函数

二、实验内容

1.简单查询

① 从fruits表中检索s_id为100的供货商所供货的水果名和价格
(教师实验所给数据集中无符合条件的数据,自行插入了两条)
源码:
在这里插入图片描述
② 查找名称为“apple”的水果的价格
源码:
在这里插入图片描述
③ 查询价格在2.00元到10.20元之间的水果名称和价格,先按f_price降序排序,再按f_name排序。
源码:

在这里插入图片描述
④ 在fruits表中,查询f_name中包含字母‘g’的记录
源码:
在这里插入图片描述
⑤ 查询customers表中c_email不为空的记录的c_id、c_name和c_email字段值
源码:
在这里插入图片描述
⑥ 根据s_id对fruits表中的数据进行分组,并显示水果种类大于1的分组信息,效果如下图所示(GROUP_CONCAT函数)
在这里插入图片描述

2.多表查询

① 查询供应‘a1’的水果供应商提供的其他水果种类
源码:
在这里插入图片描述
② 在orderitems表中查询f_id为c0的订单号,并显示具有该订单号的客户c_id
源码:
在这里插入图片描述
③ 查询客户c_id为10000的所有订单的总价格
(原数据中无符合条件的数据,自行插入了两条)
源码:
在这里插入图片描述
④ 查询s_city等于“Tianjin”的供应商,并显示所有该供应商提供的水果的种类,效果如下图所示
在这里插入图片描述
⑤ 查询订单为‘30005’的所有水果供货商的名称
源码:
在这里插入图片描述
⑥ 查询销量最多的水果名称
源码:
在这里插入图片描述
⑦ 查询‘10000’号客户购买水果所花费的金额:类似
在这里插入图片描述
⑧ 显示购买了’107’号供货商所有水果的用户信息
步骤:先向数据表orders表中插入两条记录(30010,当前时间,10000)和(30008,当前时间,10004),在orderitems表中插入五条记录(30010,1,b5,10,3.6)、(30010,2,b2,5,7.6)、(30010,3,t4,7,3.6)、(30008,1,b1,10,102)、(30008,2,b5,10,3.6);然后再做题
源码:
在这里插入图片描述
运行测试结果截图:
在这里插入图片描述
在这里插入图片描述

三、思考题

结合实际应用并分析查找给定表中结构或数据是否存在问题,如何改进?
答:感觉表的数量略多,数据有些冗杂,可以考虑适当进行优化,如外键的字段编入索引而不进行全表扫描。

四、实验小结

1.实验中遇到的问题及解决过程

①查询表中含有字母“g”的数据时,没有查到有效结果。
在这里插入图片描述
解决:给需要查找的字母加一对’%’即可。
在这里插入图片描述
②最后一题收集表中数据不能加*
在这里插入图片描述

2.实验中产生的错误及原因分析

①运用多表查询时报错,代码有误
在这里插入图片描述
②计算订单总价格错误
在这里插入图片描述
原因分析:没仔细读题,直接返回了单价,应当用数量乘以单价得总价格。

③查询销量最多的水果名时,返回了多组数据
在这里插入图片描述
原因分析:应当用LIMIT限制返回数据的条数
在这里插入图片描述

3.实验体会和收获

①开始时不会做多表查询第三题中的求总价格,查资料之后学会了sum求和函数的用法。
②学会了函数group_concat用法。
③学会了统计及分组函数。

实验二的代码当时没有保存下来…只找到了截图,可能会影响观感,见谅。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Moonee_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值