mysql-单表查询-DQL语句(数据查询语言,用于对数据进行查询,如select)

一、条件查询

        (1)查询语句

        select 字段1,字段2... from 表名 where 条件;

                ---该语句的含义是 从表中查找满足条件的数据,并且显示字段1,字段2....

        如果想显示所有的字段,用*来表示

                select * from 表名 where 条件;

                

         (2)条件表达式

           大于:>         等于:=        小于:<        大于等于:>=         小于等于:<=         不等于:!=

                

        条件逻辑操作:

                与:and         或:or         非:not

                

                 

        为空判断---判断为空不能使用=null,要用: 

                为空:is null         非空:is not null

                

                         注意为空和空字符的区别

                        

 二、模糊查询--将包含关键字的所有数据找出来

        select * from 表名 where 字段 like "%关键字%"

                %:匹配任意长度的任意字符

                _:匹配任意单个字符

        

         

         

         如果不加%等,则不是模糊搜索

        

三、范围查询

         ①between ... and ...(相当于>=<=之间)

        

         ②in(value1,value2,......)(查询指定字段的值是否在集合中)

        

 四、去重查询

        关键字:distinct。筛选查询结果中是否有重复数据,如果有,相同的数据只保留其中一条。

        格式一:查询结果中只有一个字段

                select distinct 字段 from 表名;

                

         格式二:联合去重查询。以多个字段,做个一个整体,当都相同时,则表示重复

                 select distinct 字段1,字段2... from 表名;

                

 五、排序查询

        格式一:select * from 表名 order by 字段

        默认升序排列:

        

         指定排序规则(升序或降序):

                asc升序:

                        

                desc降序:

                         

         格式二:根据多个字段排序

                select * from 表名 order by 字段1 [asc|desc], 字段2 [asc|desc],....

                

 六、偏移查询

        关键字:limit。限定查询结果的显示范围

        select * from 表名 limit start,count

         

         start可以省略,表示从第一条开始,获取count条数据

        

 七、聚合函数

        (1)count(字段)

                select count(*) from 表名

                

                进行统计时,为空不会被记入到总行数中,但空字符串会被统计到总行数中

                

         (2)max(字段)

                

        (3)min(字段)

                 

        (4)avg(字段)

                

        (5) sum(字段)

                

         

         注意:where语句中不能使用聚合函数

                

八、分组查询

        关键字:group by。根据指定的字段(可以是单个字段也可以是多个字段)进行分组,分组后同一组的数据在查询结果中只会显示一条记录。一般结合聚合函数使用。

        select *,[聚合]... from 表名 group by 字段1,字段2...

        根据单个字段分组:

                

        根据多个字段进行分组:

                

         对查询结果进行筛选:

                关键字having,必须用在分组后,是对查询结果进行二次筛选

                在having语句中可以使用聚合函数。

                

                 

 九、总结

        单表查询写法顺序

select col1,col2,col3,… -- 这里表示查询结果需要显示哪些字段 
from table -- 表示从个表中去查找数据 
where 条件 -- 表示要找满足哪些条件的数据 
group by 字段 -- 表示对查找的结果进行分组 
having 条件 -- 表示对分组后的结果进行二次筛选 
order by -- 表示对查找的结果进行排序 
limit -- 表示要限制查询结果的显示范围

         举例:查询人数大于2个的班级学生的平均成绩,并且按照成绩降序排列,如果成绩相同则按找班级升序排列,并且只显示排在前面的两条记录  

select classid,count(*) as co ,avg(score) as sc 
from students 
where name is not null 
group by ClassID 
having co > 2 
order by sc desc,classid 
limit 0,2

猜你喜欢

转载自blog.csdn.net/chengdiyiyo/article/details/121021302