Una descripción de la sintaxis general de SQL.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.
Postgres implementa un subconjunto extendido de los lenguajes SQL92 y SQL3. 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.
Consejo: Cualquier cadena puede ser especificada como un identificador si va entre doble comillas (“like this!”). 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 ni 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 VERBOSELas siguientes palabras reservadas de Postgres son también palabras reservadas de SQL92 o SQL3, y está permitido que esten 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 WHENLas siguientes palabras reservadas de Postgres también son palabras reservadas de SQL92 o SQL3:
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 WORKLas 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_LENGTHLas siguientes palabras reservadas de SQL92 o SQL3 no son palabras clave reservadas de Postgres, pero si se usan como nombre de tipo se traducen siempre en un tipo alternativo/nativo:
BOOLEAN DOUBLE FLOAT INT INTEGER INTERVAL REAL SMALLINTLas siguientes palabras clave reservadas tanto de SQL92 o SQL3 no son palabras clave en Postgres. Esto hace que su uso no sea valido en Postgres en el momento de la escritura (v6.5) pero serán palabras reservadas en el futuro:
Note: Algunas de estas palabras clave representan funciones en SQL92. Estas funciones están definidas en 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
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 VERSIONLas 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 ZONELas siguientes palabras clave no-reservadas de Postgres también son palabras clave no-reservadasde SQL92 o SQL3:
COMMITTED SERIALIZABLE TYPELas 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