-- 条件查询:select from where
-- 查询客户a1的购买记录
select *
from fruit
where s_name = ‘a1‘;
#或者可以查询到a1的购买次数
select count(distinct s_name) from fruit; #其中distinct 为去除重复的项目
-- 查询客户a2购买的价格小于10的水果
select f_name , f_id
from fruit
where s_name = ‘a2‘ and f_price <10;
-- 查询价格在10到20之间的水果 #in 查询
##方法一
select *
from fruit
where f_price in
(select f_price
from fruit
where f_price between 10 and 20);
##方法二
select *
from fruit
where f_price >=10 and f_price <=20;
-- 空值查询 select from where is null;
-- 查询f_price 为空的记录
select *
from fruit
where f_price is null ; #判断为空的值不能用等号,,用is
-- 查询价格不为空的所有记录
select *
from fruit
where f_price is not null;
-- 模糊查询 select from where like
-- 查询名称以a开头的水果记录;
select *
from fruit
where f_name like "a%";
-- 查询名称中包含a的水果记录
select *
from fruit
where f_name like "%a%"; #名称中第二个字符为a的水果记录有 like ‘_a%‘
--
查询,聚合运算,分组查询等
-- 聚合运算
-- 查询fruit表中所有水果的数量、最高价、最低价和平均价格
select count(f_id),max(f_price),min(f_price),avg(f_price)
from fruit;
-- 分组查询
-- 查询每位客户购买的水果均价
select s_name,avg(f_price)
from fruit
group by s_name;
-- 查询每位客户购买的不同水果的平均价格
select s_name , f_name , avg(f_price)
from fruit
group by s_name,f_name;
-- 分组后筛选:select 字段1[,字段2,…] from 表名[ where 查询条件][ group by 分组字段1[,分组字段2,…]] having 筛选条件;
-- 查询客户a1购买的水果均价
#第一种方法
select s_name,f_name,avg(f_price)
from fruit
where s_name = ‘a1‘;
#第二种方法
select s_name ,f_name, avg(f_price)
from fruit
group by s_name
having s_name= ‘a1‘;
注意:代码执行的顺序,where ,group by ,having ,order by
-- 分组前筛选where
-- 客户购买水果均价大于10 ##只有真实存在的数据可以在where中使用,计算得到的不可以在where中用,,可以having中
select s_name,f_name,avg(f_price)
from fruit
group by s_name
having avg(f_price) >10;
-- having在分组和聚合之后筛选,而where子句不能包含聚合函数,having 做使用的子句必须在select 中出现
-- 查询购买苹果的客户
select s_name ,f_name
from fruit
where f_name = ‘apple‘
group by s_name;
-- having 子句中的筛选字段必须在 select 子句中出现
-- 查询每位客户购买的水果中apple的均价
###注意:先where然后是group by 、 order by 、 having ,,,所以此时要显示客户购买苹果均价时应该以水果进行分组,而不是以客户进行分组
select s_name,f_name,avg(f_price)
from fruit
group by f_name
having f_name = ‘apple‘;
-- 查询结果排序:select 字段1[,字段2,…] from 表名 order by 字段1[ 排序方向,字段2 排序方向,…];
-- 单字段排序
-- 查询所有水果信息按f_price降序显示
select *
from fruit
order by f_price desc;
-- 多字段排序:先按第一个字段排序,第一个字段值相同时再按第二个字段排序
-- 查询所有水果信息按s_name升序、f_price降序显示 意义:可以看出同一位用户所购物品的最大至最小
select *
from fruit
order by s_name,f_price desc;
-- 排序字段中的null默认排在最前面
-- 查询所有水果信息按f_price升序显示
select *
from fruit
order by f_price asc;
-- 限制查询结果数量:select 字段1[,字段2,…] from 表名 limit [偏移量,] 行数 | 行数 offset 偏移量; 用limit函数
-- 查询f_price最高的十种水果
select *
from fruit
order by f_price desc
limit 10;
-- 查询f_price排在第10以后的5种水果
select *
from fruit
order by f_price desc
limit 10,5; ##limit 1,10 第二道第11位