SQL
也称为
结构化查询语言
什么是SQL?
结构化查询语言(通常称为 SQL)是一种用于访问和操作关系型数据库中数据的标准化、广泛使用的语言。使用SQL涉及编写和执行结构化命令,即语句,以告知数据库您需要什么信息或要更改什么。
SQL是已发布的ANSI和ISO标准,这意味着有关语言包含的内容以及其工作方式有一系列既定的规则。然而,基于SQL的数据库系统(如PostgreSQL、MySQL、SQL Server等)各有不同的功能和自己的语法特点——没有主要数据库完全符合官方书面标准。
使用SQL,您可以
- 创建和配置数据库、表和索引
- 在数据库中插入、更新和删除信息
- 从数据库中检索信息(通常称为查询)
- 设置和调整数据库权限
它是读作“S.Q.L.”还是“sequel”?
关于发音的问题意见分歧,其中一些意见非常强烈。当计算机科学家唐纳德·查默林和雷蒙德·博伊斯在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查询。