Postgres Cheatsheet
Postgres Cheatsheet
ssssssssssssssss
Guia de atajos
text Cadena de
caracteres de
longitud variable Operadores de Comparación
time [ (p) ] Hora del día (sin Operador
[ without time zona horaria) Descripción
zone ]
Función
= ¿Son los valores iguales?
time [ (p) ] timetz Hora del día, incluida
with time zone la zona horaria ¿Es el valor de la izquierda es más
>
timestamp Fecha y hora (sin
grande que el de la derecha?
[ (p) ] zona horaria) ¿Es el valor de la izquierda más
[ without time <
zone ] grande que el de la derecha?
¿Es el valor de la derecha mayor o
>=
timestamp timestamptz Fecha y hora, igual al de la derecha?
[ (p) ] with incluida la zona
time zone horaria ¿Es el valor de la izquierda mayor o
<=
igual al de la derecha?
uuid Identi cador único
universal IN ¿El valor se encuentra en la lista?
xml Datos XML
NOT IN El valor no se encuentra en la lista
BETWEEN
El valor se encuentra entre estos Ejemplo de SERIAL primary key
dos valores.
CREATE TABLE books (
El valor no se encuentra entre estos id SERIAL PRIMARY KEY,
NOT BETWEEN
dos valores. title VARCHAR(100) NOT NULL,
Realiza la veri cación si el primary_author VARCHAR(100) NULL
IS NULL );
resultado o campo es nulo
El término de búsqueda contiene
LIKE Ejemplo de secuencia
un patrón especi co
El término de búsqueda NO CREATE SEQUENCE books_sequence
NOT LIKE start 2
contiene un patrón especi co
increment 2;
OR
Una de las condiciones se tiene que En de nición de tabla
cumplir CREATE TABLE Students (
Depende de donde se use, pero en id bigint DEFAULT nextval('integer_id_seq')
NOT PRIMARY KEY,
general es una negación. name VARCHAR(200) not NULL
);
Valores de entrada,
incluidos los nulos, SELECT * FROM table_a A
array_agg(expression)
concatenados en una JOIN table_b B
matriz ON A.key = B.key
El promedio (media
aritmética) de todos los
avg(expression)
valores de entrada no
nulos
Valor máximo
de expresión en todos los
max(expression)
valores de entrada no
nulos
Valores de entrada no
string_agg( nulos concatenados en
expression, delimiter) una cadena, separados
por delimitador SELECT *
FROM table_a A
LEFT JOIN table_b B ON
Suma de expresión en A.key = B.key
sum(expression) todos los valores de WHERE B.key IS NULL
entrada no nulos
Funciones condicionales
Function Description SELECT *
FROM table_a A
coalesce(ANY Devuelve el primero de sus RIGHT JOIN table_b B
REPEATED) argumentos que no es nulo ON A.key = B.key
WHERE A.key IS NULL
return NEW;
Common Table Expression (CTE) END;
with cte_name as ( $$ LANGUAGE plpgsql;
select <campos> from <tabla>....
), [cte_name_2] as ()...
select * from cte_name; PgCrypto
CREATE EXTENSION pgcrypto;
Recursivo
-- Nombre de la tabla en memoria insert into "user" (username, password)
-- campos que vamos a tener values(
WITH RECURSIVE countdown( val ) as ( 'melissa',
-- initialización => el primer nivel, crypt( '123456', gen_salt('bf') )
o valores iniciales );
-- values(5)
select 10 as val select count(*) from "user"
UNION where username='fernando' and
-- Query recursivo password = crypt('123456', password);
select val - 1 from countdown where
val > 1
)
-- Select de los campos
select * from countdown;