Table B-1 列出了所由在 SQL 标准和 PostgreSQL 7.2 里是关键字的记号. 你可以在 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

关键字

PostgreSQL

SQL

SQL

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

保留(可以是函数)

非保留

保留

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

 

保留

保留

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

非保留

保留

保留

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

非保留

保留

保留

IMPLEMENTATION

 

非保留

 

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

非保留

 

 

PLI

 

非保留

非保留

POSITION

非保留(不能是函数或类型)

非保留

保留

POSTFIX

 

保留

 

PRECISION

非保留

保留

保留

PREFIX

 

保留

 

PREORDER

 

保留

 

PREPARE

 

保留

保留

PRESERVE

 

保留

保留

PRIMARY

保留

保留

保留

PRIOR

非保留

保留

保留

PRIVILEGES

非保留

保留

保留

PROCEDURAL

非保留

 

 

PROCEDURE

非保留

保留

保留

PUBLIC

保留(可以是函数)

保留

保留

READ

非保留

保留

保留

READS

 

保留

 

REAL

 

保留

保留

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

 

保留

 

START

非保留

保留

 

STATE

 

保留

 

STATEMENT

非保留

保留

 

STATIC

 

保留

 

STATISTICS

非保留

 

 

STDIN

非保留

 

 

STDOUT

非保留

 

 

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

非保留

 

 

VALUE

 

保留

保留

VALUES

非保留

保留

保留

VARCHAR

非保留(不能是函数或类型)

保留

保留

VARIABLE

 

保留

 

VARYING

非保留

保留

保留

VERBOSE

保留(可以是函数)

 

 

VERSION

非保留

 

 

VIEW

非保留

保留

保留

WHEN

保留

保留

保留

WHENEVER

 

保留

保留

WHERE

保留

保留

保留

WITH

非保留

保留

保留

WITHOUT

非保留

保留

 

WORK

非保留

保留

保留

WRITE

 

保留

保留

YEAR

非保留

保留

保留

ZONE

非保留

保留

保留