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. 参考 中介绍。

4.1.1. 标识符和关键词

4.1.2. 常量

4.1.3. 操作符

4.1.4. 特殊字符

4.1.5. 注释

4.1.6. 操作符优先级