Appendix C. SQL 關鍵字

Table C-1 列出了所由在 SQL 標準和 PostgreSQL 8.0.0 裡是關鍵字的記號。 您可以在 Section 4.1.1 裡找到相關的背景訊息。

SQL 裡有保留字(保留)非保留字之分。根據標準, 保留字是那些真正的關鍵字;我們決不能用它們做標識符。 非保留字只是在特定的環境裡有特殊的含義,而在其它環境裡是可以用做標識符的。 大多數非保留字實際上都是 SQL 聲明的內建資料表和函數的名字。 而非保留字的概念實質上只是用來資料表示在某些場合裡,在一個字上附加了一些預先定義的含義。

PostgreSQL 裡,分析器的工作有些複雜。 因為存在好幾種不同範疇的記號, 從那些永遠不可能用做標識符的到那些和普通標識符比較起來在分析器裡完全沒有任何特殊狀態的。 (後者通常都是 SQL 聲明的函數。)即使保留關鍵字在 PostgreSQL 裡都沒有完全保留,而是可以用做字串標籤(比如,SELECT 55 AS CHECK — 雖然 CHECK是保留關鍵字。)

Table C-1 裡用於 PostgreSQL 的字串裡, 我們把那些分析器明確知道,但是可以在大多數需要標識符的環境裡用做標識符的關鍵字分類為"非保留"。 否則一些關鍵字就是非保留的,因此不能用做函數或者資料類型名字, 並且相應做了標記。(大多數這類記號代資料表有特殊語法的內置函數或者資料類型。 我們仍然可以使用這些函數或者類型,但是用戶不能重新定義它們。) 標記為"保留"都是那些只允許出現在 "AS" 字串標籤名裡面的(以及可能還有很少的幾個其它環境)的記號。 有些保留關鍵字還可以用做函數的名字;這點在資料表中也顯示出來了。

一條通用的規則是:如果您看到任何古怪的分析錯, 說命令包含任何這裡列出的關鍵字做標識符, 那麼您可以先試試用雙引號把那個標識符括起來,看看問題是否消失。

在開始學習 Table C-1 之前我們還要理解的一件重要的事情是:一個關鍵字在 PostgreSQL 中沒有保留並不意味著與該關鍵字相關的特性沒有實現。 同樣,關鍵字的存在並不資料表明某個特性就存在。

Table C-1. SQL 關鍵字

