SQL必知必会 / 从入门到数据实战
陈旸
清华大学计算机博士
 
  • 课程目录
  • 课程介绍
  • 开篇词丨SQL可能是你掌握的最有用的技能

    SQL的实用和强大远远不止体现在IT技术领域,在产品和运营方面,SQL更是发挥了它强大的威力。

  • 01丨了解SQL:一门半衰期很长的语言

    按照功能,我们把SQL分成四个部分:DDL、DML、DCL、DQL。它们的功能都是什么呢?

  • 02丨DBMS的前世今生

    今天我们先从SQL语言中跳脱出来,来分析下常见的DBMS。

  • 03丨学会用数据库的方式思考SQL是如何执行的

    在RDBMS中,SQL的实现方式是有差别的。在Oracle和MySQL中,SQL是如何被执行的?

  • 04丨使用DDL创建数据库&数据表时需要注意什么?

    DDL是DBMS的核心组件,也是SQL的重要组成部分,使用它的时候我们应该注意什么?

  • 05丨检索数据:你还在SELECT * 么?

    SELECT可以说是SQL中最常用的语句,那么在使用它的时候,我们又该注意什么呢?

  • 06丨数据过滤:SQL数据过滤都有哪些方法?

    WHERE子句是过滤数据的重要方法,那么针对检索条件,都有哪几种方式可以进行过滤呢?

  • 07丨什么是SQL函数?为什么使用SQL函数可能会带来问题?

    函数在计算机语言的使用中贯穿始终,在SQL中我们也可以使用函数对检索出来的数据进行函数操作。

  • 08丨什么是SQL的聚集函数,如何利用它们汇总表的数据?

    上一篇文章中,我们讲到了SQL的函数,事实上,SQL还有另一种函数叫做聚集函数,它又有什么作用呢?

  • 09丨子查询:子查询的种类都有哪些,如何提高子查询的性能?

    之前讲的内容都是围绕单个表的SELECT查询展开的,实际上SQL还可以嵌套在查询中进行查询。

  • 10丨常用的SQL标准有哪些,在SQL92中是如何使用连接的?

    SQL有两个重要标准,一个是SQL92,一个是SQL99。今天我们先讲一下SQL92。

  • 11丨SQL99是如何使用连接的,与SQL92的区别是什么?

    上节课我们讲解了SQL92标准,在它之后又提出了SQL99标准。

  • 12丨视图在SQL中的作用是什么,它是怎样工作的?

    今天我们来看下如何对视图进行查询。视图,也就是我们今天要讲的虚拟表。

  • 13丨什么是存储过程,在实际项目中用得多么?

    SQL的存储过程和视图一样,都是对SQL代码进行封装,可以反复利用。

  • 14丨什么是事务处理,如何使用COMMIT和ROLLBACK进行操作?

    现实生活中,我们可能会面对交了钱却拿不到商品的烦恼,如果线下的交易也能支持事务就不会出现这种情况了。

  • 15丨初识事务隔离:隔离的级别有哪些,它们都解决了哪些异常问题?

    我们今天讲解一下4种隔离级别,以及对应的要解决的三种异常问题。

  • 16丨游标:当我们需要逐条处理数据时,该怎么做?

    游标是一种面向过程的编程方式,与面向集合的思考方式有很大区别。我们该如何理解游标呢?

  • 17丨如何使用Python操作MySQL?

    除了直接在DBMS里面对SQL进行操作以外,我们还可以通过后端语言进行同样的操作。

  • 18丨SQLAlchemy:如何使用Python ORM框架来操作MySQL?

    在mysql-connector不够用的情况下,我们可以采用ORM框架与MySQL进行交互。

  • 19丨基础篇总结:如何理解查询优化、通配符以及存储过程?

    我总结了一些基础篇的常见问题进行解答,希望能对你有所帮助。

  • 20丨当我们思考数据库调优的时候,都有哪些维度可以选择?

    我们今天从整体的角度认识一下数据库调优这件事,看看优化SQL的时候,我们都需要做哪些工作。

  • 21丨范式设计:数据表的范式有哪些,3NF指的是什么?

    范式是数据表设计的基本原则,又很容易被忽略,在开始设置数据库的时候,我们需要重视数据表的设计。

  • 22丨反范式设计:3NF有什么不足,为什么有时候需要反范式设计?

    范式本身没有优劣之分,只有适用场景不同。反范式设计与范式设计的区别又是什么呢?

  • 23丨索引的概览:用还是不用索引,这是一个问题

    我们可以简单地把优化SQL理解为优化索引,那么该如何优化索引呢?同时又要注意哪些问题呢?

  • 24丨索引的原理:我们为什么用B+树来做索引?

    今天我们来看下索引的数据结构究竟是怎样的?

  • 25丨Hash索引的底层原理是什么?

    Hash本身是一个函数,又被称为散列函数,它可以帮助我们大幅提升检索数据的效率。

  • 26丨索引的使用原则:如何通过索引让SQL查询效率最大化?

    既然我们的目标是提升SQL的查询效率,那么该如何通过索引让效率最大化呢?

  • 27丨从数据页的角度理解B+树查询

    对数据库的存储结构以及页结构的底层进行了解,可以加深我们对索引运行机制的认识。

  • 28丨从磁盘I/O的角度理解SQL查询的成本

    为了更好地理解SQL查询效率是怎么一回事,今天我们就来看看磁盘I/O是如何加载数据的。

  • 29丨为什么没有理想的索引?

    在实际工作中理想的索引往往会带来更多的资源消耗,这是为什么呢?

  • 30丨锁:悲观锁和乐观锁是什么?

    事务的隔离级别的实现都是通过锁来完成的,你可以思考下为什么我们需要给数据加锁呢?

  • 31丨为什么大部分RDBMS都会支持MVCC?

    今天我们来看下MVCC,它是采用乐观锁思想实现的一种方式。那么它到底有什么用呢?

  • 32丨查询优化器是如何工作的?

    如果我们想要知道如何获取更高的SQL查询性能,最好的方式就是理解数据库是如何进行查询优化和执行的。

  • 33丨如何使用性能分析工具定位SQL执行慢的原因?

    从哪里定位SQL查询慢的问题呢?索引设计?服务器参数配置还是需要增加缓存?

  • 34丨答疑篇:关于索引以及缓冲池的一些解惑

    今天答疑的内容主要包括了索引原则、自适应Hash、缓冲池机制和存储引擎等。

  • 35丨数据库主从同步的作用是什么,如何解决数据不一致问题?

    读写分离可以提升数据库的并发处理能力,但主从架构的作用不止于此,它还有什么作用呢?

  • 36丨数据库没有备份,没有使用Binlog的情况下,如何恢复数据?

    我们今天要讨论一个特殊的情况,也就是在没做数据库备份,没有开启使用Binlog的情况下,如何尽可能地找回数据?

  • 37丨SQL注入:你的SQL是如何被注入的?

    我们能经常看到用户信息被泄露,这种情况很大程度上和SQL注入有关,了解SQL注入的原理以及防范是非常有必要的。

  • 38丨如何在Excel中使用SQL语言?

    事实上,Excel的某些部分同样支持我们使用SQL语言,那么具体该如何操作呢?

  • 39丨WebSQL:如何在H5中存储一个本地数据库?

    WebSQL是一种操作本地数据库的网页API接口,通过它,我们就可以操作客户端的本地存储。

  • 40丨SQLite:为什么微信用SQLite存储聊天记录?

    当我们在Chrome、Safari和Firefox等浏览器客户端中使用WebSQL时,会直接操作SQLite。

  • 41丨初识Redis:Redis为什么会这么快?

    Redis属于键值(key-value)数据库,键值数据库会使用哈希表存储键值和数据。

  • 42丨如何使用Redis来实现多用户抢票问题

    今天我们来更加深入地了解一下Redis的原理,比如Redis的事务处理机制是怎样的?

  • 43丨如何使用Redis搭建玩家排行榜?

    假设一个服务器存储了10万名玩家的数据,该怎么用Redis给这个区上的玩家做个全区的排名呢?

  • 44丨DBMS篇总结和答疑:用SQLite做词云

    我总结了一些大家常见的问题,希望能对你有所帮助。

  • 45丨数据清洗:如何使用SQL对数据进行清洗?

    高质量的数据清洗,才有高质量的数据。今天我们就来看下,如何用SQL对数据进行清洗。

  • 46丨数据集成:如何对各种数据库进行集成和转换?

    数据集成是数据分析之前非常重要的工作,它将不同来源、不同规范以及不同质量的数据进行统一收集和整理。

  • 47丨如何利用SQL对零售数据进行分析?

    我们之前已经学会了如何对数据进行清洗和集成,今天我们来看下如何使用SQL分析数据。

  • 结束语 | 互联网的下半场是数据驱动的时代

    我希望这个专栏可以帮你打开数据的大门,从而通过数据发现更多的宝藏。

