本文已参与「新人创作礼」活动,一起开启掘金创作之路。
【MySQL】数据查询
一、目的与要求:
1、掌握SQL单表及多表之间的查询
2、掌握统计及分组函数
二、操作内容:
源码
按题目一段一段复制
-- 1.简单查询
① 从fruits表中检索s_id为100的供货商所供货的水果名和价格
select f_name, f_price
from fruits
where s_id = 100
-- ② 查找名称为“apple”的水果的价格
select f_price
from fruits
where f_name = 'apple'
-- ③ 查询价格在2.00元到10.20元之间的水果名称和价格,先按f_price降序排序,再按f_name排序。
select f_name, f_price
from fruits
where f_price >= 2.00 and f_price <= 10.20
order by f_price desc,f_name
-- ④ 在fruits表中,查询f_name中包含字母‘g’的记录
select*from fruits
where f_name like '%g%'
-- ⑤ 查询customers表中c_email不为空的记录的c_id、c_name和c_email字段值
select c_id, c_name, c_email
from customers
where c_email is not null
-- ⑥ 根据s_id对fruits表中的数据进行分组,并显示水果种类大于1的分组信息,效果如下图所示(GROUP_CONCAT函数)
select s_id,group_concat(f_name) Names
from fruits
group by s_id
having count(s_id)>1
-- 2.多表查询
-- ① 查询供应‘a1’的水果供应商提供的其他水果种类
select f1.f_id, f1.f_name
from fruits as f1, fruits as f2
where f1.s_id = f2.s_id and f2.f_id = 'a1'
-- ② 在orderitems表中查询f_id为c0的订单号,并显示具有该订单号的客户c_id
select o1.o_num, o2.c_id
from orderitems as o1, orders as o2
where o1.o_num = o2.o_num and o1.f_id = 'c0'
-- ③ 查询客户c_id为10000的所有订单的总价格
select c_id,
sum(quantity * item_price) as priceSUM
from orderitems as o1, orders as o2
where c_id = 10000 and o1.o_num = o2.o_num
-- ④ 查询s_city等于“Tianjin”的供应商,并显示所有该供应商提供的水果的种类,效果如下图所示
select o1.s_id, f_name
from fruits as o1, suppliers o2
where o1.s_id = o2.s_id and s_city = 'Tianjin'
-- ⑤ 查询订单为‘30005’的所有水果供货商的名称
select o1.o_num,o3.s_name
from orderitems as o1, fruits as o2, suppliers o3
where o1.o_num = 30005 and o1.f_id = o2.f_id
and o2.s_id = o3.s_id
-- ⑥ 查询销量最多的水果名称
select o1.quantity ,o2.f_name
from orderitems as o1, fruits as o2
where o1.f_id = o2.f_id
order by quantity desc
limit 1
小结
1.遇到的问题及解决过程
在实验过程中新建的查询未保存导致,在查看表数据后内容丢失,后保存查询解决了该问题。
2.体会和收获
在Navicat Premium可视化系统中对数据库进行一些列操作,掌握了SQL单表及多表之间的查询统计与分组函数的应用。更深入的了解了SQL数据库相关内容,感受数据库管理方式的多样与数据库的魅力。