SQL必知必会
陈旸
清华大学计算机博士
立即订阅
10179 人已学习
课程目录
已完结 49 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词丨SQL可能是你掌握的最有用的技能
免费
第一章:SQL语法基础篇 (19讲)
01丨了解SQL:一门半衰期很长的语言
02丨DBMS的前世今生
03丨学会用数据库的方式思考SQL是如何执行的
04丨使用DDL创建数据库&数据表时需要注意什么?
05丨检索数据:你还在SELECT * 么?
06丨数据过滤:SQL数据过滤都有哪些方法?
07丨什么是SQL函数?为什么使用SQL函数可能会带来问题?
08丨什么是SQL的聚集函数,如何利用它们汇总表的数据?
09丨子查询:子查询的种类都有哪些,如何提高子查询的性能?
10丨常用的SQL标准有哪些,在SQL92中是如何使用连接的?
11丨SQL99是如何使用连接的,与SQL92的区别是什么?
12丨视图在SQL中的作用是什么,它是怎样工作的?
13丨什么是存储过程,在实际项目中用得多么?
14丨什么是事务处理,如何使用COMMIT和ROLLBACK进行操作?
15丨初识事务隔离:隔离的级别有哪些,它们都解决了哪些异常问题?
16丨游标:当我们需要逐条处理数据时,该怎么做?
17丨如何使用Python操作MySQL?
18丨SQLAlchemy:如何使用Python ORM框架来操作MySQL?
19丨基础篇总结:如何理解查询优化、通配符以及存储过程?
第二章:SQL性能优化篇 (18讲)
20丨当我们思考数据库调优的时候,都有哪些维度可以选择?
21丨范式设计:数据表的范式有哪些,3NF指的是什么?
22丨反范式设计:3NF有什么不足,为什么有时候需要反范式设计?
23丨索引的概览:用还是不用索引,这是一个问题
24丨索引的原理:我们为什么用B+树来做索引?
25丨Hash索引的底层原理是什么?
26丨索引的使用原则:如何通过索引让SQL查询效率最大化?
27丨从数据页的角度理解B+树查询
28丨从磁盘I/O的角度理解SQL查询的成本
29丨为什么没有理想的索引?
30丨锁:悲观锁和乐观锁是什么?
31丨为什么大部分RDBMS都会支持MVCC?
32丨查询优化器是如何工作的?
33丨如何使用性能分析工具定位SQL执行慢的原因?
34丨答疑篇:关于索引以及缓冲池的一些解惑
35丨数据库主从同步的作用是什么,如何解决数据不一致问题?
36丨数据库没有备份,没有使用Binlog的情况下,如何恢复数据?
37丨SQL注入:你的SQL是如何被注入的?
第三章:认识DBMS (7讲)
38丨如何在Excel中使用SQL语言?
39丨WebSQL:如何在H5中存储一个本地数据库?
40丨SQLite:为什么微信用SQLite存储聊天记录?
41丨初识Redis:Redis为什么会这么快?
42丨如何使用Redis来实现多用户抢票问题
43丨如何使用Redis搭建玩家排行榜?
44丨DBMS篇总结和答疑:用SQLite做词云
第四章:SQL项目实战 (3讲)
45丨数据清洗:如何使用SQL对数据进行清洗?
46丨数据集成:如何对各种数据库进行集成和转换?
47丨如何利用SQL对零售数据进行分析?
结束语 (1讲)
结束语 | 互联网的下半场是数据驱动的时代
SQL必知必会
登录|注册

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

陈旸 2019-06-12
在我们的日常工作中,使用的是类似 MySQL、Oracle 这种的数据库管理系统,实际上这些数据库管理系统都遵循 SQL 语言,这就意味着,我们在使用这些数据库的时候,都是通过 SQL 语言与它们打交道。所以对于从事编程或者互联网行业的人来说,最具有中台能力的语言便是 SQL 语言。自从 SQL 加入了 TIOBE 编程语言排行榜,就一直保持在 Top 10。
SQL 语言无处不在,它对于不同职位的人来说都有价值。SQL 已经不仅仅是技术人员需要掌握的技能,产品经理、运营人员也同样需要掌握 SQL。
SQL 语言从诞生到现在,很少变化。这就意味着一旦你掌握了它,就可以一劳永逸,至少在你的职业生涯中,它都可以发挥作用。
SQL 入门并不难。

半衰期很长的 SQL

