【MySQL】数据查询

194 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

【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数据库相关内容,感受数据库管理方式的多样与数据库的魅力。