mysql 第二天

-- 条件查询: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位    

  

 

posted @ 2019-07-31 19:54  九友  阅读(103)  评论(0编辑  收藏  举报