SQL 是用于访问和处理数据库的标准的计算机语言。
编者注:ANSI,美国国家标准化组织
SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。
不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。
注释:除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展!
一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。
下面的例子是一个名为 "Persons" 的表:
上面的表包含三条记录(每一条对应一个人)和四个列(姓、名、地址和城市)。
通过 SQL,我们可以查询某个数据库,并获得返回的一个结果集。
查询程序类似这样:
结果集类似这样:
注释:某些数据库系统要求在 SQL 命令的末端使用分号。在我们的教程中不使用分号。
SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
这些查询和更新语句都来自 SQL 的 DML 部分:
SQL 的数据定义语言部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL 中最重要的 DDL 语句:
SELECT 语句用于从表中选取数据。表格式的结构被存储在一个结果表中(称为结果集)。
注释:SQL 语句对大小写不敏感。SELECT 等效于 select。
如需获取名为 "LastName" 和 "FirstName" 的列的内容(从名为 "Persons" 的数据库表),请使用类似这样的 SELECT 语句:
如需从 "Persons" 表中获取所有的列,请使用符号 * 取代列的名称,就像这样:
由 SQL 查询程序获得的结果被存放在一个结果集中。大多数数据库软件系统都允许使用编程函数在结果集中进行导航,比如:Move-To-First-Record、Get-Record-Content、Move-To-Next-Record 等等。
分号是数据库系统中分隔每条 SQL 语句的标准方法,这个方法使得对服务器的同一个调用中的若干语句都得到执行。
某些 SQL 教程使用分号来结束每条SQL语句。这是必需的吗?如果您正在使用 Access 和 SQL Server 2000,就不必在每条语句后都放置分号,但是在某些数据库中,您就不得不这么做了。
关键词 DISTINCT 用于返回唯一不同的值。
SELECT 语句会从表的列中返回信息。但是假如我们仅仅希望获取唯一不同的元素呢?
通过 SQL,我们所要做到所有事情就是向 SELECT 语句添加 DISTINCT 关键词:
如果要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句:
请注意,在结果集中,W3School 被列出了两次。
如需从 Company" 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句: