0% encontró este documento útil (0 votos)
325 vistas5 páginas

Postgres Cheatsheet

Este documento proporciona una guía de los tipos de datos, operadores y funciones más comunes en PostgreSQL. Explica los tipos de datos numéricos, de cadena, fecha y hora, así como operadores aritméticos, de comparación, lógicos y funciones para cadenas. También muestra ejemplos del uso de secuencias y claves primarias seriales para autoincrementar identificadores de tablas.

Cargado por

The Barto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
325 vistas5 páginas

Postgres Cheatsheet

Este documento proporciona una guía de los tipos de datos, operadores y funciones más comunes en PostgreSQL. Explica los tipos de datos numéricos, de cadena, fecha y hora, así como operadores aritméticos, de comparación, lógicos y funciones para cadenas. También muestra ejemplos del uso de secuencias y claves primarias seriales para autoincrementar identificadores de tablas.

Cargado por

The Barto
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

Postgres sssssssssssssssssssssssssss

ssssssssssssssss
Guia de atajos

Tipos de datos generales Operadores de Strings y funciones


Tipo Alias Descripción Operador
Descripción
Función
bigint int8 Entero de ocho bytes
con signo || Concatena dos o más strings
bit [ (n) ] Cadena de bits de
longitud ja CONCAT( ) Une dos o más strings

bit varying varbit [ (n) ] Cadena de bits de LOWER( ) Resultado en minúscula


[(n)] longitud variable

boolean bool Booleano lógico UPPER( ) Resultado en mayúscula


(verdadero/falso)
LENGTH( ) Número de caracteres del string
character varchar[(n)] Cadena de
varying [(n)] caracteres de
longitud variable
POSITION Buscar ‘term' en el campo y retorna
( 'term' in eld ) el ind
date Fecha del calendario
Remueve los espacios iniciales y
(año, mes, día) TRIM( text )
nales del string (ltrim, rtrim)
integer int, int4 Entero de cuatro
bytes con signo

json Datos JSON Operadores matemáticos y funciones


textuales
Operador
Descripción
money Cantidad de moneda Función

numeric [(p, s)] decimal[(p,s)] Numérico exacto de


+ Sumar
precisión
seleccionable - Restar
smallint int2 Entero de dos bytes * Multiplicar
con signo
Dividir (divisiones entre enteros
smallserial serial2 Entero de dos bytes /
autoincrementable
cortan el resultado)
% Resultado de la división
serial serial4 Entero de cuatro
bytes
autoincrementable ROUND( v, p ) Redondea el valor y precisión decimal

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

Postgresql Docs Cursos y cupones en fernando-herrera.com


fi
fi
fi
fi
Postgres sssssssssssssssssssssssssss
ssssssssssssssss
Guia de atajos
<> ¿Los valores no son iguales? SEQUENCE Secuencia personalizada única

!= ¿Los valores no son iguales? gen_random_uuid( ) UUID en formato V4

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;

Operadores lógicos INSERT INTO books


(id, title)
Operador Descripción VALUES
( nextval('books_sequence'), 'TheHobbit' );
Ambas condiciones se deben de
AND
cumplir

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
);

Tabla lógica CREATE TABLE Students (


id uuid DEFAULT gen_random_uuid() PRIMARY KEY,
name VARCHAR(200) not NULL
a b a AND b a OR b );

TRUE TRUE TRUE TRUE CREATE EXTENSION IF NOT EXISTS "uuid-ossp";


DROP EXTENSION "uuid-ossp";
TRUE FALSE FALSE TRUE

TRUE NULL NULL TRUE Ejemplos de cláusulas


FALSE FALSE FALSE FALSE
Between
FALSE NULL FALSE NULL SELECT * FROM "users"
NULL NULL NULL NULL
WHERE "id" BETWEEN 2 AND 4;

Tabla lógica de NOT Case


SELECT "name", "salary",
a NOT a CASE
WHEN "salary" > 6000 THEN 'Salario mayor a 6000$'
WHEN "salary" > 4000 THEN 'Salario mayor a 4000$'
TRUE FALSE WHEN "salary" >= 2000 THEN 'Salario mayor a 2000$'
ELSE 'Salario menor a 2000$'
END AS "Salary information"
FALSE TRUE FROM "users";

NULL NULL Comentarios


-- Single-line comment

Primary Keys automáticas /*


Multi-line
Tipo Descripción comment
*/
Serie valores numéricos
SERIAL
correlativos

Postgresql Docs Cursos y cupones en fernando-herrera.com


fi
fi
fi
fi
Postgres sssssssssssssssssssssssssss
ssssssssssssssss
Guia de atajos
Comandos comunes Group by y Count
SELECT COUNT(name) AS user_count, "country"
FROM "users2"
Crear base de datos GROUP BY "country"
CREATE DATABASE “database_name"; ORDER BY user_count DESC;

CREATE DATABASE IF NOT EXISTS "productsDB";


