SQL manipula un conjunto de datos. El lenguaje esta compuesto por varias palabras clave. Se permite expresiones aritméticas y procedimentales. Nosotros trataremos estos temas en este capítulo; en los sucesivos capítulos incluiremos detalles de los tipos de datos, funciones, y operadores.
SQL92 define Palabras Clave para el lenguaje que tienen un significado especifico. Algunas palabras están reservadas, lo cual indica que su aparición esta restringida sólo en ciertos contextos. Otras Palabras clave no están restringidas, , lo cual indica que en ciertos contextos tienen un significado especifico pero no es obligatorio.
Postgres implementa un subconjunto extendido de los lenguajes SQL92 y SQL3 lenguajes.Algunos elementos del lenguaje no están tan restringidos en esta implementación como en el lenguajes estándar, en parte debido a las características extendidas de Postgres.
Información sobre las palabras clave de SQL92 y SQL3 son derivadas de Date and Darwen, 1997.
SQL92 y SQL3 tienen Palabras clave reservadas las cuales no están permitidas ni como identificador ni para cualquier uso distinto de señales fundamentales en declaraciones SQL . Postgres tiene palabras clave adicionales con las mismas restricciones. En particular, estas palabras clave no están permitidas para nombre de tablas o campos, aunque en algunos casos están permitidas para ser etiquetas de columna (pe. en la cláusula AS).
![]() | Cualquier cadena puede ser especificada como un identificador si va entre doble comillas ("como esa"). Se debe tener cuidado desde tanto un identificador será sensible a las mayúsculas / minúsculas y contendrá espacios en blanco u otro caracteres especiales. |
Las siguientes palabras reservadas de Postgres no son palabras reservadas de SQL92 ni de SQL3 Estas están permitidas para ser etiquetas de columna, pero no identificadores:
ABORT ANALYZE
BINARY
CLUSTER CONSTRAINT COPY
DO
EXPLAIN EXTEND
LISTEN LOAD LOCK
MOVE
NEW NONE NOTIFY
RESET
SETOF SHOW
UNLISTEN UNTIL
VACUUM VERBOSE
|
Las siguientes palabras reservadas de Postgres son también palabras reservadas de SQL92 o SQL3 y está permitido que estén presente como etiqueta de columna pero no como identificador:
CASE COALESCE CROSS CURRENT CURRENT_USER
DEC DECIMAL
ELSE END
FALSE FOREIGN
GLOBAL GROUP
LOCAL
NULLIF NUMERIC
ORDER
POSITION PRECISION
SESSION_USER
TABLE THEN TRANSACTION TRUE
USER
WHEN
|
ADD ALL ALTER AND ANY AS ASC
BEGIN BETWEEN BOTH BY
CASCADE CAST CHAR CHARACTER CHECK CLOSE
COLLATE COLUMN COMMIT CONSTRAINT CREATE
CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP
CURSOR
DECLARE DEFAULT DELETE DESC DISTINCT DROP
EXECUTE EXISTS EXTRACT
FETCH FLOAT FOR FROM FULL
GRANT
HAVING
IN INNER INSERT INTERVAL INTO IS
JOIN
LEADING LEFT LIKE LOCAL
NAMES NATIONAL NATURAL NCHAR NO NOT NULL
ON OR OUTER
PARTIAL PRIMARY PRIVILEGES PROCEDURE PUBLIC
REFERENCES REVOKE RIGHT ROLLBACK
SELECT SET SUBSTRING
TO TRAILING TRIM
UNION UNIQUE UPDATE USING
VALUES VARCHAR VARYING VIEW
WHERE WITH WORK
|
Las siguientes palabras reservadas de SQL92 no son palabras clave reservadas de Postgres pero si se usan como nombre de función se traducen siempre por la función length:
CHAR_LENGTH CHARACTER_LENGTH
|
Las siguientes palabras reservadas de SQL92 o SQL3no son palabras clave reservadas dePostgres pero si se usan como nombre de tipo se traducen siempre en un tipo alternativo/nativo:
BOOLEAN DOUBLE FLOAT INT INTEGER INTERVAL REAL SMALLINT
|
Las siguientes palabras clave reservadas tanto de SQL92 o SQL3 no son palabras clave en Postgres. Esto hace que su uso no sea valido en Postgresen el momento de la escritura (v6.5) pero serán palabras reservadas en el futuro:
![]() | Algunas de estas palabras clave representan funciones en SQL92. Estas funciones están definidas en Postgres,pero el interprete no considera los nombre como palabras clave y las permite en otros contextos. |
ALLOCATE ARE ASSERTION AT AUTHORIZATION AVG
BIT BIT_LENGTH
CASCADED CATALOG COLLATION CONNECT CONNECTION
CONTINUE CONVERT CORRESPONDING COUNT
DATE DEALLOCATE DEC DESCRIBE DESCRIPTOR
DIAGNOSTICS DISCONNECT DOMAIN
ESCAPE EXCEPT EXCEPTION EXEC EXTERNAL
FIRST FOUND
GET GO GOTO
IDENTITY INDICATOR INPUT INTERSECT
LAST LOWER
MAX MIN MODULE
OCTET_LENGTH OPEN OUTPUT OVERLAPS
PREPARE PRESERVE
ROWS
SCHEMA SECTION SESSION SIZE SOME
SQL SQLCODE SQLERROR SQLSTATE SUM SYSTEM_USER
TEMPORARY TRANSLATE TRANSLATION
UNKNOWN UPPER USAGE
VALUE
WHENEVER WRITE
|
SQL92 y SQL3 tienen Palabras clave no-reservadas which have a prescribed meaning in the language but which are also allowed as identifiers. Postgres que tienen un significado preestablecida en el lenguaje pero también se puede utilizar como identificadores. Postgres tiene palabras clave adicionales con la misma restricción de uso. En particular, estas palabras clave se pueden usar como nombre de columnas o tablas.
Las siguientes palabras clave no-reservadas de Postgres no son palabras clave no-reservadas de SQL92 ni SQL3 :
ACCESS AFTER AGGREGATE
BACKWARD BEFORE
CACHE CREATEDB CREATEUSER CYCLE
DATABASE DELIMITERS
EACH ENCODING EXCLUSIVE
FORWARD FUNCTION
HANDLER
INCREMENT INDEX INHERITS INSENSITIVE INSTEAD ISNULL
LANCOMPILER LOCATION
MAXVALUE MINVALUE MODE
NOCREATEDB NOCREATEUSER NOTHING NOTNULL
OIDS OPERATOR
PASSWORD PROCEDURAL
RECIPE RENAME RETURNS ROW RULE
SEQUENCE SERIAL SHARE START STATEMENT STDIN STDOUT
TRUSTED
VALID VERSION
|
Las siguientes palabras clave no-reservadas de Postgres son palabras clave reservadas de SQL92 o SQL3 :
ABSOLUTE ACTION
CONSTRAINTS
DAY DEFERRABLE DEFERRED
HOUR
IMMEDIATE INITIALLY INSENSITIVE ISOLATION
KEY
LANGUAGE LEVEL
MATCH MINUTE MONTH
NEXT
OF ONLY OPTION
PENDANT PRIOR PRIVILEGES
READ RELATIVE RESTRICT
SCROLL SECOND
TIME TIMESTAMP TIMEZONE_HOUR TIMEZONE_MINUTE TRIGGER
YEAR
ZONE
|
Las siguientes palabras clave no-reservadas de Postgres también son palabras clave no-reservadasde SQL92 o SQL3 :
COMMITTED SERIALIZABLE TYPE
|
Las siguientes palabras clave no-reservadas tanto de SQL92 o SQL3 no son palabras clave de ninguna clase en Postgres:
ADA
C CATALOG_NAME CHARACTER_SET_CATALOG CHARACTER_SET_NAME
CHARACTER_SET_SCHEMA CLASS_ORIGIN COBOL COLLATION_CATALOG
COLLATION_NAME COLLATION_SCHEMA COLUMN_NAME
COMMAND_FUNCTION CONDITION_NUMBER
CONNECTION_NAME CONSTRAINT_CATALOG CONSTRAINT_NAME
CONSTRAINT_SCHEMA CURSOR_NAME
DATA DATE_TIME_INTERVAL_CODE DATE_TIME_INTERVAL_PRECISION
DYNAMIC_FUNCTION
FORTRAN
LENGTH
MESSAGE_LENGTH MESSAGE_OCTET_LENGTH MORE MUMPS
NAME NULLABLE NUMBER
PAD PASCAL PLI
REPEATABLE RETURNED_LENGTH RETURNED_OCTET_LENGTH
RETURNED_SQLSTATE ROW_COUNT
SCALE SCHEMA_NAME SERVER_NAME SPACE SUBCLASS_ORIGIN
TABLE_NAME
UNCOMMITTED UNNAMED
|