SQL 多年来如何演进
SQL 的有趣之处在于,尽管它已存在近 50 年,其基本原理仍保持不变。诸如 SELECT、UPDATE、INSERT、DELETE 等命令基本没有变化。
但这并不意味着没有变化。为更便捷地使用这些基础命令而出现了新特性,使 SQL 更加强大且易用。此外,随着新的 RBDMS(包括专有系统,如 Microsoft 的产品,以及开源系统,即任何人都可使用)不断出现,SQL 的不同“方言”也随之涌现。
SQL 演进时间线
以下时间线展示了多年来 SQL 的关键发展:
| 年份 | 发展 | 说明 |
|---|---|---|
| 1970 | 关系模型概念提出 | Edgar F. Codd 发表《A Relational Model of Data for Large Shared Data Banks》,为 SQL 奠定基础。 |
| 1973 | SQL 开发启动 | IBM 研究人员 Donald D. Chamberlin 和 Raymond F. Boyce 开始研发 SQL。 |
| 1978 | System/38 发布 | IBM 发布 System/38,配备采用 SQL 的创新型关系数据库系统。 |
| 1986 | ANSI SQL 标准化 | SQL 被美国国家标准协会(ANSI)标准化。 |
| 1987 | ISO SQL 标准化 | SQL 获得国际标准化组织(ISO)的国际标准称号。 |
| 1992 | SQL-92 发布 | 对 SQL 标准的重大修订,引入了新特性与改进。 |
| 1999 | SQL:1999(SQL3) | 增加对对象-关系数据库、触发器和过程式语言扩展的支持。 |
| 2003 | SQL:2003 | 引入与 XML 相关的特性、窗口函数以及 MERGE 语句。 |
| 2006 | SQL:2006 | 增加对 SQL/XML 的支持,增强与 XML 数据的集成。 |
| 2008 | SQL:2008 | 引入新数据类型、附加函数,并改进现有特性。 |
| 2011 | SQL:2011 | 新增时间数据支持,用于管理历史数据。 |
| 2016 | SQL:2016 | 引入行模式识别并增强对 JSON 的支持。 |
| 2019 | SQL:2019 | 进一步增强对 JSON 和其他现代数据类型的支持。 |
| 2022 | SQL 持续更新 | SQL 随主要 RDBMS 厂商的更新不断演进,融入新特性与优化。 |
SQL 方言与语法差异
所有 SQL 语言都与标准 SQL 共享相同的基本结构,关键命令大体相似。然而,不同方言之间存在语法差异。这可类比自然语言,标准英语之外还并存着美式、英式、澳大利亚英语等方言。
PostgreSQL、MySQL、SQLite、SQL Server 等 SQL 方言各自拥有与其对应 RDBMS 兼容的独特语法元素。学习像 PostgreSQL 这样的方言(其语法与标准 SQL 最为接近)是学习 SQL的良好起点,有助于您更轻松地适应其他方言和数据库系统。
数据科学的崛起
数据科学的核心作用之一是发现并预测趋势,因此已成为当今数据驱动世界的基石。2012 年,哈佛商业评论称数据科学为“21 世纪最性感的工作”。快进到 2021 年,福布斯报道称数据科学领域到 2026 年将增长约 28%。
随着数据科学领域愈发重要,数据科学家最常用的编程语言(包括 SQL)也随之水涨船高。
数据与 SQL 如影随形。凡是想要访问、检查、处理或以其他方式从结构化数据(存储在关系型数据库中的数据)中获得洞察的人,都需要掌握 SQL。
数据如今是全球最有价值的商品,而数据科学正在提升其价值。因此,SQL 这门一直以来都很受欢迎的语言,近年来变得更加重要。
谁在使用 SQL?
很多人会经常使用 SQL,从以数据为职业的人,到只是想更好地管理小型数据库或获取洞察的人都有。毕竟,当 SQL 和 SQL 数据库提供更优雅的数据分析方式时,为什么还要转向 Excel 呢?
各种规模与类型的企业也在使用 SQL。依靠 SQL 管理数据库的公司包括 Microsoft、Dell 和 Google。并不仅限于科技公司。凡是使用关系型数据库的企业都会用到 SQL。无论是 Nike、Spotify 这样的知名品牌,还是小型零售商,亦是如此。
凡是需要创建、修改或与关系型数据库通信的人都需要 SQL。由于技术的重要性与普及,RDBMS 和 SQL 几乎存在于所有行业与领域。
与 SQL 相关的职业
由于其数据排序与分析能力,SQL 是许多专业人士的必备技能,包括但不限于:
-
数据库管理员
-
数据分析师
-
数据科学家
-
网页设计师
-
服务器管理专家
-
主机技术人员
-
商业智能专家
-
软件工程师
-
开发人员
-
金融分析师
-
研究人员
-
等等…
即便只具备基础 SQL 的工作知识,也对无数其他行业和职业大有裨益。鉴于当今数据的重要性,越来越多的雇主在简历筛选中寻找具备数据库技能的候选人也就不足为奇了。
有时,这些雇主来自出人意料的行业,例如新闻业。当记者面对巴拿马文件这样海量而复杂的文件与文档需要解读与分析时,他们求助于数据库系统。
同样,市场人员、广告从业者和数字营销专家经常使用关系型数据库来解读跳出率、滚动深度、点击率等信息。对于这些在许多方面代表营销未来的职业来说,掌握 SQL 尤其有帮助。
用 SQL 提升技能
无论您身处何种企业或行业,SQL 技能都能让您更胜一筹。通过学习 SQL 提升技能,是推进当前职业、为您的技术工具箱再添一技的绝佳方式。
即便只学习基础 SQL 来查询数据库并查找信息,也能让您成为更有价值的员工,或帮助您获得一份新工作。
SQL 实战:代码示例
以下代码示例展示了 SQL 的强大与功能。这些示例使用一个假想的患者数据库来演示常见的 SQL 查询。
1. 查看表中的所有记录
查看 patients 表的内容:
SELECT * FROM patients;
输出:
| patient_id | first_name | last_name | gender | birth_date |
|------------|------------|-----------|--------|------------|
| 1 | John | Doe | M | 1980-01-01 |
| 2 | Jane | Smith | F | 1985-05-23 |
| 3 | Bob | Brown | M | 1975-09-12 |
| 4 | Alice | Johnson | F | 1990-03-17 |
| 5 | Charlie | Davis | M | 1992-07-04 |
2. 按性别筛选记录
查找所有男性患者的名和姓:
SELECT first_name, last_name, gender
FROM patients
WHERE gender = 'M';
输出:
| first_name | last_name |
|------------|-----------|
| John | Doe |
| Bob | Brown |
| Charlie | Davis |
3. 对结果排序
获取按姓氏排序的所有患者列表:
SELECT first_name, last_name, gender
FROM patients
ORDER BY last_name;
输出:
| first_name | last_name |
|------------|-----------|
| Bob | Brown |
| Charlie | Davis |
| John | Doe |
| Alice | Johnson |
| Jane | Smith |
4. 聚合数据
按性别统计患者人数:
SELECT gender, COUNT(*) as count
FROM patients
GROUP BY gender;
输出:
| gender | count |
|--------|-------|
| M | 3 |
| F | 2 |
5. 使用连接
假设我们还有另一张用于跟踪患者预约的表 appointments:
CREATE TABLE appointments (
appointment_id INT,
patient_id INT,
appointment_date DATE,
doctor_name VARCHAR(50)
);
查询所有预约及其对应的患者姓名:
SELECT p.first_name, p.last_name, a.appointment_date, a.doctor_name
FROM patients p
JOIN appointments a ON p.patient_id = a.patient_id;
输出:
| first_name | last_name | appointment_date | doctor_name |
|------------|-----------|------------------|-------------|
| John | Doe | 2024-01-15 | Dr. Smith |
| Jane | Smith | 2024-02-20 | Dr. Adams |
| Bob | Brown | 2024-03-10 | Dr. Lee |
6. 更新记录
更新某位患者的信息,例如将 patient_id 为 1 的患者姓氏改为 “Doe-Smith”:
UPDATE patients
SET last_name = 'Doe-Smith'
WHERE patient_id = 1;
7. 删除记录
删除 patient_id 为 5 的患者记录:
DELETE FROM patients
WHERE patient_id = 5;
SQL 基础与高级 SQL
与任何技能一样,SQL 初学者与经验丰富、学识渊博的 SQL 专家在这门领域专用语言上的能力存在巨大差异。
例如,假设您报名参加了 DataCamp 的SQL 入门课程。在这门课程中,您将学习 SQL 语法基础,以及在关系型数据库中进行查询与聚合的基本知识——足以让您立刻开始与数据库打交道。
在关系数据库的另一个端点,是那些花费多年时间使用这门语言的 SQL 专家(其中一些是 DataCamp 的讲师)。
借助高级 SQL 技能,人们能够快速而准确地处理数据、创建数据库,并在无需频繁检查代码是否正确的情况下执行复杂查询。这包括创建实体关系图(ERD)、优化查询索引以及执行层级查询。
不过,SQL 也是一项终身受用的技能。一旦掌握基础,继续提升、不断积累 SQL 知识、学习更高级或更复杂的技巧就变得轻而易举。即便您已能熟练使用 SQL,DataCamp 也能通过中高级 SQL 课程带您更进一步。
总结
正如您所见,SQL 是一门重要的编程语言。没有它,我们无法与关系型数据库沟通,也无法获取那些能为企业和组织带来竞争优势的洞察。
SQL 是任何人都值得掌握的利器;而对于与数据打交道的人(如数据分析师与数据科学家、市场人员、金融从业者等)而言,更是绝对必备。
如果您准备开始学习 SQL,不妨看看 DataCamp 提供的丰富个人课程与职业学习路径。
常见问题
SQL 是一门编程语言吗?
从最严格的定义来看,SQL 确实是一种编程语言。但它并非像 Python 或 Java 那样的通用编程语言,您不能用 SQL 来构建应用。相反,SQL 只有一个特定用途:与关系型数据库通信并处理其中的数据。
由于其应用场景特定,SQL 是一种领域专用编程语言。它以灵活而强大的方式从数据中获取信息,因此非常适合数据科学及相关领域。
学习 SQL 容易吗?
是的,SQL 是最容易学习的计算机语言之一。它的语法基于英文且简单明了,这意味着即便没有任何编程语言经验,很多人也能在数周内掌握这门语言。
DataCamp 的免费课程“SQL 入门”是在线自学 SQL、按您自己的节奏学习的绝佳起点。
我可以自学 SQL 吗?
可以,但如果您自学 SQL,所需时间很可能会比跟随 DataCamp 等权威培训机构提供的结构化课程要长得多。
SQL 是最容易学习的编程语言之一,但这并不意味着它很简单。其使用与应用仍然包含大量复杂性。理解 SQL 的最佳方式是通过系统化的培训。
用通俗的话讲,SQL 是什么?
SQL 是为了让人们能够与关系型数据库沟通而发明的计算机语言。关系型数据库为人们提供一种方式来研究不同数据类型之间的关系,例如,人的身高与体重、或销售量与地区之间的关系。
为了从数据库中获取此类信息并生成报告,我们可以使用 SQL。
SQL 真的比 Excel 更好吗?
是的,相比 Excel,SQL 是查看、管理和分析数据的更佳方式。与 Excel 不同,SQL 数据库可以包含数百万个字段,而且使用 SQL 查询对数据能做的事情,远远超过 Excel 公式。
电子表格很有用,且在许多行业中被广泛使用,但它们既不具备 SQL 数据库系统相同的分析功能,也无法提供同等水平的数据完整性。
为什么 SQL 直到今天仍如此流行?
因为 SQL 无处不在。这门编程语言几乎与关系型数据库划上等号,而关系型数据库是查看、管理和处理数据的最佳方式之一。
凡是有数据的地方,很大概率就存放在关系型数据库中,而我们需要 SQL 来与这些数据库沟通。如此普及意味着 SQL 在未来许多年内仍将保持流行。
在 2022 年学习 SQL 值得吗?
如果您想从事数据科学或相关领域的职业,学习 SQL 是您能做的最好的事情之一。SQL 数据库(即关系型数据库)是企业与组织存储数据的最常见方式。
要与关系型数据库通信并释放其中数据的价值,您需要具备 SQL 技能。即便您不打算全职从事数据相关工作,掌握几条 SQL 查询也大有裨益。SQL 常被列为职位要求中的一项必备技能。
SQL 和 Python 哪个更容易学?
SQL。由于 SQL 仅针对一个特定应用(与关系型数据库通信)而设计,其语法和规则比 Python 等通用编程语言更为简单。
这并不是说学 Python 很难。事实上,它也是较易上手的编程语言之一。DataCamp 同时提供 SQL 和 Python 的入门课程。不妨都试试,看看您更倾向于哪条路径。
我应该学 MySQL 还是 SQL?
从标准 SQL 或与标准最接近的 PostgreSQL 学起。
使用任何关系型数据库管理系统(即 RDBMS)都需要掌握标准 SQL;当您在系统间切换(例如从 PostgreSQL 转到 MySQL)时,只需学习各系统之间在语法上的少量差异。
SQL 开发者的平均薪资是多少?
根据 Indeed 的调研,使用 SQL 的开发者平均年薪为 88,125 美元。这些开发者与 SQL 数据库打交道,并创建与这些数据库交互的应用。
其他以 SQL 为主要技能的岗位包括数据库管理员、数据分析师和数据科学家。DataCamp 提供多种基于 SQL 的课程和职业学习路径,助您在新职业道路上抢占先机。
学会 SQL 能找到工作吗?
SQL 能帮助您找到工作。它是最受欢迎的技术技能之一,并被列为众多职位的必备要求。
无论您当前的岗位或行业如何,学习 SQL 都能在多个方面助您提升。掌握 SQL 意味着您能够与关系型数据库沟通——而这正是大多数行业中的企业经常使用的工具。

