DQL——简单查询

格式:select [distinct ]* | 列名,列名 from 表名 WHERE 条件

  1. 查询所有的商品. select * from d_product;
  2. 查询商品名和商品价格. select pname,price from d_product;
  3. 别名查询.使用的关键字是as(as可以省略的)
  • 3.1表别名: select * from d_product as p;
  • 3.2列别名:select pname as pn from d_product;
  1. 去掉重复值. select distinct price from d_product;
  2. 查询结果是表达式(运算查询):将所有商品的价格打九折进行显示.
    select pname,price*0.9 as newPrice from d_product;
    在这里插入图片描述

1. 单表查询

1.1 排序

SELECT * FROM 表名 where 条件 ORDER BY 排序字段 ASC|DESC;

在价格排序(降序)的基础上,以分类排序(降序)
SELECT * FROM d_product ORDER BY price DESC,category_id DESC;

1.2 聚合

Tips:聚合函数会忽略空值。

  • count:统计指定列不为NULL的记录行数;
  • sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
  • max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
  • min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
  • avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
/*1、count(列名) 统计个数*/
/*统计价格在800以上一共有多少商品*/
SELECT COUNT(*) as total from d_product where price>=800;
/*统计一共有几种价格*/
select count(DISTINCT price)from d_product;

/*2、sum 计算和值*/
/*统计价格的和值*/
select sum(price) from d_product;

/*3、max 获取最大值*/
/*获取价格最大的商品的价格*/
select max(price) from d_product;

/*4、min 获取最小值*/
/*获取价格最小的商品的价格*/
select min(price) from d_product;

/*5、avg 获取平均值*/
/*获取所有商品的平均价格*/
select avg(price) from d_product;

1.3 分组

SELECT 字段1,字段2… FROM 表名 GROUP BY分组字段 HAVING 分组条件;

having与where的区别:
  • having是在分组后对数据进行过滤.
    where是在分组前对数据进行过滤
  • having后面可以使用分组函数(统计函数)
    where后面不可以使用分组函数。
/*按照价格分组*/
select price from d_product group by price;
/*按照类别id分组  该类名的商品个数 平均价格 类别*/
select count(*),avg(price),category_id from d_product group by category_id;

/*行筛选之后再分组*/
/*先行筛选再分组:对非空的category_id进行分组  注意where的位置*/
select count(*),avg(price),category_id from d_product where category_id is not null group by category_id;
/*先分组再筛选*/
/*筛选出评价价格在500以上的商品分组*/
select count(*),avg(price),category_id from d_product   group by category_id having avg(price)>=500;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值