SQL 里有保留字(保留)和 非保留字之分.根据标准, 保留字是那些真正的关键字;我们决不能用它们做标识符. 非保留字只是在特定的环境里有特殊的含义,而在其它环境里是 可以用做标识符的.大多数非保留字实际上都是 SQL 声明的 内建表和函数的名字.而非保留字的概念实质上只是用来表示 在某些场合里,在一个字上附加了一些预先定义的含义.
在 PostgreSQL 里,分析器的工作 有些复杂.因为存在好几种不同范畴的记号,从那些永远不可能 用做标识符的到那些和普通标识符比较起来在分析器里完全没有 任何特殊状态的.(后者通常都是 SQL 声明的函数.)即使 保留关键字在 PostgreSQL 里都没有完全保留,而是可以用做字段标签(比如, SELECT 55 AS CHECK -- 虽然 CHECK 是保留关键字.)
在 Table B-1 里用于 PostgreSQL 的字段里, 我们把那些分析器明确知道,但是可以在大多数需要 标识符的环境里用做标识符的关键字分类为 "非保留". 否则一些关键字就是非保留的,因此不能用做函数或者数据类型名字, 并且相应做了标记.(大多数这类记号代表有特殊语法的内置函数或者数据类型. 我们仍然可以使用这些函数或者类型,但是用户不能重新定义它们.) 标记为"保留"都是那些只允许出现在 "AS" 字段标签名里面的(以及可能还有很少的几个其它环境)的记号. 有些保留关键字还可以用做函数的名字;这点在表中也显示出来了.
一条通用的规则是∶如果你看到任何古怪的分析错, 说命令包含任何这里列出的关键字做标识符, 那么你可以先试试用双引号把那个标识符栝起来,看看问题是否消失.
在开始学习 Table B-1 之前我们 还要理解的一件重要的事情是∶一个关键字在 PostgreSQL 中没有保留并不意味着 与改关键字相关的特性没有实现.同样,关键字的存在并不表明某个特性 就存在.
Table B-1. SQL 关键字
关键字 PostgreSQL SQL 99 SQL 92
ABORT 非保留
ABS 非保留
ABSOLUTE 非保留 保留 保留
ACCESS 非保留
ACTION 非保留 保留 保留
ADA 非保留 非保留
ADD 非保留 保留 保留
ADMIN 保留
AFTER 非保留 保留
AGGREGATE 非保留 保留
ALIAS 保留
ALL 保留 保留 保留
ALLOCATE 保留 保留
ALTER 非保留 保留 保留
ANALYSE 保留
ANALYZE 保留
AND 保留 保留 保留
ANY 保留 保留 保留
ARE 保留 保留
ARRAY 保留
AS 保留 保留 保留
ASC 保留 保留 保留
ASENSITIVE 非保留
ASSERTION 非保留 保留 保留
ASSIGNMENT 非保留 非保留
ASYMMETRIC 非保留
AT 非保留 保留 保留
ATOMIC 非保留
AUTHORIZATION 保留(可以是函数) 保留 保留






