表C-1列出了所由在 SQL 标准和 PostgreSQL 8.2.3 里是关键字的记号。
SQL 里有保留字和非保留字之分。根据标准,保留字是那些真正的关键字;决不能用它们做标识符。非保留字只是在特定的环境里有特殊的含义,而在其它环境里是可以用做标识符的。大多数非保留字实际上都是 SQL 声明的内建表和函数的名字。而非保留字的概念实质上只是用来表示在某些场合里,在一个字上附加了一些预先定义的含义。
在 PostgreSQL 里,分析器的工作有些复杂。因为存在好几种不同范畴的记号,从那些永远不可能用做标识符的到那些和普通标识符比较起来在分析器里完全没有任何特殊状态的(后者通常都是 SQL 声明的函数)。即使保留关键字在 PostgreSQL 里都没有完全保留,而是可以用做字段标签。比如,虽然 CHECK 是保留关键字,但是 SELECT 55 AS CHECK 语句完全行得通。
在表C-1的"PostgreSQL"字段里,我们把那些分析器明确知道,但是可以在大多数需要标识符的环境里用做标识符的关键字分类为"非保留"。虽然一些关键字是非保留的,但是却不能用做函数或者数据类型名字,我们对这些关键字相应做了的标记。大多数这类记号代表有特殊语法的内置函数或者数据类型。仍然可以使用这些函数或者类型,但是用户不能重新定义它们。标记为"保留"的都是那些只允许出现在"AS"字段标签名里面(以及少数几个其它环境)的记号。有些保留关键字还可以用做函数的名字;这点在表中也显示出来了。
一条通用的规则是:如果你看到任何古怪的分析错,说命令包含任何这里列出的关键字做标识符,那么你可以先试试用双引号把那个标识符括起来,看看问题是否消失。
在开始学习表C-1之前还要理解的一件重要的事情是:一个关键字在 PostgreSQL 中没有保留并不意味着与该关键字相关的特性没有实现。同样,关键字的存在也并不表明某个特性就一定存在。
表C-1. SQL 关键字
Python学习网,大量的免费,欢迎在线学习!