带你认识MySQL数据库(三)
DQL-查询数据
简单查询
查询并展示表中所有记录
select 字段 from 表名;
查询并展示表中符合要求的记录
select 字段 from 表名 where 条件;
注意:任何select语句,不会真正修改数据的。
查询原理
条件查询
as
别名。 相当于外号。可以为表或者字段加别名
distinct 去掉重复
列名上可以进行临时的 数字类型的四则运算(+ - * /)
排序
查询时,我们通过order by语句,可以将查询出的记录进行排序。
放置在select语句的最后。
格式:
SELECT * FROM 表名 ORDER BY 排序字段 ASC|DESC;
ASC 升序 (默认) 小到大
DESC 降序 大到小
聚合函数/分组函数
聚合函数会忽略null空值
count(字段):统计指定列不为NULL的记录行数;
sum(字段):计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
max(字段):计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
min(字段):计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
avg(字段):计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;
小结:
聚合函数会忽略null值
最大、最小、求和、平均 都是对数字类型进行操作,不建议对字符串进行操作
分组
分组查询是指使用group by字句对查询记录(行)进行分组运算。
格式:
SELECT 字段1,字段2… FROM 表名 GROUP BY 分组字段;
分组运算-having
对分组后的每一组进行运算。
SELECT 字段1,字段2… FROM 表名 GROUP BY分组字段 HAVING 分组条件;
分组操作中的having子语句,是用于在分组后对数据进行过滤的,作用类似于where条件。
having与where的区别:
having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
having后面可以使用分组函数(统计函数)
where后面不可以使用分组函数。
having中进行任何运算,select中展示该字段
where中进行任何运算,select中无需展示该字段