什么是 SQL?
也称为
结构化查询语言
结构化查询语言(简称 SQL)是一种标准化且广泛使用的语言,用于访问和操作关系数据库中的数据。使用 SQL 涉及编写和执行结构化命令(称为语句),这些命令会告知数据库您需要什么信息或想要更改什么。
SQL 是已发布的 ANSI 和 ISO 标准,这意味着该语言的具体内容及其工作方式都有既定的规则。然而,基于 SQL 的数据库系统(如 PostgreSQL、MySQL、SQL Server 等)各自具有略微不同的功能和自己的语法特点——没有主要的数据库完全符合官方书面标准。
使用 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 的行。
上面的示例查询是一个非常简单的查询;更高级的查询可以包含连接、聚合、CTE 和其他用于提取和组织数据的工具。
Metabase 中的 SQL
在 Metabase 中提问时,您无需编写 SQL(查询构建器就是为此目的而设),但如果您更喜欢 SQL 查询,可以使用原生查询编辑器,它还具有以下功能:
如果您选择使用查询构建器在 Metabase 中提问,您始终可以查看支持您问题的底层 SQL,或将其转换为原生 SQL 查询。