Palabras claves
Son Palabras que para el lenguaje 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.
- Palabras claves Reservadas
Postgres tiene palabras clave reservadas, las cuales no están permitidas ni como identificador ni para cualquier otro uso distinto a las declaraciones SQL. 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).
- Las siguientes son palabras reservadas de Postgres. 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
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 - Las siguientes son palabras reservadas de Postgres.
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
- Palabras No Reservadas
Postgres tiene palabras clave no-reservadas que tienen un significado preestablecido en el lenguaje, pero también se puede utilizar como identificador. En particular, estas palabras clave se pueden usar como nombre de columnas o tablas.
Las siguientes son palabras clave no-reservadas de Postgres:
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
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
COMMITTED SERIALIZABLE TYPE
- CONSTANTES
Hay tres tres tipos implícitos de constantes usadas por Postgres:
1. Cadenas.
2. Enteros
3. Números de coma flotante.
4. Constantes de tipo array.
Las Constantes también pueden ser especificadas con un tipo explícito, el cual puede tener una representación más adecuada y un manejo más eficiente.
- Constantes tipo Cadenas
Las cadenas son secuencias arbitrarias de caracteres ASCII limitadas por comillas simples (" ' ", pe. 'Esto es una cadena')
En Postgres las comillas simples deben estar precedidas por una contra barra ("\", pe.. 'Dianne\'s horse').
- Constantes tipo Entero
Las constantes tipo entero son una colección de dígitos ASCII sin punto decimal.
- Constantes tipo Punto Flotante
Floating point constants consta de una parte entera , un punto decimal, y una parte decimal o la notación científica con el siguiente formato:
Donde dig es uno o más dígitos. Usted puede incluir como mínimo un dig después del periodo y después de [+-] si esas opciones. Un exponente sin mantisa tiene una mantisa insertada a 1. No debe haber ningún carácter extra incluido en la cadena.
- Constantes Postgres de tipos definido por el usuario
Una constante de un tipo arbitrario puede ser usando utilizando alguna de las siguientes notaciones:type 'string''string'::typeCAST'string'AStype.
El valor de dentro de la cadena se pasa como entrada a rutina de conversión para el tipo llamado type. El resultado es una constante del tipo indicado. La tipología puede omitirse si no hay ambigüedad sobre el tipo de constate que debe ser, en este caso este está automáticamente forzado.
- Constantes de tipo Array
Las constantes de tipo Array de cualquier tipo Postgres, incluidos otras arrays, constantes de cadena, etc. El formato general de cualquier constante array es el siguiente:
{val1delimval2delim}
Donde delim es el delimitador para el tipo almacenado en la clase pg_type. (Para los tipos preconstruidos, es el carácter coma. Un ejemplo de constante de tipo array es:
{{1,2,3},{4,5,6},{7,8,9}}
Esta constante es de dos dimensiones, una array de 3 por 3 consiste en tres subarrays de enteros.
Un elemento de una array individual puede y debe estar entre marcas delimitadoras siempre que sea posible para evitar problemas de ambigüedad con respecto a espacios en blanco iniciales.
- Comentarios
Un Comentario es una secuencia arbitraria de carácteres precedido por un doble guión hasta final de linea. También está soportado la doble barra pe.:
-- This is a standard SQL comment
// And this is another supported comment style, like C++
También soportamos el bloque de comentarios al estilo C pe.:
/* multi
line
comment
*/
- Nombres
El nombre en SQL es una secuencia de caracteres alfanuméricos menor que NAMEDATALEN, comenzando por un carácter alfanumérico. Por defecto, NAMEDATALEN esta definido a 32, pero en el momento que montar el sistema, NAMEDATALEN puede cambiarse cambiando el #define en src/backend/include/postgres.h. Subrayado ("_") esta considerado como un carácter alfabético.
En algunos contextos, los nombre pueden contener otros caracteres si están entrecomillados por doble comillas. Por ejemplo, nombres de tablas o campos pueden contener otros caracteres no validos como los espacios, ampersand (&), etc. usando esta técnica.