聚合函数

# 1.聚合函数的使用        所有数据当作一组
# 求所有手机的价格的总和
SELECT SUM(price) FROM `product`;
# 求所有华为手机的价格的总和
SELECT SUM(price) FROM `product` WHERE brand = '华为';
# 求所有华为手机的平均价格
SELECT AVG(price) FROM `product` WHERE brand = '华为';
# 求手机的最高价格
SELECT MAX(price) FROM `product`;
SELECT MIN(price) FROM `product`;

# 1.求华为手机的个数
SELECT COUNT(*) FROM `product` WHERE brand = '华为';
SELECT COUNT(*) FROM `product` WHERE brand = '苹果';    
SELECT COUNT(url) FROM `product` WHERE brand = '苹果';


SELECT COUNT(price) FROM `product`;
SELECT COUNT(DISTINCT price) FROM `product`;   #多个相同的价格只计算入一个

# 2. GROUP BY 分组: 华为、苹果、小米、vivo各自一组
SELECT brand , AVG(price),COUNT(*),AVG(score) FROM `product` GROUP BY brand;

# 3. 在上条的基础上加上:平均价格>2000d的手机 HAVING的使用
SELECT brand , AVG(price)  avgprice ,COUNT(*),AVG(score) FROM `product` GROUP BY brand HAVING avgprice > 2000 ;


# 分组后查结果用having,它作用于GGROUP BY,分组前查询结果用WHERE,WHERE作用于表

# 4.评分大于7.5的手机的平均价格
SELECT AVG(price) FROM `product` WHERE score > 7.5;

# 5.求所有手机 评分7.5以上,然后按照品牌分类,求出各自的平均价格
SELECT brand,AVG(price) FROM `product` WHERE score > 7.5 GROUP BY brand;

多表查询

我们如果是希望在查询到产品时,显示对应的品牌的相关信息,因为数据是存放在两张表中,所以这个时候就需要进行多表查询。

如果我们直接通过查询语句希望在多张表中查询到数据,这个时候是什么效果呢?

例如:现在又两张表

1
SELECT * FROM `product`, `brand`;

多表查询

可见,在这样子进行多表查询时,其数据量是两表数量的乘积,笛卡尔乘积。

1
SELECT * FROM `product`, `brand` WHERE product.brand_id = brand.id;

真实开发中,常用连接 join的方式,进行多表之间的连接 sql-join

  1. 左连接
  2. 右连接
  3. 内连接
  4. 全连接

具体语句可参考 菜鸟教程