作者
Summer Worsley
SQL 是一种功能强大的编程语言,在当今世界发挥着重要作用。它让我们能够与关系型数据库进行沟通并获取信息。凡有数据之处,您都会看到 SQL 的身影。这包括政府、公共机构,以及从航运到鞋类零售等各行各业、各种规模的企业。此外,SQL 也是数据岗位最紧缺的技术技能之一。
您也许听说过,数据如今被称为世界上最有价值的商品,价值甚至超过石油等化石燃料。那么,我们如何利用这种“商品”的力量来获取洞察并做出明智决策呢?
这正是像 SQL 这样的语言大显身手的地方。本文将深入介绍 SQL,包括它是什么、能做什么、谁在用,以及这门领域专用语言的历史。
什么是 SQL?
SQL 是 Structured Query Language(结构化查询语言)的缩写,顾名思义,您可以使用这门编程语言向数据库提出问题(查询)。SQL 的读法既可以念作“sequel”,也可以按字母发音为“ess-que-el”。
这门编程语言主要用于与关系型数据库进行通信。在 SQL 的帮助下,我们可以访问、检索、排序和更新信息。它与众所周知的关系型数据库管理系统(RDBMS)一起使用,包括:
SQL 于 1986 年被美国国家标准协会(ANSI)标准化。它还获得了国际标准化组织(ISO)的国际标准称号,并被全球众多政府和组织机构采纳为标准。
SQL 与关系型数据库
数据库以数字化形式存储信息,确保数据易于访问。关系型数据库基于表格,使我们能够管理和分析不同数据类型之间的关系。
我们既可以在单个数据库的多张表中完成这一点,也可以跨多个关系型数据库研究数据之间的关系。
关系模型的主要优点之一是可以将表进行连接,从而理解数据类型之间的关系。
假设您拥有一家电商鞋店。如果您想了解顾客所在地与销售量之间的关系,您可以使用 SQL 查询客户表并生成报告。
或者,假设您有一家实体鞋店,想知道团队中谁卖的鞋最多。只要数据库中设置了合适的字段,您也可以通过 SQL 找到这些信息。
关系型数据库类似于您可能在 Excel 中创建的带有列和行的简单表格。不过,关系型数据库包含多张表,而且与 Excel 中的表不同,大型关系型数据库可以包含数百万个字段。
数据库中的数据点会根据业务或数据需求而有所不同。售鞋商也许需要顾客所在地或员工销售数据,而其他企业或组织可能需要不同的数据点。
SQL 可用于创建新数据库,并根据需要修改现有数据库的架构(结构)。
NoSQL 与 SQL
NoSQL 数据库提供了不使用关系表的其他数据存储与管理方式。它们在 2000 年代后期流行起来,因为它们提供了一种无需投入 SQL 数据库那样结构化设计精力就能容纳数据的方式。NoSQL 对开发者来说可能更易上手,查询速度也可能更快,并且方法更灵活。
在许多方面,NoSQL 挑战了传统数据库对原子性、一致性、隔离性和持久性(ACID)的追求,转而提出更开放的数据存储方式。
另一方面,SQL 数据库用于处理关系型数据,这从一开始就需要高度结构化的方法。它们提供灵活的查询方式、更小的数据存储占用、一致的数据完整性(在金融等多个行业至关重要),以及比 NoSQL 更多的保障机制。
SQL 数据库远比 NoSQL 数据库常见,但二者各有其应用场景、优点与不足。您可以在我们的完整SQL 与 NoSQL 数据库对比中了解更多。
什么是 NewSQL?
NewSQL 系统是后起之秀,有时被称为分布式关系型数据库系统,更常见的叫法是分布式 SQL。
NewSQL 系统最早出现在 2010 年代初,旨在弥合传统 RDBMS 与 NoSQL 系统之间的差距。它们通过将 NoSQL 的速度与可扩展性,与 RDBMS 提供的关系模型、事务支持和 ACID 保证结合起来实现这一点。
NewSQL 的早期厂商,如 Xeround 和 GenieDB,并未在数据库市场掀起太大波澜,或许是因为该市场当时(并且至今)仍被 Oracle、Amazon Web Services 和 Microsoft 等公司主导。
采用 NewSQL 模式的云数据库服务包括 AWS Amazon Aurora 和 Google Cloud Spanner。
为何 SQL 如此流行?
SQL 自诞生近 50 年来一直广受欢迎,原因很简单:它确实好用。关系型数据库是为满足需求而发明的,而 SQL 则是为与这些数据库沟通而发明的,因此很快就成为事实上的通用语言。
在很多方面,SQL 与关系型数据库几乎划等号,这也是为何 RDBMS 常被称为 SQL 数据库(而其他非关系型数据库被称为 NoSQL)。
试图重复发明轮子并无意义,对吧?关系型数据库与 SQL 亦然——它们之所以一直存在,是因为它们运作良好!
这两种工具协同工作,确保我们的大量技术能够可靠运行,从让企业顺畅运转的后端系统,到结构化的互联网架构等方方面面。
当然,SQL 的流行不止因为其普及性。它也非常强大,使开发者和分析师能够以复杂方式查询海量数据,解决棘手的分析问题。
根据TIOBE 指数,SQL 在 2024 年是全球第 10 大最受欢迎的编程语言。
图片来源:TIOBE 指数。
当然,技术日新月异,但 SQL 仍稳居其受青睐的位置。
SQL 是何时创建的?
SQL 的历史与关系型数据库的诞生密不可分。其历史可追溯至 20 世纪 60 年代末,当时 IBM 的数学家兼研究员 Edgar Frank Codd 提出了关系数据库模型。
这在当时是一项重大突破:该模型将信息片段(键)与各种数据类型关联起来。例如,可以将一个人的姓名与其鞋码或电话号码关联。
1970 年,Codd 发表了其开创性论文《A Relational Model of Data for Large Shared Data Banks》,为后来研究者构建 SQL 语言奠定了基础。
在 Codd 的工作之前,从数据库中检索信息是一项繁重的任务,需要深厚的计算机知识。Codd 的理念消除了对专业知识的依赖,让更多人更容易访问信息。
尽管该模型具有革命性,但也受到质疑。正如《Database Systems》作者 Jim Gray 指出,人们认为“该模型过于简单,永远无法带来良好的性能”。
凭借对优雅数学的巧妙运用,Codd 的模型一次又一次地证明了质疑者是错误的。
谁发明了 SQL?
IBM 研究人员 Donald D. Chamberlin 和 Raymond F. Boyce 在了解了 Codd 的关系模型工作后,发明了 SQL。
“Ray Boyce 和我想设计一种查询语言,它具备 Ted Codd 关系语言的表达能力,但让不精通集合论或形式逻辑的用户也能轻松理解。”——Donald Chamberlin
Chamberlin 提到,他们最初尝试的一种关系数据库语言叫做 Square。Square 基于映射概念,采用下标表示法,但存在困难。于是 1973 年,当二人转至 IBM 圣何塞研究实验室时,开始研发一种“续集”语言,并恰如其分地命名为 Sequel。
后来,Sequel 演变成了我们今天熟知的 SQL。
在对 SQL 和关系数据库系统进行测试后,IBM 开始开发使用这些新技术的产品。1978 年,搭载创新型数据库系统的中端计算机 System/38 发布。自那以后,IBM 以及 Oracle 等其他厂商持续推出支持 SQL 的产品。