Table B-1 列出了所由在 SQL 标准和 PostgreSQL 7.3 里是关键字的记号. 你可以在 Section 1.1.1 里找到 相关的背景信息.
SQL 里有保留字(保留)和 非保留字之分.根据标准, 保留字是那些真正的关键字;我们决不能用它们做标识符. 非保留字只是在特定的环境里有特殊的含义,而在其它环境里是 可以用做标识符的.大多数非保留字实际上都是 SQL 声明的 内建表和函数的名字.而非保留字的概念实质上只是用来表示 在某些场合里,在一个字上附加了一些预先定义的含义.
在 PostgreSQL 里,分析器的工作 有些复杂.因为存在好几种不同范畴的记号,从那些永远不可能 用做标识符的到那些和普通标识符比较起来在分析器里完全没有 任何特殊状态的.(后者通常都是 SQL 声明的函数.)即使 保留关键字在 PostgreSQL 里都没有完全保留,而是可以用做字段标签(比如, SELECT 55 AS CHECK -- 虽然 CHECK 是保留关键字.)
在 Table B-1 里用于 PostgreSQL 的字段里, 我们把那些分析器明确知道,但是可以在大多数需要 标识符的环境里用做标识符的关键字分类为 "非保留". 否则一些关键字就是非保留的,因此不能用做函数或者数据类型名字, 并且相应做了标记.(大多数这类记号代表有特殊语法的内置函数或者数据类型. 我们仍然可以使用这些函数或者类型,但是用户不能重新定义它们.) 标记为"保留"都是那些只允许出现在 "AS" 字段标签名里面的(以及可能还有很少的几个其它环境)的记号. 有些保留关键字还可以用做函数的名字;这点在表中也显示出来了.
一条通用的规则是∶如果你看到任何古怪的分析错, 说命令包含任何这里列出的关键字做标识符, 那么你可以先试试用双引号把那个标识符栝起来,看看问题是否消失.
在开始学习 Table B-1 之前我们 还要理解的一件重要的事情是∶一个关键字在 PostgreSQL 中没有保留并不意味着 与改关键字相关的特性没有实现.同样,关键字的存在并不表明某个特性 就存在.
Table B-1. SQL 关键字
关键字PostgreSQLSQL 99SQL 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保留(可以是函数)保留保留
AVG 非保留保留
BACKWARD非保留
BEFORE非保留保留
BEGIN非保留保留保留
BETWEEN保留(可以是函数)非保留保留
BIGINT非保留(不能是函数或类型)
BINARY保留(可以是函数)保留
BIT非保留(不能是函数或者类型)保留保留
BITVAR 非保留
BIT_LENGTH 非保留保留
BLOB 保留
BOOLEAN非保留(不能是函数或者类型)保留
BOTH保留保留保留
BREADTH 保留
BY非保留保留保留
C 非保留非保留
CACHE非保留
CALL 保留
CALLED非保留非保留
CARDINALITY 非保留
CASCADE非保留保留保留
CASCADED 保留保留
CASE保留保留保留
CAST保留保留保留
CATALOG 保留保留
CATALOG_NAME 非保留非保留
CHAIN非保留非保留
CHAR非保留(不能是函数或类型)保留保留
CHARACTER非保留(不能是函数或类型)保留保留
CHARACTERISTICS非保留
CHARACTER_LENGTH 非保留保留
CHARACTER_SET_CATALOG 非保留非保留
CHARACTER_SET_NAME 非保留非保留
CHARACTER_SET_SCHEMA 非保留非保留
CHAR_LENGTH 非保留保留
CHECK保留保留保留
CHECKED 非保留
CHECKPOINT非保留
CLASS非保留保留
CLASS_ORIGIN 非保留非保留
CLOB 保留
CLOSE非保留保留保留
CLUSTER非保留
COALESCE非保留(不能是函数或者类型)非保留保留
COBOL 非保留非保留
COLLATE保留保留保留
COLLATION 保留保留
COLLATION_CATALOG 非保留非保留
COLLATION_NAME 非保留非保留
COLLATION_SCHEMA 非保留非保留
COLUMN保留保留保留
COLUMN_NAME 非保留非保留
COMMAND_FUNCTION 非保留非保留
COMMAND_FUNCTION_CODE 非保留
COMMENT非保留
COMMIT非保留保留保留
COMMITTED非保留非保留非保留
COMPLETION 保留
CONDITION_NUMBER 非保留非保留
CONNECT 保留保留
CONNECTION 保留保留
CONNECTION_NAME 非保留非保留
CONSTRAINT保留保留保留
CONSTRAINTS非保留保留保留
CONSTRAINT_CATALOG 非保留非保留
CONSTRAINT_NAME 非保留非保留
CONSTRAINT_SCHEMA 非保留非保留
CONSTRUCTOR 保留
CONTAINS 非保留
CONTINUE 保留保留
CONVERSION非保留
CONVERT 非保留保留
COPY非保留
CORRESPONDING 保留保留
COUNT 非保留保留
CREATE保留保留保留
CREATEDB非保留
CREATEUSER非保留
CROSS保留(可以是函数)保留保留
CUBE 保留
CURRENT 保留保留
CURRENT_DATE保留保留保留
CURRENT_PATH 保留
CURRENT_ROLE 保留
CURRENT_TIME保留保留保留
CURRENT_TIMESTAMP保留保留保留
CURRENT_USER保留保留保留
CURSOR非保留保留保留
CURSOR_NAME 非保留非保留
CYCLE非保留保留
DATA 保留非保留
DATABASE非保留
DATE 保留保留
DATETIME_INTERVAL_CODE 非保留非保留
DATETIME_INTERVAL_PRECISION 非保留非保留
DAY非保留保留保留
DEALLOCATE非保留保留保留
DEC非保留(不能是函数或者类型)保留保留
DECIMAL非保留(不能是函数或者类型)保留保留
DECLARE非保留保留保留
DEFAULT保留保留保留
DEFERRABLE保留保留保留
DEFERRED非保留保留保留
DEFINED 非保留
DEFINER非保留非保留
DELETE非保留保留保留
DELIMITER非保留
DELIMITERS非保留
DEPTH 保留
DEREF 保留
DESC保留保留保留
DESCRIBE 保留保留
DESCRIPTOR 保留保留
DESTROY 保留
DESTRUCTOR 保留
DETERMINISTIC 保留
DIAGNOSTICS 保留保留
DICTIONARY 保留
DISCONNECT 保留保留
DISPATCH 非保留
DISTINCT保留保留保留
DO保留
DOMAIN非保留保留保留
DOUBLE非保留保留保留
DROP非保留保留保留
DYNAMIC 保留
DYNAMIC_FUNCTION 非保留非保留
DYNAMIC_FUNCTION_CODE 非保留
EACH非保留保留
ELSE保留保留保留
ENCODING非保留
ENCRYPTED非保留
END保留保留保留
END-EXEC 保留保留
EQUALS 保留
ESCAPE非保留保留保留
EVERY 保留
EXCEPT保留保留保留
EXCEPTION 保留保留
EXCLUSIVE非保留
EXEC 保留保留
EXECUTE非保留保留保留
EXISTING 非保留
EXISTS非保留(不能是函数或类型)非保留保留
EXPLAIN非保留
EXTERNAL非保留保留保留
EXTRACT非保留(不能是函数或类型)非保留保留
FALSE保留保留保留
FETCH非保留保留保留
FINAL 非保留
FIRST 保留保留
FLOAT非保留(不能是函数或类型)保留保留
FOR保留保留保留
FORCE非保留
FOREIGN保留保留保留
FORTRAN 非保留非保留
FORWARD非保留
FOUND 保留保留
FREE 保留
FREEZE非保留(可以是函数)
FROM保留保留保留
FULL保留(可以是函数)保留保留
FUNCTION非保留保留
G 非保留
GENERAL 保留
GENERATED 非保留
GET非保留保留保留
GLOBAL非保留保留保留
GO 保留保留
GOTO 保留保留
GRANT保留保留保留
GRANTED 非保留
GROUP保留保留保留
GROUPING 保留
HANDLER非保留
HAVING保留保留保留
HIERARCHY 非保留
HOLD 非保留
HOST 保留
HOUR非保留保留保留
IDENTITY 保留保留
IGNORE 保留
ILIKE保留(可以是函数)
IMMEDIATE非保留保留保留
IMMUTABLE非保留
IMPLEMENTATION 非保留
IMPLICIT非保留
IN保留(可以是函数)保留保留
INCREMENT非保留
INDEX非保留
INDICATOR 保留保留
INFIX 非保留
INHERITS非保留
INITIALIZE 保留
INITIALLY保留保留保留
INNER保留(可以是函数)保留保留
INOUT非保留保留
INPUT非保留保留保留
INSENSITIVE非保留非保留保留
INSERT非保留保留保留
INSTANCE 非保留
INSTANTIABLE 非保留
INSTEAD非保留
INT非保留(不能是函数或类型)保留保留
INTEGER非保留(不能是函数或类型)保留保留
INTERSECT保留保留保留
INTERVAL非保留(不能是函数或类型)保留保留
INTO保留保留保留
INVOKER非保留非保留
IS保留(可以是函数)保留保留
ISNULL保留(可以是函数)
ISOLATION非保留保留保留
ITERATE 保留
JOIN保留(可以是函数)保留保留
K 非保留
KEY非保留保留保留
KEY_MEMBER 非保留
KEY_TYPE 非保留
LANCOMPILER非保留
LANGUAGE非保留保留保留
LARGE 保留
LAST 保留保留
LATERAL 保留
LEADING保留保留保留
LEFT保留(可以是函数)保留保留
LENGTH 非保留非保留
LESS 保留
LEVEL非保留保留保留
LIKE保留(可以是函数)保留保留
LIMIT保留保留
LISTEN非保留
LOAD非保留
LOCAL非保留保留保留
LOCALTIME保留保留
LOCALTIMESTAMP保留保留
LOCATION非保留
LOCATOR 保留
LOCK非保留
LOWER 非保留保留
M 非保留
MAP 保留
MATCH非保留保留保留
MAX 非保留保留
MAXVALUE非保留
MESSAGE_LENGTH 非保留非保留
MESSAGE_OCTET_LENGTH 非保留非保留
MESSAGE_TEXT 非保留非保留
METHOD 非保留
MIN 非保留保留
MINUTE非保留保留保留
MINVALUE非保留
MOD 非保留
MODE非保留
MODIFIES 保留
MODIFY 保留
MODULE 保留保留
MONTH非保留保留保留
MORE 非保留非保留
MOVE非保留
MUMPS 非保留非保留
NAME 非保留非保留
NAMES非保留保留保留
NATIONAL非保留保留保留
NATURAL保留(可以是函数)保留保留
NCHAR非保留(不能是函数或类型)保留保留
NCLOB 保留
NEW保留保留
NEXT非保留保留保留
NO非保留保留保留
NOCREATEDB非保留
NOCREATEUSER非保留
NONE非保留(不能是函数或类型)保留
NOT保留保留保留
NOTHING非保留
NOTIFY非保留
NOTNULL保留(可以是函数)
NULL保留保留保留
NULLABLE 非保留非保留
NULLIF非保留(不能是函数或类型)非保留保留
NUMBER 非保留非保留
NUMERIC非保留(不能是函数或类型)保留保留
OBJECT 保留
OCTET_LENGTH 非保留保留
OF非保留保留保留
OFF保留保留
OFFSET保留
OIDS非保留
OLD保留保留
ON保留保留保留
ONLY保留保留保留
OPEN 保留保留
OPERATION 保留
OPERATOR非保留
OPTION非保留保留保留
OPTIONS 非保留
OR保留保留保留
ORDER保留保留保留
ORDINALITY 保留
OUT非保留保留
OUTER保留(可以是函数)保留保留
OUTPUT 保留保留
OVERLAPS保留(可以是函数)非保留保留
OVERLAY非保留(不能是函数或者类型)非保留
OVERRIDING 非保留
OWNER非保留
PAD 保留保留
PARAMETER 保留
PARAMETERS 保留
PARAMETER_MODE 非保留
PARAMETER_NAME 非保留
PARAMETER_ORDINAL_POSITION 非保留
PARAMETER_SPECIFIC_CATALOG 非保留
PARAMETER_SPECIFIC_NAME 非保留
PARAMETER_SPECIFIC_SCHEMA 非保留
PARTIAL非保留保留保留
PASCAL 非保留非保留
PASSWORD非保留
PATH非保留保留
PENDANT非保留
PLACING保留
PLI 非保留非保留
POSITION非保留(不能是函数或类型)非保留保留
POSTFIX 保留
PRECISION非保留保留保留
PREFIX 保留
PREORDER 保留
PREPARE非保留保留保留
PRESERVE 保留保留
PRIMARY保留保留保留
PRIOR非保留保留保留
PRIVILEGES非保留保留保留
PROCEDURAL非保留
PROCEDURE非保留保留保留
PUBLIC 保留保留
READ非保留保留保留
READS 保留
REAL非保留(不能是函数或类型)保留保留
RECHECK非保留
RECURSIVE 保留
REF 保留
REFERENCES保留保留保留
REFERENCING 保留
REINDEX非保留
RELATIVE非保留保留保留
RENAME非保留
REPEATABLE 非保留非保留
REPLACE非保留
RESET非保留
RESTRICT非保留保留保留
RESULT 保留
RETURN 保留
RETURNED_LENGTH 非保留非保留
RETURNED_OCTET_LENGTH 非保留非保留
RETURNED_SQLSTATE 非保留非保留
RETURNS非保留保留
REVOKE非保留保留保留
RIGHT保留(可以是函数)保留保留
ROLE 保留
ROLLBACK非保留保留保留
ROLLUP 保留
ROUTINE 保留
ROUTINE_CATALOG 非保留
ROUTINE_NAME 非保留
ROUTINE_SCHEMA 非保留
ROW非保留(不能是函数或类型)保留
ROWS 保留保留
ROW_COUNT 非保留非保留
RULE非保留
SAVEPOINT 保留
SCALE 非保留非保留
SCHEMA非保留保留保留
SCHEMA_NAME 非保留非保留
SCOPE 保留
SCROLL非保留保留保留
SEARCH 保留
SECOND非保留保留保留
SECTION 保留保留
SECURITY非保留非保留
SELECT保留保留保留
SELF 非保留
SENSITIVE 非保留
SEQUENCE非保留保留
SERIALIZABLE非保留非保留非保留
SERVER_NAME 非保留非保留
SESSION非保留保留保留
SESSION_USER保留保留保留
SET非保留保留保留
SETOF非保留(不能是函数或类型)
SETS 保留
SHARE非保留
SHOW非保留
SIMILAR保留(可以是函数)非保留
SIMPLE非保留非保留
SIZE 保留保留
SMALLINT非保留(不能是函数或者类型)保留保留
SOME保留保留保留
SOURCE 非保留
SPACE 保留保留
SPECIFIC 保留
SPECIFICTYPE 保留
SPECIFIC_NAME 非保留
SQL 保留保留
SQLCODE 保留
SQLERROR 保留
SQLEXCEPTION 保留
SQLSTATE 保留保留
SQLWARNING 保留
STABLE非保留
START非保留保留
STATE 保留
STATEMENT非保留保留
STATIC 保留
STATISTICS非保留
STDIN非保留
STDOUT非保留
STORAGE非保留
STRICT非保留
STRUCTURE 保留
STYLE 非保留
SUBCLASS_ORIGIN 非保留非保留
SUBLIST 非保留
SUBSTRING非保留(不能是函数或类型)非保留保留
SUM 非保留保留
SYMMETRIC 非保留
SYSID非保留
SYSTEM 非保留
SYSTEM_USER 保留保留
TABLE保留保留保留
TABLE_NAME 非保留非保留
TEMP非保留
TEMPLATE非保留
TEMPORARY非保留保留保留
TERMINATE 保留
THAN 保留
THEN保留保留保留
TIME非保留(不能是函数或类型)保留保留
TIMESTAMP非保留(不能是函数或类型)保留保留
TIMEZONE_HOUR 保留保留
TIMEZONE_MINUTE 保留保留
TO保留保留保留
TOAST非保留
TRAILING保留保留保留
TRANSACTION非保留保留保留
TRANSACTIONS_COMMITTED 非保留
TRANSACTIONS_ROLLED_BACK 非保留
TRANSACTION_ACTIVE 非保留
TRANSFORM 非保留
TRANSFORMS 非保留
TRANSLATE 非保留保留
TRANSLATION 保留保留
TREAT非保留(不能是函数或者类型)保留
TRIGGER非保留保留
TRIGGER_CATALOG 非保留
TRIGGER_NAME 非保留
TRIGGER_SCHEMA 非保留
TRIM非保留(不能是函数或类型)非保留保留
TRUE保留保留保留
TRUNCATE非保留
TRUSTED非保留
TYPE非保留非保留非保留
UNCOMMITTED 非保留非保留
UNDER 保留
UNENCRYPTED非保留
UNION保留保留保留
UNIQUE保留保留保留
UNKNOWN非保留保留保留
UNLISTEN非保留
UNNAMED 非保留非保留
UNNEST 保留
UNTIL非保留
UPDATE非保留保留保留
UPPER 非保留保留
USAGE非保留保留保留
USER保留保留保留
USER_DEFINED_TYPE_CATALOG 非保留
USER_DEFINED_TYPE_NAME 非保留
USER_DEFINED_TYPE_SCHEMA 非保留
USING保留保留保留
VACUUM非保留
VALID非保留
VALIDATOR非保留
VALUE 保留保留
VALUES非保留保留保留
VARCHAR非保留(不能是函数或类型)保留保留
VARIABLE 保留
VARYING非保留保留保留
VERBOSE保留(可以是函数)
VERSION非保留
VIEW非保留保留保留
VOLATILE非保留
WHEN保留保留保留
WHENEVER 保留保留
WHERE保留保留保留
WITH非保留保留保留
WITHOUT非保留保留
WORK非保留保留保留
WRITE非保留保留保留
YEAR非保留保留保留
ZONE非保留保留保留