美文网首页大数据 爬虫Python AI Sql
数据分析一定要懂的SQL知识

数据分析一定要懂的SQL知识

作者: 程小舰 | 来源:发表于2020-04-21 12:37 被阅读0次

    1.从理论上来讲

    数据库操作可能包含以下几大类:

    数据操纵语言:单表/多表查询就不用多说了,select查询;数据更新如

    UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

    数据定义语言:主要是表/索引/视图的创建,索引的创建是比较重要的概念,索引应用的如何直接决定了你的任务处理时间或处理效率,这一块可以好好看一下,例如:

    以下两种情况下,title创建了索引,那种情况会失效?(文末回答)

    A:SELECT * FROM test_a WHERE title LIKE '5000%';

    B:SELECT * FROM test_a WHERE title LIKE '%5000';

    视图也同样很重要,视图的灵活运用也可以给你提高效率。例如将一些常用的业务需求创建为视图。

    实体完整性和参照完整性:好像听起来比较抽象,这个说的意思主要是让你掌握创建表的主外键

    数据控制语言:主要内容为授权与回收,真正的在公司里,你是不可能真的对某一个库或表拥有较大权利的,你的账号基本上就是授权了select的权限,或者你只能操作某些表或者库,这就是授权与回收的意思。一旦操作不当,全给你删了啥的,是不是很崩溃~

    数据库编程:这个主要是存储过程和触发器。

    触发器就是你设定好某个触发条件,一旦符合了该条件就会执行相应的操作。例如在学生表中每插入一个学生,就引发触发条件,将这个学生学号插入到学生成绩表,成绩默认为0.

    CREATE

        [DEFINER = { user | CURRENT_USER }]

    TRIGGER trigger_name

    trigger_time trigger_event

    ON tbl_name FOR EACH ROW

      [trigger_order]

    trigger_body

    存储过程更像是定义一个函数,你创建好了这个存储过程,然后调用就行。

    以上算是对数据库操作的一个简单总结,可以从更宏观的角度大体有个认识;

    2.实践上

    如果真的工作,会发现平时做的更多的时候数据操纵语言,写各种SQL,简单的,复杂的,有的SQL长达好几页长,涉及到n多的中间表之类的,当然了,你如果没有一口气写出来的勇气,可以一步一步的来写,这都不是大问题。主要是,这里面有原子操作你会经常用到:

    过滤和投影:也就是where条件选择和查找某几列的意思,这个一般数据库或者大数据引擎都做了查询下推的优化。

    连接:自然连接大家都会,但是更多经常会用到一些左/右外连接等,这个可以看看区别,其实就是以谁为基准的区别,左外连接,以左表为基准,右表没有的填null;右连接也是这个道理;

    分组聚合:分组和聚合本是分开的,但是一般分组都要做一些统计,这里很重要的点,也是面试经常会问到的,就是分组操作和条件过滤之间的先后顺序的问题。

    select a,count(a) as ac from tbl1 where a > 3 group by a having ac>4;

    文末回答

    排序:这个没说什么好说的,就是排序。

    哦对了,还有一个distinct,现实中的数据往往挺乱挺复杂,我们经常会用到distinct看看没有重复的到底有多少之类的。

    好啦,基本上我感觉上面的这些,如果你有了一个大体的认识,再去有重点的看一些例如索引,having的执行次序这些东西就差不多了~希望有所帮助~

    文末:

    我就是文末,我来回答上面的两个小问题把,回答的不对大家可以指正:

    1.如果LIKE是前缀匹配则会命中索引,否则不会命中。另外以上的查询结果为空,但是不影响说明索引的作用。

    这要从索引的实现上来讲,索引一般用的是b+树来实现,如果你前缀匹配,可以从树的顶点往下匹配,至少可以匹配几回,但是如果前缀没有,查询引擎只想对着这棵树吊死~

    2.tips:先where条件过滤,再分组,分完组统计完再通过having进行筛选

    数据分析人员需要掌握sql到什么程度? - 小贱的回答 - 知乎

    https://www.zhihu.com/question/379694223/answer/1167020779

    相关文章

      网友评论

        本文标题:数据分析一定要懂的SQL知识

        本文链接:https://www.haomeiwen.com/subject/mjtpmttx.html