4.1. 词法结构

SQL输入由一个命令 序列组成。一个命令由一个记号 的序列构成,并由一个分号(";")终结。输入流的末端也会标志一个命令的结束。具体哪些记号是合法的与具体命令的语法有关。

一个记号可以是一个关键词 、一个标识符 、一个带引号的标识符 、一个literal (或常量)或者一个特殊字符符号。记号通常以空白(空格、制表符、新行)来分隔,但在无歧义时并不强制要求如此(唯一的例子是一个特殊字符紧挨着其他记号)。

例如,下面是一个(语法上)合法的SQL输入:

SELECT * FROM MY_TABLE;
UPDATE MY_TABLE SET A = 5;
INSERT INTO MY_TABLE VALUES (3, 'hi there');

这是一个由三个命令组成的序列,每一行一个命令(尽管这不是必须地,在同一行中可以有超过一个命令,而且命令还可以被跨行分割)。

另外,注释 也可以出现在SQL输入中。它们不是记号,它们和空白完全一样。

根据标识命令、操作符、参数的记号不同,SQL的语法不很一致。最前面的一些记号通常是命令名,因此在上面的例子中我们通常会说一个 SELECT 、一个 UPDATE 和一个 INSERT 命令。但是例如UPDATE命令总是要求一个SET记号出现在一个特定位置,而INSERT则要求一个VALUES来完成命令。每个命令的精确语法规则在第 VI 部分中介绍。