可以说在整个数字化的世界中,最重要而且最通用的元基础就是数据,而直接与数据打交道的语言就是 SQL 语言。很多人忽视了 SQL 语言的重要性,认为它不就是 SELECT 语句吗,掌握它应该是数据分析师的事。事实上在实际工作中,你不应该低估 SQL 的作用。如今互联网的很多业务处理离不开 SQL,因为它们都需要与数据打交道。
SQL 在各种技术和业务中无处不在,它的情况又是怎样的呢?45 年前,也就是 1974 年,IBM 研究员发布了一篇揭开数据库技术的论文《SEQUEL:一门结构化的英语查询语言》,直到今天这门结构化的查询语言并没有太大的变化,相比于其他语言,SQL 的半衰期可以说是非常长了。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《SQL必知必会》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(93)

  • 北京知府 置顶
    对于大小写问题,不同的数据库系统规范不一样吧?

    作者回复: 不太一样
    MySQL在Windows下都不区分大小写。
    Oracle中,SQL语句是不区分大小写,如果查询中有字符,是区分大小写的
    比如 SELECT * FROM heros WHERE name = 'guanyu'
    和 SELECT * FROM heros WHERE name = 'GUANYU'
    在Oracle中会认为是不同的查询,而在MySQL中是相同的查询
    同时,我们可以通过修改系统参数来进行配置,比如在MySQL可以通过参数lower_case_table_names来配置
    数据库和数据表的大小写敏感性

    2019-06-12
    2
    32
  • leslie 置顶
    作者的回复有误吧:MYSQL是否区分大小写是可以设置的,我前几天刚装了套-默认是区分大小写;我同事的代码就报错。5.6开始的版本基本上都是大小写敏感的,除非设置成不区分大小写。
    不同数据库的sql特性不同:各家对T-SQL的支持/保留不一样吧;sql server保留的最好-其实当时从它的名字也可以发现这点,其次是sybase,后面是mysql【注:5.5后的版本有太多oracle的东西继承了】oracle只保留了大概60-70%左右的T-SQL。
    其实mysql默认安装是区分大小写的:尤其是表名和数据库名;除非参数设置进行修改;尤其是5.6开始。各家对关键字的保留还不一样:这是数据库用多了最大的问题,总是会记岔了关键字。

    作者回复: MySQL是否区分大小写是可以通过参数设置的。
    同时MySQL在默认情况下是否区分大小写,也和操作系统有关。比如在Linux下,MySQL对表名和数据库名是区分大小写的。而在Windows下,MySQL默认情况是不区分大小写的

    2019-06-12
    4
  • Jammyzhang520
    希望在以后的文章中能够学习到sql查询性能优化方面的知识,最好是结合数据库实例,有一定数据量和优化难度的case,谢谢老师
    2019-06-12
    16
  • 一步
    老师日常 画ER图都是用什么工具啊?

    作者回复: Navicat本身也有ER图,你可以在左侧面板中选择一个数据库,然后再从上面导航条中选择“查看”=>"ER图表”就可以显示出来
    另外你也可以使用PowerDesigner来设计ER图

    2019-06-12
    1
    13
  • 木易
    一份在用的 mysql 开发规范~ 欢迎大家指出问题~
    https://zerolee1993.github.io/mysql-guide
    2019-06-15
    8
  • supermouse
    老师,请问数据库管理系统和数据库是一回事吗?如果不是的话,他们是什么关系?

    作者回复: 这个我在后面会讲到:
    数据库管理系统,DataBase Management System,简称DBMS,实际上它可以对多个数据库进行管理,所以你可以理解为DBMS = 多个数据库(DB) + 管理程序。
    数据库,DataBase。数据库是存储数据的集合,你可以把它理解为多个数据表。
    数据库系统,DataBase System。它是更大的概念,包括了数据库、数据库管理系统以及数据库管理人员DBA。

    2019-06-12
    7
  • 啦啦啦
    我是不是第一个
    2019-06-12
    7
  • 一只傻哈皮
    期待快一点更新😆
    2019-06-12
    6
  • sw _zzc
    SQL 的价值在于通用性强(市场需求普遍),半衰期长(一次学习终身受用),入门不难。通用性,个先进性有个平衡。罗胖讲到,中国的造纸术胜于埃及的,不在其先进性,而是胜在通用,易用和低成本获得。
    2019-06-14
    5
  • 杨明翰
    老师,请问学习SQL是不就是学习数据库呢?这两者是个什么关系,小白

    作者回复: SQL是结构化查询语言,是有相应标准的,就类似英语语法一样,只不过是操作数据库的语言。
    而数据库软件则是实现SQL的数据库管理系统,你可以把它理解是个软件,不同家软件的特点不同,也同时在SQL的标准上有自己独特的部分。比如MySQL有存储引擎,Oracle有共享池等。虽然不同的数据库软件有所差异,但是SQL都是他们的基本语言。

    2019-06-12
    4
  • Venn_p
    老师你好,什么时候会到实战,我等着NBA球星和英雄们
    2019-06-13
    3
  • 何学琛
    老师,课程内容是否可以扩充SQL Server数据库

    作者回复: 基于SQL这个语言,在使用的时候,不同DBMS的差异会有涉及

    2019-06-12
    3
  • niemo
    迫不及待了。能更新快点就好了
    2019-06-12
    3
  • allean
    有意思💪

    作者回复: 加油!

    2019-06-12
    3
  • Bigcat
    小白,完全没接触过,希望学完可以入门
    2019-06-24
    1
    2
  • 我知道了嗯
    弱弱的问一句😂,mysql组合索引应该按照什么顺序建立,索性的类型怎么选择
    2019-06-12
    2
  • (´×ω×`)
    大佬,这个专栏更新完,大概要多久

    作者回复: 3个月,慢慢来,我还在建王者荣耀和NBA球员数据表,有兴趣可以一起来

    2019-06-12
    2
  • 右耳朵猫咪
    请问老师有什么工具能往一个表里插入大量的数据,而不是借用程序语言比如Java?

    作者回复: ETL工具可以试试,比如Kettle,不过这个软件本身是用Java编写的

    2019-10-12
    1
  • 愿青衫不改😋
    Windows 系统本身都不区分大小写的,所以mysql也是不区分大小写的windows 系统下
    2019-07-03
    1
  • 老师,建NBA球员库的时候,是否考虑增加外号这一属性?

    作者回复: 可以有,如果有相应数据集的话,可以一起来建数据表,要不NULL字段就比较多了~

    2019-06-19
    1
收起评论
93
返回
顶部