MySQL操作之数据查询语言:(DQL)(四-1)(单表操作)
MySQL操作之概念、SQL约束(一)
MySQL操作之数据定义语言(DDL)(二)
MySQL操作之数据操作语言(DML)(三)
MySQL操作之数据查询语言:(DQL)(四-1)(单表操作)
MySQL操作之数据查询语言:(DQL)(四-2)(多表查询)
MySQL操作之数据控制语言:(DC)(五)
一、简单查询(select、distinct)
查询所有的商品
select * from product;
查询商品名和商品价格
select pname,price from product;
别名查询.使用的关键字是as(as可以省略的)
select pname as pn from product as p
#去掉重复值(distinct)
select distinct price from product
价格+10元进行显示
elect price+10 from product
二、条件查询(where)
BETWEEN…AND… | 显示在某一区间的值(含头含尾) | 一定区间内的数 |
---|---|---|
IN(set) | 显示在in列表中的值,例:in(100,200) | 两个数中的一个 |
LIKE ‘张 ‘ | 模糊查询 | first_name like ‘_a%’; |
查询价格为800商品
SELECT * FROM product WHERE price = 800
查询价格不是800的所有商品
SELECT * FROM product WHERE price != 800
查询商品价格在200到1000之间所有商品
SELECT * FROM product WHERE price >= 200 AND price <=1000;
SELECT * FROM product WHERE price BETWEEN 200 AND 1000;
查询商品价格是200或800的所有商品
SELECT * FROM product WHERE price = 200 OR price = 800;
SELECT * FROM product WHERE price IN (200,800);
查询含有’霸’字的所有商品
SELECT * FROM product WHERE pname LIKE '%霸%'
ELECT * FROM product WHERE pname LIKE '香%';--以香开头的
SELECT * FROM product WHERE pname LIKE '_想%'--第二个字为想的
商品没有分类的商品
SELECT * FROM product WHERE category_id IS NULL
查询有分类的商品
SELECT * FROM product WHERE category_id IS NOT NULL
三、排序查询(order by-ASC/DESC)
格式:
SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC
使用价格排序(降序)
SELECT * FROM product ORDER BY price DESC
在价格排序(降序)的基础上,以分类排序(降序
SELECT * FROM product ORDER BY price DESC,category_id DESC
四、聚合查询
- count:统计指定列不为NULL的记录行数;
- sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0
- max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
- min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
- avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
查询商品的总条数(count)
SELECT COUNT(*) FROM product
查询商品的价格和(sum)
select sum(price) as 'totalprice' FROM product
查询分类为’c002’所有商品的平均价格(AVG)
SELECT AVG(price) FROM product WHERE category_id = 'c002'
查询商品的最大价格和最小价格(MAX)
SELECT MAX(price),MIN(price) FROM product
五、分组查询(group by)
分组查询是指使用group by字句对查询信息进行分组
SELECT 字段1,字段2… FROM 表名 GROUP BY分组字段 HAVING 分组条件;
having与where的区别:
having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
having后面可以使用聚合函数(统计函数)
where后面不可以使聚合函数
统计各个分类商品的个数,且只显示个数大于1的信息
SELECT category_id ,COUNT(*) FROM product GROUP BY category_id HAVING COUNT(*) > 1;
统计各个分类商品的平均价格,且只显示平均价格>800的信息
SELECT category_id,AVG(price) FROM product GROUP BY category_id HAVING
AVG(price)>800;