常用查询
使用SELECT语句可以将需要的数据从MySQL数据库中查询出来,如果对查询的结果进行排序,可以使用order by语句来对语句实现排序,并最终将排序的结果返回给用户。这个语句的排序不光可以针对某一个字段,也可以针对多个字段。
select 字段1,字段2... from 表名 order by 字段1,字段2... asc #查询结果以升序方式显示,asc可以省略
select 字段1,字段2... from 表名 order by 字段1,字段2,... desc #查询结果以降序方式显示
- ASC是按照升序进行排序,是默认的排序方式,即ASC可以省略。
- SELECT语句中如果没有指定具体的排序方式,则默认按ASC方式进行排序。
- DESC是按照降序方式进行排列。当然order by前面也可以使用where子句对查询结果进一步过滤。
升序排序
select name ,score from report order by score;
降序排序
select name ,score from report order by score desc;
结合where进行条件过滤再排序
select name,score,address from report where address='hangzhou' order by score;
多字段排序
ORDER BY 语句也可以使用多个字段来进行排序,当排序的第一个字段相同的记录有多条的情况下,这些多条的记录再按照第二个字段进行排序,ORDER BY 后面跟多个字段时,字段之间使用英文逗号隔开,优先级是按先后顺序而定,但order by 之后的第一个参数只有在出现相同值时,第二个字段才有意义。
select name,score,score2 from report order by score2,score desc;
此处做的实验是先升序排序再降序排序,也可以都降序排序或者都升序排序,这里就不做过多的例子了。
and/or判断
在大型数据库中,有时查询数据需要数据符合某些特点条件
AND/OR 且/或 和shell脚本中一样使用方法
and/or 且与或的使用
select name,score,cardid from report where score>80;
select name,score,cardid from report where score>80 and score<90;
select name,score,cardid from report where score<60 or score>90;
嵌套、多条件使用
select name,score,cardid from report where score<60 or (score>70 and score<80);
select name,score,cardid from report where score<60 or (score>70 and score<=100) order by score desc;
distinct 查询不重复记录
select distinct 字段 from 表名﹔
distinct 必须放在最开头
distinct 只能使用需要去重的字段进行操作
distinct 去重多个字段时,含义是:几个字段同时重复时才能被过滤,会默认按左边第一个字段为依据。
GROUP BY对结果进行分组
通过 SQL 查询出来的结果,还可以对其进行分组,使用 GROUP BY 语句来实现 ,GROUP BY 通常都是结合聚合函数一起使用的,常用的聚合函数包括:计数(COUNT)、 求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN),GROUP BY 分组的时候可以按一个或多个字段对结果进行分组处理。
- 对group by 后面的字段的查询结果进行汇总分组,通常是结合聚合函数一起使用的
- group by 有一个原则,就是select 后面的所有列中,没有使用聚合函数的列必须出现在 group by 的后面。
select 字段,聚合函数 from 表名 (where 字段名(匹配) 数值) group by 字段名;
未完待续