Apêndice C. Palavras chave do SQL

A Tabela C-1 lista todos os termos (tokens) que são palavras chave no padrão SQL e no PostgreSQL 7.4.1. Podem ser obtidas informações suplementares na Seção 4.1.1 .

O padrão SQL faz distinção entre palavras chave reservadas e não reservadas. De acordo com o padrão, as palavras chave reservadas são as únicas palavras chave reais; nunca são permitidas como identificadores. As palavras chave não reservadas somente possuem significado especial em determinados contextos; podem ser utilizadas como identificador em outros contextos. Em sua maior parte, as palavras chave não reservadas são, na verdade, nomes de tabelas e funções nativas especificadas pelo padrão SQL. Essencialmente, o conceito de palavra chave não reservada existe apenas para declarar a associação desta palavra com um significado predefinido em alguns contextos.

No analisador do PostgreSQL a vida é um pouco mais complicada. Existem várias classes diferentes de termos, indo desde aquelas que nunca podem ser utilizadas como identificador, até aquelas que não possuem nenhum status especial no analisador se comparado com um identificador comum (Geralmente, esta última é o caso das funções especificadas pelo padrão SQL). Mesmo as palavras chave reservadas não são totalmente reservadas no PostgreSQL, sendo possível utilizá-las como títulos de colunas (por exemplo, SELECT 55 AS CHECK, embora CHECK seja uma palavra chave reservada).

Na coluna PostgreSQL da Tabela C-1 , são classificadas como "não reservadas" as palavras chave explicitamente reconhecidas pelo analisador, mas permitidas na maioria ou em todos os contextos onde um identificador é esperado. Existem algumas palavras chave não reservadas que não podem ser utilizadas como nome de função ou de tipo de dado, estando devidamente indicado (Em sua maioria, estas palavras representam funções nativas ou tipos de dado com sintaxe especial. A função ou o tipo ainda está disponível, mas não pode ser redefinido pelo usuário). Na coluna "reservadas" estão os termos permitidos apenas como títulos de coluna utilizando "AS" (e, talvez, em muito poucos outros contextos). Algumas palavras chave reservadas são permitidas como nome de função; isto também está indicado na tabela.

Como regra geral, se acontecerem erros indevidos do analisador em comandos contendo como identificador qualquer uma das palavras chave listadas, deve-se tentar colocar o identificador entre aspas para ver se o problema desaparece.

Antes de estudar a Tabela C-1 , é importante compreender o fato de uma palavra chave não ser reservada no PostgreSQL não significa que a funcionalidade associada a esta palavra chave não está implementada. Inversamente, a presença de uma palavra chave não indica a existência da funcionalidade.

Tabela C-1. Palavras chave do SQL

