作者:whisper
链接:http://proprogrammar.com:443/article/629
声明:请尊重原作者的劳动,如需转载请注明出处
花了几天时间用mysql把leetcode数据库的题都做了一遍,想的是熟悉一下常见的数据处理情形,一开始没有信心,想着先做简单中等的题,发现绝大部分是可以自己解决的,做完了简单中等的题,然后开始做难题,发现大部分也是可以自己解决的,数据库sql不像java等高级语言,比较死板,不灵活,发挥的地方少(能发挥我也不知道),因为我不懂方法,没有技巧,所以解决问题的方式就是无限连接,无限嵌套,inner join啊,left join啊,cross join啊,union啊这种,还有各种子查询,其实只要思路有了就成功一大半了,剩下的只是用sql表达一下。下面说一下做题中常用到的一些知识。
1、对数字的处理
round ceil floor abs这种
2、对字符串的处理
最多的就是转日期 str_to_date这种
3、对日期的处理
date_sub date_add date_format curdate curtime这种
4、逻辑判断
if ifnull case ... when ... then ... else ... end
5、聚合函数
sum count max min avg 还有就是与distinct case...when...then...else....end联合使用的情况
6、行转列与列转行
行转列用case...when...then...else...end
列转行用union
7、变量的使用
@var:=xxxx
对于一些常规难以解决的问题,可以用变量试试,如给行加个连续序号
8、还有就是最基本的sql用法
如distinct的使用,group by....having的使用,order by,limit的使用
9、连接的一个作用是可以使一行关联相关的若干行,从而处理该行与相关的行,如果没有连接,那只能处理一行了
10、子查询更像是一种分步,对一个问题,分若干步,一个子查询完成一步,另一个子查询通过嵌套在上一个子查询的基础上进行一下步
11、总之就是在连接的基础上通过子查询,函数,判断,各个关键字,变量等来完成数据库操作
我做题的过程中大致就用到这么多知识,而且这些知识就足以应对leetcode上的数据库的题目了
亲爱的读者:有时间可以点赞评论一下
全部评论