Like Statements
Crear tabla SELECT * FROM “users"

CREATE TABLE "users" ( -- Nombre inicie con J mayúscula


id SERIAL, WHERE "name" LIKE 'J%';
name VARCHAR(100) NOT NULL,
role VARCHAR(15) NOT NULL, -- Nombre inicie con Jo
PRIMARY KEY (id) WHERE "name" LIKE 'Jo%';
);
-- Nombre termine con hn
WHERE "name" LIKE '%hn';
Crear vista y destruir vista -- Nombre tenga 3 letras y las últimas
CREATE OR REPLACE [MATERIALIZED] VIEW 2
"v_spain_users" AS -- tienen que ser "om"
SELECT "name", "email" FROM "users" WHERE "name" LIKE '_om'; // Tom
WHERE "country" = 'Spain';
-- Puede iniciar con cualquier letra
DROP [MATERIALIZED] VIEW "v_spawn_users"; -- seguido de "om" y cualquier cosa
después
WHERE "name" LIKE '_om%'; // Tomas
Eliminar registros
DELETE FROM "table_name"
WHERE "column_name" = some_value; Limit y O set
SELECT * FROM "users"
LIMIT 5
Inserciones OFFSET 10;
INSERT INTO "table_name"
("column1", "column2", "column3", ...)
VALUES
("value1", "value2", "value3", ...);
Order by
SELECT "column1", "column2", ...
-- Múltiples FROM "table_name"
ORDER BY "column1", ... ASC|DESC;
INSERT INTO "table_name"
("column1", "column2", "column3", …)
VALUES
("value1", "value2", "value3", ...), Select Distinct
("value1", "value2", "value3", ...),
("value1", "value2", "value3", ...), SELECT DISTINCT "country"
...; FROM "users";

Contar registros en tabla y Having


Actualizar registros
UPDATE "users" select count(*) from photos
SET
"name" = 'Christopher' , select count(*), “column"
"role" = 'admin' from "table"
WHERE "id" = 2; GROUP by "column"
HAVING count(*) > 3

Postgresql Docs Cursos y cupones en fernando-herrera.com


ff
Postgres sssssssssssssssssssssssssss
ssssssssssssssss
Guia de atajos
Funciones de agregación JOINS - Uniones de tablas
Visualisation SQL Query
Function Description

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

Número de las de SELECT * FROM table_a A


count(*) LEFT JOIN table_b B
entrada
ON A.key = B.key
Número de las de
entrada para las que el
count(expression)
valor de expresión no es
nulo

Agrega valores, incluidos


json_agg(expression) SELECT * FROM table_a A
valores nulos, como una
RIGHT JOIN table_b B
matriz JSON ON A.key = B.key

Valor máximo
de expresión en todos los
max(expression)
valores de entrada no
nulos

Valor mínimo SELECT * FROM table_a A


de expresión en todos los FULL OUTER JOIN table_b B
min(expression) ON A.key = B.key
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

greatest(ANY Devuelve el valor más grande de una


lista de cualquier número de
REPEATED)
expresiones
SELECT * FROM table_a A
least(ANY Devuelve el valor más pequeño de una FULL OUTER JOIN table_b B
lista de cualquier número de ON A.key = B.key
REPEATED) WHERE B.key IS NULL OR
expresiones.
A.key IS NULL

nullif(value1 ANY, Devuelve un valor nulo si valor1 es


igual a valor2; de lo contrario, devuelve
value2 ANY)
valor1.

Postgresql Docs Cursos y cupones en fernando-herrera.com


fi
fi
Postgres
Guia de atajos
PLPGSQL + CTE
Funciones personalizadas Procedimientos almacenados
Sintaxis general: CREATE OR REPLACE PROCEDURE
proc_name ( [args type] ) AS
CREATE [OR REPLACE] FUNCTION
$$
function_name([arguments type])
DECLARE
RETURNS return_datatype as $$
-- variables
DECLARE
BEGIN
< Declaración de variables >
-- cuerpo
BEGIN
END;
< Cuerpo de la función >
$$ LANGUAGE plpgsql;
RETURN < Valor >
END; LANGUAGE plpgsql;
call proc_name( 'valores' );
Ejemplo:
CREATE OR REPLACE FUNCTION
Triggers
greet_employee( emp_name varchar )
create or REPLACE TRIGGER <name>
RETURNS varchar AFTER UPDATE on "user"
AS $$ FOR EACH ROW

BEGIN —Opcional when


RETURN 'Hola ' || emp_name; WHEN (OLD.field IS DISTINCT FROM NEW.field)
END; — Procedimiento/Función a ejecutar
EXECUTE FUNCTION create_session_log();
$$
LANGUAGE plpgsql;
create or REPLACE FUNCTION <name>()
RETURNS TRIGGER as $$
select greet_employee('Fernando'); BEGIN
— Cuerpo de la función

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;

Postgresql Docs Cursos y cupones en fernando-herrera.com

También podría gustarte