什么是 SQL?
又称
结构化查询语言
结构化查询语言(简称 SQL)是一种标准化且广泛使用的语言,用于访问和操作关系数据库中的数据。使用 SQL 涉及编写和执行结构化命令(称为语句),这些命令会告知数据库您需要什么信息或想要更改什么。
SQL 是一个已发布的 ANSI 和 ISO 标准,这意味着对于该语言包含什么以及它如何工作都有既定的规则。然而,基于 SQL 的数据库系统(如 PostgreSQL、MySQL、SQL Server 等)各自具有略微不同的功能和语法怪癖——没有哪个主要数据库能够 100% 符合官方书面标准。
使用 SQL,您可以
- 创建和配置数据库、表和索引
- 在数据库中插入、更新和删除信息
- 从数据库中检索信息(通常称为查询)
- 设置和调整数据库权限
是发音为“S.Q.L.”还是“sequel”?
关于发音的问题,众说纷纭,其中一些观点*非常*强烈。当计算机科学家 Donald Chamberlin 和 Raymond Boyce 在 20 世纪 70 年代初首次开发该语言规范时,他们将其命名为“SEQUEL”(发音为“sequel”),但由于商标纠纷而将语言名称改为 SQL。ANSI 和 ISO 标准规定官方发音是首字母缩写(“S.Q.L.”),但现在两种发音都很常见。
所以选择您觉得最好的发音——只是当有人不同意您的看法时,不要感到惊讶。
使用 SQL 查询数据库
无论多么高级或复杂,所有 SQL 查询都涉及告诉数据库从一个表(或多个表)中返回特定列,然后可选地指定关于哪些行应包含在这些结果中以及它们应如何呈现的条件。
SQL 不区分大小写,但您会经常看到人们将保留字(例如函数和子句,如 SELECT
、WHERE
、HAVING
或 ORDER BY
)大写。如果您喜欢,可以将 SQL 语句格式化为单行,但为了可读性,人们通常会将其查询分解为单独的行。
SQL 查询示例
这是一个 SQL 查询,它要求 Metabase 的示例数据库返回一个订单表,其中订单小计大于 100 美元
SELECT
*
FROM
orders
WHERE
subtotal > 100
我们可以将此查询分解为三个语句
SELECT *
告诉数据库返回表中的所有列。FROM orders
告诉数据库是哪个表。WHERE subtotal > 100
告诉数据库筛选结果,只返回Subtotal
字段值大于 100 的行。
上面的查询示例是一个相当简单的查询;更高级的查询可以包括联接(joins)、聚合(aggregations)、CTE(通用表表达式)以及其他用于提取和组织数据的工具。
Metabase 中的 SQL
在 Metabase 中提出问题时,您不必编写 SQL(因为有查询构建器),但如果您偏好 SQL 查询,本机查询编辑器会为您提供帮助,以及以下功能:
如果您选择使用查询构建器在 Metabase 中提出问题,您始终可以查看支持您问题的底层 SQL,或将其转换为原生 SQL 查询。