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 |