SQL语句之基础篇第三章
SQL语句之基础篇第三章
本篇主要介绍去重操作符DISTINCT、AND&OR运算符、聚合函数COUNT()、MAX()、MIN()、SUM()、AVG()、排序操作符ORDER BY、分组操作符GROUP BY、HAVING子句的基本使用。
备注:若文中有存在问题的内容,请大家多多指教,欢迎大家打扰以及指导.........................
1.SELECT DISTINCT(去重操作符)
作用:对表中列的值进行去除重复的操作,仅返回唯一不同的值
student表结构如下图
查询student表中包含哪些name,剔除重复name:select distinct name from student;
返回结果如下图,对name=‘张飞’的值进行了去重操作:
2.AND & OR运算符
作用:在where子句中把两个或多个条件结合起来进行查询
1、当两个条件都成立时,and运算符显示一条记录
2、当两个条件只有当中的任意一个条件成立时,则or运算符显示一条记录,当两个条件都成立时,显示符合条件的两条记录
and运算符实例:select * from student where name='熊大' and age=16;
返回结果如下图:
or运算符实例:select * from student where name='熊大' or age=20;
返回结果如下图:
结合AND和OR运算符进行查询(使用圆括号组成复杂的表达式)如下实例:
SELECT * FROM student WHERE (name='熊大' OR age=20) AND id='A0001'
备注:查找name值等于熊大或者age只等于20,并且id=A0001的数据,
当name等于熊大,age不等于20,但是id=A0001成立时,根据name与id值筛选出一条数据显示出来
当name不等于熊大,age等于20,但是id=A0001成立时,根据age与id值筛选出一条数据显示出来
当name条件与age条件同时成立,id不等于A0001时,返回值应为空
返回结果如下图:
3.聚合函数COUNT()、MAX()、MIN()、SUM()、AVG()
作用:count():统计表中的记录条数,对单列的条数统计时,不会自动去重
max():统计最大值<==>min():统计最小值
sum():求和、、、、、avg():求平均值
查询student表中总数据条数:select count(*) from student;
返回结果如下:
统计student表中name列值的数据条数: select count(name) from student;
返回结果如下:
查询age最大值:select max(age) from student;
返回结果如下:
查询age最小值:select min(age) from student;
返回结果如下:
查询age字段值的总和:select sum(age) from student;
返回结果如下:
查询age值的平均值:select avg(age) from student;
返回结果如下:
4.排序-ORDER BY
用于对结果集进行排序,默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。支持单列或多列排序
单列升序排序实例:select * from student order by id;
返回结果如下:
单列降序排序实例:select * from student order by desc;
返回结果如下:
多列升序排序实例:select * from student order by id,age;
返回结果如下:
备注:在使用order by进行多列排序时,根据返回结果得出,只以order by之后的第一个列的排序为准,第二个列的值并没有进行对应的排序
5.分组-GROUP BY
用于结合聚合函数,根据一个或多个列对结果集进行分组,group by为分组函数,一般和聚合函数配合使用,可以按一个列或多个列进行分组,参与分组的多个列有一个不相同就是不同的组,例如按身份证号和用户号分组,身份证号和用户号一致才算一组,否则算两组
查询每个id下的age值存在多个条记录:
select id count(age)
from student
group by id
返回结果如下:
6.HAVING子句
备注:用于筛选满足条件的组,在分组后过滤数据,
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据
实例:查询每个name的记录条数大于1的数据:
select name,count(*)
from student
group by name
having count(*)>1
返回结果如下: