1.2 为什么要学 SQL


1.2 为什么要学 SQL

本节摘要:SQL 不是过时的技术,它是数据世界的通用语。本节从应用场景说清学 SQL 的实际价值,以及它和 NoSQL、编程语言查询库的分工。

本节目标

阅读完本节,你应当能够:

  1. 列举 SQL 的主要应用场景
  2. 说清 SQL 和 NoSQL 的分工,不是替代关系
  3. 解释为什么直接用编程语言查数据不如用 SQL
  4. 判断自己是否需要深入学 SQL

概念脉络

一、SQL 用在哪

几乎所有涉及"结构化数据"的地方都有 SQL 的身影:

  • 后端开发:业务系统存数据、读数据,离不开 SQL。即使你用 ORM,底层也是 SQL,懂 SQL 才能调优和排查。
  • 数据分析:分析师从数据库取数做报表,SQL 是基本工具。很多 BI 工具底层生成 SQL。
  • 数据工程:ETL 流程里用 SQL 做转换、清洗、聚合。
  • 运维/DBA:管数据库、查性能、调索引,全靠 SQL。
  • 测试:造数据、验数据,都要写 SQL。

图 1-2 SQL 应用领域矩阵

图 1-2 SQL 应用领域矩阵

二、SQL 和 NoSQL 的分工

NoSQL(MongoDB、Redis、Cassandra 等)兴起时有人喊"SQL 要过时了",事实证明没有。两者是分工关系:

  • 关系型 + SQL:数据结构稳定、需要复杂查询和事务、强一致——如订单、账户、报表。
  • NoSQL:数据结构灵活多变、超大规模、对一致性要求宽松——如日志、缓存、社交关系图。

很多公司是两者并用:核心交易用关系库,日志缓存用 NoSQL。学 SQL 不会因为 NoSQL 而贬值,反而是基础——理解了关系模型和 SQL,再学 NoSQL 会发现很多概念是相通的。

三、为什么不用编程语言直接查

有人想:我用 Python/Java 写循环读数据不也行?为什么要 SQL?因为:

  • SQL 一句顶几十行循环:分组聚合、多表关联,SQL 一句 GROUP BY/JOIN 搞定,编程语言要写嵌套循环和哈希表。
  • DBMS 优化:DBMS 有查询优化器,会自动选索引、改写查询,比手写循环高效。
  • 可移植:同一句 SQL 在不同 DBMS 上大致能跑,编程语言代码要重写。
# 用 Python 算每个城市的客户数(啰嗦) from collections import Counter counts = Counter() for row in customers: counts[row['city']] += 1 # SQL 一句 # SELECT City, COUNT(*) FROM Customers GROUP BY City;

💡 关键直觉:SQL 的价值在"用声明式语法表达集合操作 + DBMS 自动优化"。能用 SQL 一句搞定的,别用编程语言写几十行循环。

四、你需要学到什么程度

角色 SQL 深度
后端开发 熟练 DQL/DML/DDL,会调优
数据分析 熟练 DQL,会 JOIN/子查询/窗口函数
数据工程 精通,含性能调优
运维/DBA 精通,含管理/权限/备份
偶尔用 会基础 SELECT 即可

本教程覆盖到"熟练"这一档,进阶调优和 DBA 内容点到为止。

一节小结

  • 应用广:后端、分析、数据工程、运维、测试都用 SQL,是数据世界通用语。
  • 与 NoSQL 互补:关系型复杂查询用 SQL,灵活非结构化用 NoSQL,不替代。
  • 胜过编程语言循环:一句 SQL 顶几十行循环,且 DBMS 自动优化。
  • 按角色定深度:后端/分析要熟练,DBA 要精通,偶尔用会基础即可。
  • 本教程覆盖到"熟练"档,进阶调优点到为止。

第 1 章结束。下一章钻进关系型数据库的核心概念:关系模型、表、键。

常见疑问

Q1:现在有 ORM(如 SQLAlchemy、MyBatis),还有必要手写 SQL 吗?

非常有必要。ORM 帮你生成 SQL,但性能调优、排查慢查询、理解索引时,最终都要落到 SQL 层面。不懂 SQL 的人用 ORM,一旦出了问题只能干瞪眼。而且很多 ORM 写复杂查询反而不如 SQL 直接。SQL 是数据世界的通用语,ORM 只是它的方言翻译器。

Q2:SQL 会过时吗?NoSQL 不是更流行吗?

关系型数据库和 SQL 依然是数据存储的主流,尤其在金融、电商、ERP 这类强一致场景。NoSQL(MongoDB、Redis)解决的是另一类问题:超大规模、灵活结构、高性能缓存。两者是分工关系,不是替代关系。而且很多 NoSQL 后来也加入了类 SQL 查询能力(如 MongoDB 的聚合框架),说明 SQL 的思维深入人心。

Q3:作为数据分析师,SQL 学到什么程度够用?

至少熟练 SELECT:条件过滤、排序、分组聚合、多表 JOIN、子查询。进阶再加窗口函数(本教程第 4 章后可以继续自学)。数据分析师的日常 90% 是取数,SQL 熟练度直接决定效率。很多 BI 工具底层也是生成 SQL,懂 SQL 才能不迷信工具。

动手做一做

与其争论"SQL 有没有用",不如亲自体会一次"用 SQL 和不用 SQL 的差别"。

找一个包含几千行数据的场景,比如一张记录订单的表。如果你只想看"北京客户的订单里,金额最大的前十笔",用编程语言写循环,你需要先取出所有数据、在内存里遍历判断、排序、再截取前十行,代码几十行起步。而用 SQL,一条语句就能表达清楚:先筛出北京的客户,再按金额降序排列,最后限制返回十行。

把两者写出来对比,你会立刻明白 SQL 的价值在哪里:同样的逻辑,编程语言要描述"怎么做",SQL 只要描述"要什么"。数据量越大、过滤条件越多,这个差距越明显。

建议你找一个实际场景,把"编程语言实现"和"SQL 实现"各写一遍。不需要真的跑,只要写出来对比,就能体会 SQL 在数据处理上"少即是多"的魅力。这份体感,比任何理论说辞都更有说服力。

一句话记忆

SQL 是数据世界的通用语:后端要用,数据分析要用,数据工程要用,运维测试也要用。它和 NoSQL 是分工合作的关系,和编程语言是"各管一段"的关系——编程语言负责业务逻辑,SQL 负责数据存取。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U