關鍵字PostgreSQLSQL:2003SQL:1999SQL-92
A 非保留  
ABORT非保留   
ABS 保留非保留 
ABSOLUTE非保留非保留保留保留
ACCESS非保留   
ACTION非保留非保留保留保留
ADA 非保留非保留非保留
ADD非保留非保留保留保留
ADMIN 非保留保留 
AFTER非保留非保留保留 
AGGREGATE非保留 保留 
ALIAS  保留 
ALL保留保留保留保留
ALLOCATE 保留保留保留
ALSO非保留   
ALTER非保留保留保留保留
ALWAYS 非保留  
ANALYSE保留   
ANALYZE保留   
AND保留保留保留保留
ANY保留保留保留保留
ARE 保留保留保留
ARRAY保留保留保留 
AS保留保留保留保留
ASC保留非保留保留保留
ASENSITIVE 保留非保留 
ASSERTION非保留非保留保留保留
ASSIGNMENT非保留非保留非保留 
ASYMMETRIC 保留非保留 
AT非保留保留保留保留
ATOMIC 保留非保留 
ATTRIBUTE 非保留  
ATTRIBUTES 非保留  
AUTHORIZATION保留(可以是函數)保留保留保留
AVG 保留非保留保留
BACKWARD非保留   
BEFORE非保留非保留保留 
BEGIN非保留保留保留非保留
BERNOULLI 非保留  
BETWEEN保留(可以是函數)保留非保留保留
BIGINT非保留(不能是函數或類型)保留  
BINARY保留(可以是函數)保留保留 
BIT非保留(不能是函數或者類型) 保留保留
BITVAR  非保留 
BIT_LENGTH  非保留保留
BLOB 保留保留 
BOOLEAN非保留(不能是函數或者類型)保留保留 
BOTH保留保留保留保留
BREADTH 非保留保留 
BY非保留保留保留保留
C 非保留非保留非保留
CACHE非保留   
CALL 保留保留 
CALLED非保留保留非保留 
CARDINALITY 保留非保留 
CASCADE非保留非保留保留保留
CASCADED 保留保留保留
CASE保留保留保留保留
CAST保留保留保留保留
CATALOG 非保留保留保留
CATALOG_NAME 非保留非保留非保留
CEIL 保留  
CEILING 保留  
CHAIN非保留非保留非保留 
CHAR非保留(不能是函數或類型)保留保留保留
CHARACTER非保留(不能是函數或類型)保留保留保留
CHARACTERISTICS非保留   
CHARACTERS 非保留  
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 非保留非保留非保留
COLLECT 保留  
COLUMN保留保留保留保留
COLUMN_NAME 非保留非保留非保留
COMMAND_FUNCTION 非保留非保留非保留
COMMAND_FUNCTION_CODE 非保留非保留 
COMMENT非保留   
COMMIT非保留保留保留保留
COMMITTED非保留非保留非保留非保留
COMPLETION  保留 
CONDITION 保留  
CONDITION_NUMBER 非保留非保留非保留
CONNECT 保留保留保留
CONNECTION 非保留保留保留
CONNECTION_NAME 非保留非保留非保留
CONSTRAINT保留保留保留保留
CONSTRAINTS非保留非保留保留保留
CONSTRAINT_CATALOG 非保留非保留非保留
CONSTRAINT_NAME 非保留非保留非保留
CONSTRAINT_SCHEMA 非保留非保留非保留
CONSTRUCTOR 非保留保留 
CONTAINS 非保留非保留 
CONTINUE 非保留保留保留
CONVERSION非保留   
CONVERT非保留(不能是函數或者類型)保留非保留保留
COPY非保留   
CORR 保留  
CORRESPONDING 保留保留保留
COUNT 保留非保留保留
COVAR_POP 保留  
COVAR_SAMP 保留  
CREATE保留保留保留保留
CREATEDB非保留   
CREATEUSER非保留   
CROSS保留(可以是函數)保留保留保留
CSV非保留   
CUBE 保留保留 
CUME_DIST 保留  
CURRENT 保留保留保留
CURRENT_DATE保留保留保留保留
CURRENT_DEFAULT_TRANSFORM_GROUP 保留  
CURRENT_PATH 保留保留 
CURRENT_ROLE 保留保留 
CURRENT_TIME保留保留保留保留
CURRENT_TIMESTAMP保留保留保留保留
CURRENT_TRANSFORM_GROUP_FOR_TYPE 保留  
CURRENT_USER保留保留保留保留
CURSOR非保留保留保留保留
CURSOR_NAME 非保留非保留非保留
CYCLE非保留保留保留 
DATA 非保留保留非保留
DATABASE非保留   
DATE 保留保留保留
DATETIME_INTERVAL_CODE 非保留非保留非保留
DATETIME_INTERVAL_PRECISION 非保留非保留非保留
DAY非保留保留保留保留
DEALLOCATE非保留保留保留保留
DEC非保留(不能是函數或者類型)保留保留保留
DECIMAL非保留(不能是函數或者類型)保留保留保留
DECLARE非保留保留保留保留
DEFAULT保留保留保留保留
DEFAULTS非保留非保留  
DEFERRABLE保留非保留保留保留
DEFERRED非保留非保留保留保留
DEFINED 非保留非保留 
DEFINER非保留非保留非保留 
DEGREE 非保留  
DELETE非保留保留保留保留
DELIMITER非保留   
DELIMITERS非保留   
DENSE_RANK 保留  
DEPTH 非保留保留 
DEREF 保留保留 
DERIVED 非保留  
DESC保留非保留保留保留
DESCRIBE 保留保留保留
DESCRIPTOR 非保留保留保留
DESTROY  保留 
DESTRUCTOR  保留 
DETERMINISTIC 保留保留 
DIAGNOSTICS 非保留保留保留
DICTIONARY  保留 
DISCONNECT 保留保留保留
DISPATCH 非保留非保留 
DISTINCT保留保留保留保留
DO保留   
DOMAIN非保留非保留保留保留
DOUBLE非保留保留保留保留
DROP非保留保留保留保留
DYNAMIC 保留保留 
DYNAMIC_FUNCTION 非保留非保留非保留
DYNAMIC_FUNCTION_CODE 非保留非保留 
EACH非保留保留保留 
ELEMENT 保留  
ELSE保留保留保留保留
ENCODING非保留   
ENCRYPTED非保留   
END保留保留保留保留
END-EXEC 保留保留保留
EQUALS 非保留保留 
ESCAPE非保留保留保留保留
EVERY 保留保留 
EXCEPT保留保留保留保留
EXCEPTION 非保留保留保留
EXCLUDE 非保留  
EXCLUDING非保留非保留  
EXCLUSIVE非保留   
EXEC 保留保留保留
EXECUTE非保留保留保留保留
EXISTING  非保留 
EXISTS非保留(不能是函數或類型)保留非保留保留
EXP 保留  
EXPLAIN非保留   
EXTERNAL非保留保留保留保留
EXTRACT非保留(不能是函數或類型)保留非保留保留
FALSE保留保留保留保留
FETCH非保留保留保留保留
FILTER 保留  
FINAL 非保留非保留 
FIRST非保留非保留保留保留
FLOAT非保留(不能是函數或類型)保留保留保留
FLOOR 保留  
FOLLOWING 非保留  
FOR保留保留保留保留
FORCE非保留   
FOREIGN保留保留保留保留
FORTRAN 非保留非保留非保留
FORWARD非保留   
FOUND 非保留保留保留
FREE 保留保留 
FREEZE非保留(可以是函數)   
FROM保留保留保留保留
FULL保留(可以是函數)保留保留保留
FUNCTION非保留保留保留 
FUSION 保留  
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保留保留保留保留
INCLUDING非保留非保留  
INCREMENT非保留非保留  
INDEX非保留   
INDICATOR 保留保留保留
INFIX  非保留 
INHERITS非保留   
INITIALIZE  保留 
INITIALLY保留非保留保留保留
INNER保留(可以是函數)保留保留保留
INOUT非保留(不能是函數或者類型)保留保留 
INPUT非保留非保留保留保留
INSENSITIVE非保留保留非保留保留
INSERT非保留保留保留保留
INSTANCE 非保留非保留 
INSTANTIABLE 非保留非保留 
INSTEAD非保留   
INT非保留(不能是函數或類型)保留保留保留
INTEGER非保留(不能是函數或類型)保留保留保留
INTERSECT保留保留保留保留
INTERSECTION 保留  
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非保留   
LN 保留  
LOAD非保留   
LOCAL非保留保留保留保留
LOCALTIME保留保留保留 
LOCALTIMESTAMP保留保留保留 
LOCATION非保留   
LOCATOR 非保留保留 
LOCK非保留   
LOWER 保留非保留保留
M 非保留非保留 
MAP 非保留保留 
MATCH非保留保留保留保留
MATCHED 非保留  
MAX 保留非保留保留
MAXVALUE非保留非保留  
MEMBER 保留  
MERGE 保留  
MESSAGE_LENGTH 非保留非保留非保留
MESSAGE_OCTET_LENGTH 非保留非保留非保留
MESSAGE_TEXT 非保留非保留非保留
METHOD 保留非保留 
MIN 保留非保留保留
MINUTE非保留保留保留保留
MINVALUE非保留非保留  
MOD 保留非保留 
MODE非保留   
MODIFIES 保留保留 
MODIFY  保留 
MODULE 保留保留保留
MONTH非保留保留保留保留
MORE 非保留非保留非保留
MOVE非保留   
MULTISET 保留  
MUMPS 非保留非保留非保留
NAME 非保留非保留非保留
NAMES非保留非保留保留保留
NATIONAL非保留(不能是函數或者類型)保留保留保留
NATURAL保留(可以是函數)保留保留保留
NCHAR非保留(不能是函數或類型)保留保留保留
NCLOB 保留保留 
NESTING 非保留  
NEW保留保留保留 
NEXT非保留非保留保留保留
NO非保留保留保留保留
NOCREATEDB非保留   
NOCREATEUSER非保留   
NONE非保留(不能是函數或類型)保留保留 
NORMALIZE 保留  
NORMALIZED 非保留  
NOT保留保留保留保留
NOTHING非保留   
NOTIFY非保留   
NOTNULL保留(可以是函數)   
NOWAIT非保留   
NULL保留保留保留保留
NULLABLE 非保留非保留非保留
NULLIF非保留(不能是函數或類型)保留非保留保留
NULLS 非保留  
NUMBER 非保留非保留非保留
NUMERIC非保留(不能是函數或類型)保留保留保留
OBJECT非保留非保留保留 
OCTETS 非保留  
OCTET_LENGTH 保留非保留保留
OF非保留保留保留保留
OFF保留 保留 
OFFSET保留   
OIDS非保留   
OLD保留保留保留 
ON保留保留保留保留
ONLY保留保留保留保留
OPEN 保留保留保留
OPERATION  保留 
OPERATOR非保留   
OPTION非保留非保留保留保留
OPTIONS 非保留非保留 
OR保留保留保留保留
ORDER保留保留保留保留
ORDERING 非保留  
ORDINALITY 非保留保留 
OTHERS 非保留  
OUT非保留(不能是函數或者類型)保留保留 
OUTER保留(可以是函數)保留保留保留
OUTPUT 非保留保留保留
OVER 保留  
OVERLAPS保留(可以是函數)保留非保留保留
OVERLAY非保留(不能是函數或者類型)保留非保留 
OVERRIDING 非保留非保留 
OWNER非保留   
PAD 非保留保留保留
PARAMETER 保留保留 
PARAMETERS  保留 
PARAMETER_MODE 非保留非保留 
PARAMETER_NAME 非保留非保留 
PARAMETER_ORDINAL_POSITION 非保留非保留 
PARAMETER_SPECIFIC_CATALOG 非保留非保留 
PARAMETER_SPECIFIC_NAME 非保留非保留 
PARAMETER_SPECIFIC_SCHEMA 非保留非保留 
PARTIAL非保留非保留保留保留
PARTITION 保留  
PASCAL 非保留非保留非保留
PASSWORD非保留   
PATH 非保留保留 
PERCENTILE_CONT 保留  
PERCENTILE_DISC 保留  
PERCENT_RANK 保留  
PLACING保留非保留  
PLI 非保留非保留非保留
POSITION非保留(不能是函數或類型)保留非保留保留
POSTFIX  保留 
POWER 保留  
PRECEDING 非保留  
PRECISION非保留(不能是函數或者操作符)保留保留保留
PREFIX  保留 
PREORDER  保留 
PREPARE非保留保留保留保留
PRESERVE非保留非保留保留保留
PRIMARY保留保留保留保留
PRIOR非保留非保留保留保留
PRIVILEGES非保留非保留保留保留
PROCEDURAL非保留   
PROCEDURE非保留保留保留保留
PUBLIC 保留保留保留
QUOTE非保留   
RANGE 保留  
RANK 保留  
READ非保留非保留保留保留
READS 保留保留 
REAL非保留(不能是函數或類型)保留保留保留
RECHECK非保留   
RECURSIVE 保留保留 
REF 保留保留 
REFERENCES保留保留保留保留
REFERENCING 保留保留 
REGR_AVGX 保留  
REGR_AVGY 保留  
REGR_COUNT 保留  
REGR_INTERCEPT 保留  
REGR_R2 保留  
REGR_SLOPE 保留  
REGR_SXX 保留  
REGR_SXY 保留  
REGR_SYY 保留  
REINDEX非保留   
RELATIVE非保留非保留保留保留
RELEASE非保留保留  
RENAME非保留   
REPEATABLE非保留非保留非保留非保留
REPLACE非保留   
RESET非保留   
RESTRICT非保留非保留保留保留
RESULT 保留保留 
RETURN 保留保留 
RETURNED_CARDINALITY 非保留  
RETURNED_LENGTH 非保留非保留非保留
RETURNED_OCTET_LENGTH 非保留非保留非保留
RETURNED_SQLSTATE 非保留非保留非保留
RETURNS非保留保留保留 
REVOKE非保留保留保留保留
RIGHT保留(可以是函數)保留保留保留
ROLE 非保留保留 
ROLLBACK非保留保留保留保留
ROLLUP 保留保留 
ROUTINE 非保留保留 
ROUTINE_CATALOG 非保留非保留 
ROUTINE_NAME 非保留非保留 
ROUTINE_SCHEMA 非保留非保留 
ROW非保留(不能是函數或類型)保留保留 
ROWS 保留保留保留
ROW_COUNT 非保留非保留非保留
ROW_NUMBER 保留  
RULE非保留   
SAVEPOINT非保留保留保留 
SCALE 非保留非保留非保留
SCHEMA非保留非保留保留保留
SCHEMA_NAME 非保留非保留非保留
SCOPE 保留保留 
SCOPE_CATALOG 非保留  
SCOPE_NAME 非保留  
SCOPE_SCHEMA 非保留  
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 保留保留 
SQRT 保留  
STABLE非保留   
START非保留保留保留 
STATE 非保留保留 
STATEMENT非保留非保留保留 
STATIC 保留保留 
STATISTICS非保留   
STDDEV_POP 保留  
STDDEV_SAMP 保留  
STDIN非保留   
STDOUT非保留   
STORAGE非保留   
STRICT非保留   
STRUCTURE 非保留保留 
STYLE 非保留非保留 
SUBCLASS_ORIGIN 非保留非保留非保留
SUBLIST  非保留 
SUBMULTISET 保留  
SUBSTRING非保留(不能是函數或類型)保留非保留保留
SUM 保留非保留保留
SYMMETRIC 保留非保留 
SYSID非保留   
SYSTEM 保留非保留 
SYSTEM_USER 保留保留保留
TABLE保留保留保留保留
TABLESAMPLE 保留  
TABLESPACE非保留   
TABLE_NAME 非保留非保留非保留
TEMP非保留   
TEMPLATE非保留   
TEMPORARY非保留非保留保留保留
TERMINATE  保留 
THAN  保留 
THEN保留保留保留保留
TIES 非保留  
TIME非保留(不能是函數或類型)保留保留保留
TIMESTAMP非保留(不能是函數或類型)保留保留保留
TIMEZONE_HOUR 保留保留保留
TIMEZONE_MINUTE 保留保留保留
TO保留保留保留保留
TOAST非保留   
TOP_LEVEL_COUNT 非保留  
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非保留非保留非保留非保留
UESCAPE 保留  
UNBOUNDED 非保留  
UNCOMMITTED非保留非保留非保留非保留
UNDER 非保留保留  
UNENCRYPTED非保留   
UNION保留保留保留保留
UNIQUE保留保留保留保留
UNKNOWN非保留保留保留保留
UNLISTEN非保留   
UNNAMED 非保留非保留非保留
UNNEST 保留保留 
UNTIL非保留   
UPDATE非保留保留保留保留
UPPER 保留非保留保留
USAGE非保留非保留保留保留
USER保留保留保留保留
USER_DEFINED_TYPE_CATALOG 非保留非保留 
USER_DEFINED_TYPE_CODE 非保留  
USER_DEFINED_TYPE_NAME 非保留非保留 
USER_DEFINED_TYPE_SCHEMA 非保留非保留 
USING保留保留保留保留
VACUUM非保留   
VALID非保留   
VALIDATOR非保留   
VALUE 保留保留保留
VALUES非保留保留保留保留
VARCHAR非保留(不能是函數或類型)保留保留保留
VARIABLE  保留 
VARYING非保留保留保留保留
VAR_POP 保留  
VAR_SAMP 保留  
VERBOSE保留(可以是函數)   
VIEW非保留非保留保留保留
VOLATILE非保留   
WHEN保留保留保留保留
WHENEVER 保留保留保留
WHERE保留保留保留保留
WIDTH_BUCKET 保留  
WINDOW 保留  
WITH非保留保留保留保留
WITHIN 保留  
WITHOUT非保留保留保留 
WORK非保留非保留保留保留
WRITE非保留非保留保留保留
YEAR非保留 保留保留
ZONE非保留非保留保留保留