结构化查询语言 (SQL)

典型的 DBMS 允许用户以有组织、高效的方式存储、访问和修改数据。 最初,DBMS 的用户是程序员。 访问存储的数据需要使用编程语言(COBOL)编写程序。 虽然这些程序通常是为了向非技术用户提供易于使用的界面而编写的,但访问数据本身需要知识渊博的程序员提供服务。 随意访问数据是不切实际的。

用户并不非常满意这种情况。 虽然用户可以访问数据,但通常需要说服 DBMS 程序员编写特殊软件。 例如,如果销售部门想要查看每个销售人员上个月的总销售额,并希望按照每个销售人员在公司的服务年限对这些信息进行排序,那么两种选择:要么已经存在可以这种方式访问信息的程序,要么该部门必须要求程序员编写这样的程序。 在许多情况下,这种工作投入大于产出,而且对于一次性或临时查询来说,这始终是一种昂贵的解决方案。 随着越来越多的用户想要轻松访问数据,这个问题越来越急需解决。

允许用户临时访问数据需要为其提供一种表达请求的语言。 对数据库的单个请求定义为查询;此类语言称为查询语言。 为此目的开发了许多查询语言,但其中一种广受好评:由 IBM 在 20 世纪 70 年代编写的结构化查询语言。 其常见于首字母缩略词 SQL,发音为“ess-cue-ell”和“sequel”。 SQL 于 1986 年成为 ANSI 标准,并于 1987 年成为 ISO 标准;如今,许多数据库管理系统广泛采用此语言。

尽管 SQL 解决了用户的临时需求,但计算机程序访问数据的需求并没有消失。 事实上,大多数数据库访问过去(并且现在)是程序化的,其形式包括定期报告和统计分析、数据输入程序(例如用于订单条目的程序)以及数据操作程序(例如用于核对帐户和生成工作订单的程序)。

这些程序还使用 SQL 的以下三种技术之一:

  • 嵌入式 SQL,其中 SQL 语句嵌入到主机语言(例如 C 或 COBOL)中。

  • SQL 模块,其中 SQL 语句在 DBMS 上编译并从主机语言调用。

  • 调用级别接口或 CLI,由调用的函数组成,用于将 SQL 语句传递给 DBMS 以及从 DBMS 检索结果。

注意

使用术语“调用级别接口”而不是“应用程序编程接口”(API)(同一事物的另一个术语)是历史上的偶然事件。 在数据库环境中,API 用于描述 SQL 本身:SQL 是 DBMS 的 API。

在这些选择中,嵌入式 SQL 是最常用的,尽管大多数主要 DBMS 支持专有 CLIs。

本部分包含以下主题。