关于SQL刷题及其具体执行过程的心得

关于SQL刷题及其具体执行过程的心得

本篇博客是刚开始练手用的,原创的不多,不过其中转载的均是优秀的博客,在此基础上会标注清楚来源,如果有自己的理解也会注明。

一、sql知识点结构化

再难的sql也是由各部分知识点组成,各个要素之间产生联系然后发挥综合作用,如果基础不牢,最基础部分的知识点不熟,碰到稍微复杂一些的sql就会显得无从应手,例如查找最高值,我们可以利用联结进行比较取最高值,也可以利用排序加上limit分页等方案,但是如果不知道limit呢?岂不是断掉了一个思路。所谓工欲善其事必先利其器,一定一定要将最最基础的东西记住,熟练使用,并且在实践中得到更新的认知,然后再实践,不然一定会在碰到较难的sql一点思路都没有。

以《mysql必知必会》的介绍+最新版的特性更新思维导图,当然不全,也肯请大家补充,我会注明来源。可以以加粗字为中心进行查看。

一些要点:

  • 数据库是简称,咬文嚼字来说数据库是保存有组织的数据的容器(通常是一个文件或者一组文件),咱们常说的mysql叫数据库管理软件DBMS,它用来创建数据库
  • 展现形式是表,表的具体表现是行+列,要关注这个,因为他们涉及到数据的组合展现,便于理解sql中的group by,join,子查询等
  • 在保存及检索形式上是树,b树,b+树等,这涉及到优化,大家可自行查阅资料,后续也会提到。
  • 注意虚拟表,他不是真实的表,只是我们在操作过程中对数据的一种组装,我们要关注最终的结果表
  • 尤其注意sql执行顺序,不要搞错,例如limit是对结果进行分页,不是对原始数据分页(即它的执行时间比较靠后),如果先对原始数据分页,可能会出错。又例如group by先于select执行,如果认为select先执行,可能会觉得为什么一条数据对了好多条数据然后就乱掉。

基础查询语言:

展开的话字就太小了,大家凑合看,将知识结构化,看sql都是由哪些要素集合起来的。我比较推荐先熟悉都有什么再去练习。
在这里插入图片描述

现在我们已经学会1+1=2了,让我们开始解决哥德巴赫猜想吧!

二、对于一些概念的理解

sql的执行顺序
在这里插入图片描述

关于group by:CSDN,shaofei63,可以这样理解group by

关于子查询:本人的,简单用法,不涉及使用场景

关于联结:知乎博主:Moses,图解sql中各种join

关于count:

基础区别:
	count(1):计算一共有多少符合条件的行,不会忽略nullcount(*):统计所有的行数,包括为null的行,不单会进行全表扫描,也会对表的每个字段进行扫描,自动优化到最优列(聚集索引)
	count(column):查询列名那一列,为null不统计(纯null,不是空字符串或者0)
速度上:
	有主键:1 < column
	无主键:1 > column
	表只有一个字段:*最好
	确定合适用主键使用cloumn
count(*)count(1) > count(id) > count(普通字段)

关于窗口函数:知乎博主:猴子,关于sql窗口函数的理解

三、刷题中常见分类及其思路做法

1,排序最高值最低值(topN)
2,根据条件做取舍,例如求和,求平均值
3,行转列,列转行
4,连续出现的数据(连续登录/点赞等)
5,区间计算(某个区间比如时间段等)
6,中位数
7,递归问题
8,笛卡尔积问题
……

这些分类均来自知乎博主Ocean,它将常见题型做了分类,而且均是leetcode上的,看完有自己的理解后可以直接去leetcode上进行练习。注意其中的思路,回想本文刚开始说的,各个要素进行组成,然后综合发挥作用。其中我的思路如下:

  1. 第一眼看过去心里有个大概判断
  2. 然后挑出需求中需要配合的知识点,分组,排序,子查询等
  3. 如果不太熟练,可以将sql分步编写,写出几条后进行组合
  4. 组合时注意sql执行顺序,避免出现死局。
  5. 最后进行完善

知乎:Ocean,淦完142道sql题总结的题型

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值