目录
一,常用查询
1,order by按关键字排序
使用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子句对查询结果进一步过滤
1.1 升序排序
mysql> select id,nba,age from ky21 order by id asc;
#查询id,nba,age。字段的记录,并且以id进行升序
1.2 降序排序
mysql> select id,nba,age from ky21 order by id desc;
查找id,nba,age字段,以id进行降序排序
desc(降序)
1.3 结合where进行条件过滤再排序
mysql> select id,nba,score,addres from ky21 where addres='洛杉矶' order by score desc;
#查询,id,nab,score,address字段,再进行过滤出address=洛杉矶的字段,在进行score字段进行降序排序
1.4多字段排序
order by 语句也可以使用多个字段来进行排序,当排序的第一个字段相同的记录有多条的情况下,这些多条的记录再安装第二个字段进行排序,order by后面跟多个字段时,字段直接使用英文逗号隔开,优先级是安装优先级顺序而定,但是order by 之后的第一个参数只有在出现相同值的时候,第二个字段才有意义。
mysql> select id,nba,score from ky21 order by score,id desc;
此处做的实验是先升序排序再降序排序,也可以都降序排序或者都升序排序,这里就不做过多的例子了
2,and和or判断
在大型数据库中,有事查询数据需要数据符合某些特点,“and”和“or” 表示“且”和“或”。
2.1 and和or的使用
mysql> select id,nba,age from ky21 where id>20;
查找id大于20的记录,并且只显示id,age,nba
mysql> select id,nba,age from ky21 where id>10 and id<30;
查找id大于10的记录并且小于30的记录
mysql> select id,nba,age from ky21 where id>1 or id<30;
查找id大于1 或者小于30的记录
2.2 嵌套,多条件使用
mysql> select id,nba,age from ky21 where id <10 or (id>1 or id<30);
查找id小于10或者大于1和小于30之间的
mysql> select id,nba,age from ky21 where id <10 or (id>1 or id<30) order by id desc;
查找id小于10或者大于1和小于30之间的,并且以id进行降序排序
3,distinct 查询不重复记录
select distinct 字段 from 表名;
- distinct 必须放在最开头
- distinct 只能使用需要去重的字段进行操作
- distinct 去重多个字段时,含义是:几个字段同时重复时才能会过滤,会默认按左边第一个字段为依据。
mysql> select distinct age from ky21;
#使用distinct查询不重复记录,(相当于去重)
4,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 字段名;
mysql> select count(age),score from ky21 group by score;
#count(age): 记录age字段的数据出现的次数
group by score; 按照score相同的分数进行分组,
mysql> select count(age),score from ky21 where score<20 group by score;
mysql> select count(age),score,addres