国庆特惠

点击底部「3人成团」「去参团」按钮加入。

你一定听说过大名鼎鼎的Oracle、MySQL、MongoDB等,这些数据库管理系统虽然各有各的特色,但都是基于一个语言标准发展起来的,那就是SQL。

作为一门数据库语言,SQL可以帮我们在日常工作中处理各种数据,比如删除某一列数据、创建一个表、合并多个表格等。

如果你是程序员、产品经理或者是运营,在工作中,你可能会经常与数据打交道,比如处理以下问题:

  • 如何又快又准确地提取数据?
  • 如何评判产品改版在A/B测试中的留存率和点击率?
  • 新活动上线后,如何分析不同时间段的点击率和转化率?

这些问题统统与数据有关,SQL语言可以轻松地帮你搞定。从这个意义上来说,没有什么比学习一门SQL语言更具性价比了,它有可能是你掌握的最有用的技能。

SQL语言的语法与英语类似,这意味着你不需要有多高深的编程知识和数学基础,同样可以掌握这门数据库语言。它可以让你的工作效率翻倍,在职场中更具竞争力。

陈旸,清华大学计算机博士,“数据分析实战45讲”作者。前IBM中国研究院工程师。IEEE & ACM Member,中国人工智能协会成员,中国计算机协会CCF大数据专委。

在这个专栏里,他将从最基础的语法开始讲起,带你一步步走进SQL的世界。SQL入门简单,也就意味着初期学习的时候,很多人会不拘小节,往往忽略了语句编写带来的性能问题。作者会从日常工作中常见的问题出发,带你编写高性能的SQL语句,最终学会在项目中使用SQL。

专栏模块

专栏分为4大模块。

1.基础篇

以NBA球队球员数据和王者荣耀数据为案例基础,全面讲解SQL语言的基础语法知识,在实际操作中加深理解。

2.进阶篇

不同的SQL语句,为什么执行的效率就是不一样?本模块从实际出发,拆解日常工作中常见的SQL性能问题,教你写出高效率的SQL语句。

3.高级篇

SQL语言是关系型数据库管理系统(RDBMS)的通用语言。在工作中,我们就是通过各种各样的DBMS处理数据的。本模块将重点介绍使用频率较高的DBMS,带你了解SQL语言的使用场景和平台。

4.实战篇

从实战角度出发,将前几个模块的内容系统整合,讲解如何用SQL完成数据分析中具体的项目,比如数据清洗、数据集成等。

限时福利