Palavra chave PostgreSQL SQL 99 SQL 92
ABORT não-reservada    
ABS   não-reservada  
ABSOLUTE não-reservada reservada reservada
ACCESS não-reservada    
ACTION não-reservada reservada reservada
ADA   não-reservada não-reservada
ADD não-reservada reservada reservada
ADMIN   reservada  
AFTER não-reservada reservada  
AGGREGATE não-reservada reservada  
ALIAS   reservada  
ALL reservada reservada reservada
ALLOCATE   reservada reservada
ALTER não-reservada reservada reservada
ANALYSE reservada    
ANALYZE reservada    
AND reservada reservada reservada
ANY reservada reservada reservada
ARE   reservada reservada
ARRAY reservada reservada  
AS reservada reservada reservada
ASC reservada reservada reservada
ASENSITIVE   não-reservada  
ASSERTION não-reservada reservada reservada
ASSIGNMENT não-reservada não-reservada  
ASYMMETRIC   não-reservada  
AT não-reservada reservada reservada
ATOMIC   não-reservada  
AUTHORIZATION reservada (pode ser função) reservada reservada
AVG   não-reservada reservada
BACKWARD não-reservada    
BEFORE não-reservada reservada  
BEGIN não-reservada reservada reservada
BETWEEN reservada (pode ser função) não-reservada reservada
BIGINT não-reservada (não pode ser função ou tipo)    
BINARY reservada (pode ser função) reservada  
BIT não-reservada (não pode ser função ou tipo) reservada reservada
BITVAR   não-reservada  
BIT_LENGTH   não-reservada reservada
BLOB   reservada  
BOOLEAN não-reservada (não pode ser função ou tipo) reservada  
BOTH reservada reservada reservada
BREADTH   reservada  
BY não-reservada reservada reservada
C   não-reservada não-reservada
CACHE não-reservada    
CALL   reservada  
CALLED não-reservada não-reservada  
CARDINALITY   não-reservada  
CASCADE não-reservada reservada reservada
CASCADED   reservada reservada
CASE reservada reservada reservada
CAST reservada reservada reservada
CATALOG   reservada reservada
CATALOG_NAME   não-reservada não-reservada
CHAIN não-reservada não-reservada  
CHAR não-reservada (não pode ser função ou tipo) reservada reservada
CHARACTER não-reservada (não pode ser função ou tipo) reservada reservada
CHARACTERISTICS não-reservada    
CHARACTER_LENGTH   não-reservada reservada
CHARACTER_SET_CATALOG   não-reservada não-reservada
CHARACTER_SET_NAME   não-reservada não-reservada
CHARACTER_SET_SCHEMA   não-reservada não-reservada
CHAR_LENGTH   não-reservada reservada
CHECK reservada reservada reservada
CHECKED   não-reservada  
CHECKPOINT não-reservada    
CLASS não-reservada reservada  
CLASS_ORIGIN   não-reservada não-reservada
CLOB   reservada  
CLOSE não-reservada reservada reservada
CLUSTER não-reservada    
COALESCE não-reservada (não pode ser função ou tipo) não-reservada reservada
COBOL   não-reservada não-reservada
COLLATE reservada reservada reservada
COLLATION   reservada reservada
COLLATION_CATALOG   não-reservada não-reservada
COLLATION_NAME   não-reservada não-reservada
COLLATION_SCHEMA   não-reservada não-reservada
COLUMN reservada reservada reservada
COLUMN_NAME   não-reservada não-reservada
COMMAND_FUNCTION   não-reservada não-reservada
COMMAND_FUNCTION_CODE   não-reservada  
COMMENT não-reservada    
COMMIT não-reservada reservada reservada
COMMITTED não-reservada não-reservada não-reservada
COMPLETION   reservada  
CONDITION_NUMBER   não-reservada não-reservada
CONNECT   reservada reservada
CONNECTION   reservada reservada
CONNECTION_NAME   não-reservada não-reservada
CONSTRAINT reservada reservada reservada
CONSTRAINTS não-reservada reservada reservada
CONSTRAINT_CATALOG   não-reservada não-reservada
CONSTRAINT_NAME   não-reservada não-reservada
CONSTRAINT_SCHEMA   não-reservada não-reservada
CONSTRUCTOR   reservada  
CONTAINS   não-reservada  
CONTINUE   reservada reservada
CONVERSION não-reservada    
CONVERT não-reservada (não pode ser função ou tipo) não-reservada reservada
COPY não-reservada    
CORRESPONDING   reservada reservada
COUNT   não-reservada reservada
CREATE reservada reservada reservada
CREATEDB não-reservada    
CREATEUSER não-reservada    
CROSS reservada (pode ser função) reservada reservada
CUBE   reservada  
CURRENT   reservada reservada
CURRENT_DATE reservada reservada reservada
CURRENT_PATH   reservada  
CURRENT_ROLE   reservada  
CURRENT_TIME reservada reservada reservada
CURRENT_TIMESTAMP reservada reservada reservada
CURRENT_USER reservada reservada reservada
CURSOR não-reservada reservada reservada
CURSOR_NAME   não-reservada não-reservada
CYCLE não-reservada reservada  
DATA   reservada não-reservada
DATABASE não-reservada    
DATE   reservada reservada
DATETIME_INTERVAL_CODE   não-reservada não-reservada
DATETIME_INTERVAL_PRECISION   não-reservada não-reservada
DAY não-reservada reservada reservada
DEALLOCATE não-reservada reservada reservada
DEC não-reservada (não pode ser função ou tipo) reservada reservada
DECIMAL não-reservada (não pode ser função ou tipo) reservada reservada
DECLARE não-reservada reservada reservada
DEFAULT reservada reservada reservada
DEFAULTS não-reservada    
DEFERRABLE reservada reservada reservada
DEFERRED não-reservada reservada reservada
DEFINED   não-reservada  
DEFINER não-reservada não-reservada  
DELETE não-reservada reservada reservada
DELIMITER não-reservada    
DELIMITERS não-reservada    
DEPTH   reservada  
DEREF   reservada  
DESC reservada reservada reservada
DESCRIBE   reservada reservada
DESCRIPTOR   reservada reservada
DESTROY   reservada  
DESTRUCTOR   reservada  
DETERMINISTIC   reservada  
DIAGNOSTICS   reservada reservada
DICTIONARY   reservada  
DISCONNECT   reservada reservada
DISPATCH   não-reservada  
DISTINCT reservada reservada reservada
DO reservada    
DOMAIN não-reservada reservada reservada
DOUBLE não-reservada reservada reservada
DROP não-reservada reservada reservada
DYNAMIC   reservada  
DYNAMIC_FUNCTION   não-reservada não-reservada
DYNAMIC_FUNCTION_CODE   não-reservada  
EACH não-reservada reservada  
ELSE reservada reservada reservada
ENCODING não-reservada    
ENCRYPTED não-reservada    
END reservada reservada reservada
END-EXEC   reservada reservada
EQUALS   reservada  
ESCAPE não-reservada reservada reservada
EVERY   reservada  
EXCEPT reservada reservada reservada
EXCEPTION   reservada reservada
EXCLUDING não-reservada    
EXCLUSIVE não-reservada    
EXEC   reservada reservada
EXECUTE não-reservada reservada reservada
EXISTING   não-reservada  
EXISTS não-reservada (não pode ser função ou tipo) não-reservada reservada
EXPLAIN não-reservada    
EXTERNAL não-reservada reservada reservada
EXTRACT não-reservada (não pode ser função ou tipo) não-reservada reservada
FALSE reservada reservada reservada
FETCH não-reservada reservada reservada
FINAL   não-reservada  
FIRST não-reservada reservada reservada
FLOAT não-reservada (não pode ser função ou tipo) reservada reservada
FOR reservada reservada reservada
FORCE não-reservada    
FOREIGN reservada reservada reservada
FORTRAN   não-reservada não-reservada
FORWARD não-reservada    
FOUND   reservada reservada
FREE   reservada  
FREEZE reservada (pode ser função)    
FROM reservada reservada reservada
FULL reservada (pode ser função) reservada reservada
FUNCTION não-reservada reservada  
G   não-reservada  
GENERAL   reservada  
GENERATED   não-reservada  
GET   reservada reservada
GLOBAL não-reservada reservada reservada
GO   reservada reservada
GOTO   reservada reservada
GRANT reservada reservada reservada
GRANTED   não-reservada  
GROUP reservada reservada reservada
GROUPING   reservada  
HANDLER não-reservada    
HAVING reservada reservada reservada
HIERARCHY   não-reservada  
HOLD não-reservada não-reservada  
HOST   reservada  
HOUR não-reservada reservada reservada
IDENTITY   reservada reservada
IGNORE   reservada  
ILIKE reservada (pode ser função)    
IMMEDIATE não-reservada reservada reservada
IMMUTABLE não-reservada    
IMPLEMENTATION   não-reservada  
IMPLICIT não-reservada    
IN reservada (pode ser função) reservada reservada
INCLUDING não-reservada    
INCREMENT não-reservada    
INDEX não-reservada    
INDICATOR   reservada reservada
INFIX   não-reservada  
INHERITS não-reservada    
INITIALIZE   reservada  
INITIALLY reservada reservada reservada
INNER reservada (pode ser função) reservada reservada
INOUT não-reservada reservada  
INPUT não-reservada reservada reservada
INSENSITIVE não-reservada não-reservada reservada
INSERT não-reservada reservada reservada
INSTANCE   não-reservada  
INSTANTIABLE   não-reservada  
INSTEAD não-reservada    
INT não-reservada (não pode ser função ou tipo) reservada reservada
INTEGER não-reservada (não pode ser função ou tipo) reservada reservada
INTERSECT reservada reservada reservada
INTERVAL não-reservada (não pode ser função ou tipo) reservada reservada
INTO reservada reservada reservada
INVOKER não-reservada não-reservada  
IS reservada (pode ser função) reservada reservada
ISNULL reservada (pode ser função)    
ISOLATION não-reservada reservada reservada
ITERATE   reservada  
JOIN reservada (pode ser função) reservada reservada
K   não-reservada  
KEY não-reservada reservada reservada
KEY_MEMBER   não-reservada  
KEY_TYPE   não-reservada  
LANCOMPILER não-reservada    
LANGUAGE não-reservada reservada reservada
LARGE   reservada  
LAST não-reservada reservada reservada
LATERAL   reservada  
LEADING reservada reservada reservada
LEFT reservada (pode ser função) reservada reservada
LENGTH   não-reservada não-reservada
LESS   reservada  
LEVEL não-reservada reservada reservada
LIKE reservada (pode ser função) reservada reservada
LIMIT reservada reservada  
LISTEN não-reservada    
LOAD não-reservada    
LOCAL não-reservada reservada reservada
LOCALTIME reservada reservada  
LOCALTIMESTAMP reservada reservada  
LOCATION não-reservada    
LOCATOR   reservada  
LOCK não-reservada    
LOWER   não-reservada reservada
M   não-reservada  
MAP   reservada  
MATCH não-reservada reservada reservada
MAX   não-reservada reservada
MAXVALUE não-reservada    
MESSAGE_LENGTH   não-reservada não-reservada
MESSAGE_OCTET_LENGTH   não-reservada não-reservada
MESSAGE_TEXT   não-reservada não-reservada
METHOD   não-reservada  
MIN   não-reservada reservada
MINUTE não-reservada reservada reservada
MINVALUE não-reservada    
MOD   não-reservada  
MODE não-reservada    
MODIFIES   reservada  
MODIFY   reservada  
MODULE   reservada reservada
MONTH não-reservada reservada reservada
MORE   não-reservada não-reservada
MOVE não-reservada    
MUMPS   não-reservada não-reservada
NAME   não-reservada não-reservada
NAMES não-reservada reservada reservada
NATIONAL não-reservada reservada reservada
NATURAL reservada (pode ser função) reservada reservada
NCHAR não-reservada (não pode ser função ou tipo) reservada reservada
NCLOB   reservada  
NEW reservada reservada  
NEXT não-reservada reservada reservada
NO não-reservada reservada reservada
NOCREATEDB não-reservada    
NOCREATEUSER não-reservada    
NONE não-reservada (não pode ser função ou tipo) reservada  
NOT reservada reservada reservada
NOTHING não-reservada    
NOTIFY não-reservada    
NOTNULL reservada (pode ser função)    
NULL reservada reservada reservada
NULLABLE   não-reservada não-reservada
NULLIF não-reservada (não pode ser função ou tipo) não-reservada reservada
NUMBER   não-reservada não-reservada
NUMERIC não-reservada (não pode ser função ou tipo) reservada reservada
OBJECT   reservada  
OCTET_LENGTH   não-reservada reservada
OF não-reservada reservada reservada
OFF reservada reservada  
OFFSET reservada    
OIDS não-reservada    
OLD reservada reservada  
ON reservada reservada reservada
ONLY reservada reservada reservada
OPEN   reservada reservada
OPERATION   reservada  
OPERATOR não-reservada    
OPTION não-reservada reservada reservada
OPTIONS   não-reservada  
OR reservada reservada reservada
ORDER reservada reservada reservada
ORDINALITY   reservada  
OUT não-reservada reservada  
OUTER reservada (pode ser função) reservada reservada
OUTPUT   reservada reservada
OVERLAPS reservada (pode ser função) não-reservada reservada
OVERLAY não-reservada (não pode ser função ou tipo) não-reservada  
OVERRIDING   não-reservada  
OWNER não-reservada    
PAD   reservada reservada
PARAMETER   reservada  
PARAMETERS   reservada  
PARAMETER_MODE   não-reservada  
PARAMETER_NAME   não-reservada  
PARAMETER_ORDINAL_POSITION   não-reservada  
PARAMETER_SPECIFIC_CATALOG   não-reservada  
PARAMETER_SPECIFIC_NAME   não-reservada  
PARAMETER_SPECIFIC_SCHEMA   não-reservada  
PARTIAL não-reservada reservada reservada
PASCAL   não-reservada não-reservada
PASSWORD não-reservada    
PATH não-reservada reservada  
PENDANT não-reservada    
PLACING reservada    
PLI   não-reservada não-reservada
POSITION não-reservada (não pode ser função ou tipo) não-reservada reservada
POSTFIX   reservada  
PRECISION não-reservada reservada reservada
PREFIX   reservada  
PREORDER   reservada  
PREPARE não-reservada reservada reservada
PRESERVE não-reservada reservada reservada
PRIMARY reservada reservada reservada
PRIOR não-reservada reservada reservada
PRIVILEGES não-reservada reservada reservada
PROCEDURAL não-reservada    
PROCEDURE não-reservada reservada reservada
PUBLIC   reservada reservada
READ não-reservada reservada reservada
READS   reservada  
REAL não-reservada (não pode ser função ou tipo) reservada reservada
RECHECK não-reservada    
RECURSIVE   reservada  
REF   reservada  
REFERENCES reservada reservada reservada
REFERENCING   reservada  
REINDEX não-reservada    
RELATIVE não-reservada reservada reservada
RENAME não-reservada    
REPEATABLE   não-reservada não-reservada
REPLACE não-reservada    
RESET não-reservada    
RESTART não-reservada    
RESTRICT não-reservada reservada reservada
RESULT   reservada  
RETURN   reservada  
RETURNED_LENGTH   não-reservada não-reservada
RETURNED_OCTET_LENGTH   não-reservada não-reservada
RETURNED_SQLSTATE   não-reservada não-reservada
RETURNS não-reservada reservada  
REVOKE não-reservada reservada reservada
RIGHT reservada (pode ser função) reservada reservada
ROLE   reservada  
ROLLBACK não-reservada reservada reservada
ROLLUP   reservada  
ROUTINE   reservada  
ROUTINE_CATALOG   não-reservada  
ROUTINE_NAME   não-reservada  
ROUTINE_SCHEMA   não-reservada  
ROW não-reservada (não pode ser função ou tipo) reservada  
ROWS não-reservada reservada reservada
ROW_COUNT   não-reservada não-reservada
RULE não-reservada    
SAVEPOINT   reservada  
SCALE   não-reservada não-reservada
SCHEMA não-reservada reservada reservada
SCHEMA_NAME   não-reservada não-reservada
SCOPE   reservada  
SCROLL não-reservada reservada reservada
SEARCH   reservada  
SECOND não-reservada reservada reservada
SECTION   reservada reservada
SECURITY não-reservada não-reservada  
SELECT reservada reservada reservada
SELF   não-reservada  
SENSITIVE   não-reservada  
SEQUENCE não-reservada reservada  
SERIALIZABLE não-reservada não-reservada não-reservada
SERVER_NAME   não-reservada não-reservada
SESSION não-reservada reservada reservada
SESSION_USER reservada reservada reservada
SET não-reservada reservada reservada
SETOF não-reservada (não pode ser função ou tipo)    
SETS   reservada  
SHARE não-reservada    
SHOW não-reservada    
SIMILAR reservada (pode ser função) não-reservada  
SIMPLE não-reservada não-reservada  
SIZE   reservada reservada
SMALLINT não-reservada (não pode ser função ou tipo) reservada reservada
SOME reservada reservada reservada
SOURCE   não-reservada  
SPACE   reservada reservada
SPECIFIC   reservada  
SPECIFICTYPE   reservada  
SPECIFIC_NAME   não-reservada  
SQL   reservada reservada
SQLCODE     reservada
SQLERROR     reservada
SQLEXCEPTION   reservada  
SQLSTATE   reservada reservada
SQLWARNING   reservada  
STABLE não-reservada    
START não-reservada reservada  
STATE   reservada  
STATEMENT não-reservada reservada  
STATIC   reservada  
STATISTICS não-reservada    
STDIN não-reservada    
STDOUT não-reservada    
STORAGE não-reservada    
STRICT não-reservada    
STRUCTURE   reservada  
STYLE   não-reservada  
SUBCLASS_ORIGIN   não-reservada não-reservada
SUBLIST   não-reservada  
SUBSTRING não-reservada (não pode ser função ou tipo) não-reservada reservada
SUM   não-reservada reservada
SYMMETRIC   não-reservada  
SYSID não-reservada    
SYSTEM   não-reservada  
SYSTEM_USER   reservada reservada
TABLE reservada reservada reservada
TABLE_NAME   não-reservada não-reservada
TEMP não-reservada    
TEMPLATE não-reservada    
TEMPORARY não-reservada reservada reservada
TERMINATE   reservada  
THAN   reservada  
THEN reservada reservada reservada
TIME não-reservada (não pode ser função ou tipo) reservada reservada
TIMESTAMP não-reservada (não pode ser função ou tipo) reservada reservada
TIMEZONE_HOUR   reservada reservada
TIMEZONE_MINUTE   reservada reservada
TO reservada reservada reservada
TOAST não-reservada    
TRAILING reservada reservada reservada
TRANSACTION não-reservada reservada reservada
TRANSACTIONS_COMMITTED   não-reservada  
TRANSACTIONS_ROLLED_BACK   não-reservada  
TRANSACTION_ACTIVE   não-reservada  
TRANSFORM   não-reservada  
TRANSFORMS   não-reservada  
TRANSLATE   não-reservada reservada
TRANSLATION   reservada reservada
TREAT não-reservada (não pode ser função ou tipo) reservada  
TRIGGER não-reservada reservada  
TRIGGER_CATALOG   não-reservada  
TRIGGER_NAME   não-reservada  
TRIGGER_SCHEMA   não-reservada  
TRIM não-reservada (não pode ser função ou tipo) não-reservada reservada
TRUE reservada reservada reservada
TRUNCATE não-reservada    
TRUSTED não-reservada    
TYPE não-reservada não-reservada não-reservada
UNCOMMITTED   não-reservada não-reservada
UNDER   reservada  
UNENCRYPTED não-reservada    
UNION reservada reservada reservada
UNIQUE reservada reservada reservada
UNKNOWN não-reservada reservada reservada
UNLISTEN não-reservada    
UNNAMED   não-reservada não-reservada
UNNEST   reservada  
UNTIL não-reservada    
UPDATE não-reservada reservada reservada
UPPER   não-reservada reservada
USAGE não-reservada reservada reservada
USER reservada reservada reservada
USER_DEFINED_TYPE_CATALOG   não-reservada  
USER_DEFINED_TYPE_NAME   não-reservada  
USER_DEFINED_TYPE_SCHEMA   não-reservada  
USING reservada reservada reservada
VACUUM não-reservada    
VALID não-reservada    
VALIDATOR não-reservada    
VALUE   reservada reservada
VALUES não-reservada reservada reservada
VARCHAR não-reservada (não pode ser função ou tipo) reservada reservada
VARIABLE   reservada  
VARYING não-reservada reservada reservada
VERBOSE reservada (pode ser função)    
VERSION não-reservada    
VIEW não-reservada reservada reservada
VOLATILE não-reservada    
WHEN reservada reservada reservada
WHENEVER   reservada reservada
WHERE reservada reservada reservada
WITH não-reservada reservada reservada
WITHOUT não-reservada reservada  
WORK não-reservada reservada reservada
WRITE não-reservada reservada reservada
YEAR não-reservada reservada reservada
ZONE não-reservada reservada reservada

Exemplo C-1. Uso de palavra chave reservada como nome de função

Neste exemplo é utilizada a palavra chave reservada BETWEEN como nome de uma função. [1]

=> CREATE OR REPLACE FUNCTION between(int, int, int) RETURNS boolean AS '
'>    SELECT $1 BETWEEN $2 AND $3;
'> ' LANGUAGE SQL STRICT;

=> SELECT between(5,4,6);

 between
---------
 t
(1 linha)

=> SELECT between(6,2,4);

 between
---------
 f
(1 linha)

=> SELECT 5 BETWEEN 5 AND 6 AS between;

 between
---------
 t
(1 linha)

Notas

[1]

Exemplo escrito pelo tradutor, não fazendo parte do manual original.

SourceForge.net Logo