这里是学习Mysql的地方,之前其实已经学过了,但是太久没用,这里再来学习一次。
这里的学习主要有如下四个部分:
第一部分:MySQL基础(数据的储存+管理操作)
第二部分:MySQL核心查询
第三部分:MySQL高级应用(窗口函数,索引机制,MySQL视图)
第四部分:MySQL项目实战(基于MySQL数据库结合企业项目实例进行数据分析)
第一部分MySQL基础
这里我们不再学习一些定义类的基础知识和背景知识。
第二部分MySQL核心查询
排序,分组,聚合,多表查询,合并查询,子查询
第1节单表查询
1.1排序
排序就是通过order by子句来进行,可以将查询出来的结果进行排序,但是这里只是展示出来的顺序,真实数据是不变的。
order by后面还有一个参数,ASC和DESC,前者是顺序(默认),后者是降序,一般用的多是降序。
需求1:使用 salary 字段,对emp 表数据进行排序 (升序/降序)
组合排序
同时对多个字段进行排序,如果第一字段相同,就使用第二字段,以此类推
需求2:在薪水排序的基础上,再使用id进行排序, 如果薪水相同就以eid 做降序排序
其实直接接在后面再用一次就可以了,没啥大不了
1.2聚合函数
一般我们在计算最高工资/平均工资/工资总和的时候,其实都是使用聚合函数拉进行的
普通的查询都是按行来计算的,但是聚合就不一样了,它是使用列来进行,即纵向查询,并返回计算结果。
听着挺厉害,其实聚合函数就是一些简单的数学计算
来测试以下吧
先来看第一题
查询一个总数是最简单的问题,count里面参数可以填的选项也很多,在计算有些列个数的时候,注意count是会忽略空值的。注意计数用count不是sum
注意,count我觉着最好带上distinct来去重
注意这里的平均值是avg哦,别写成了mean,习惯使用as来改名
注意哦,首先这里要返回的是个数,另外这种明显的筛选问题,我们要熟练使用where来解决。另外where是用在from后。
这里和上题同理,注意这里是一个等于号
聚合函数可以直接使用在select里面。
1.3分组
分组往往和聚合函数是一起使用的,对数据分组,分完组以后呢就可以在各个组内进行聚合统计分析了。分组的函数时group by
需求1:通过性别字段进行分组
这里写着:这样写没有意义,分组时可以使用聚合函数进行统计操作,上面直接写意义不大。
需求2:通过性别字段进行分组,求各组的平均薪资
这里有两点需要注意一下:
第一是group by里面的字段必须同时存在select里面
第二是select内部除了group by字段和聚合函数字段,不可以再出现其他字段。
太霸道了。。。
需求3:
第一题和上一题无异,第二题需要注意一下
第二题这里还存在一个where函数,首先得知道where是要排在group by的前面的,还有is not null可以用来判断不为null。
需求4:
这里同样也是筛选,但与上题不同的是,这里的筛选是在分组之后的,这时候不可以再使用where了,而是要用having
并且having是在group by之后的,并且可以使用聚合函数
1.4 limit关键字
limit是限制的意思,用来限制返回结果的行数,注意这是MySQL的方言。
需求1:
这里就是考察limit内部的参数问题了
注意,这里并不是4-6,而是从4开始,往后查询6条,页数要向前进1为,所以写作3,6,其中的offset参数就是起始点前一位。
需求2:分页操作 每页显示3条数据
这里就是limit的第二个功能了
其实作用是一样的,只是分开用。