0% encontró este documento útil (0 votos)
6 vistas9 páginas

Postgres Cheatsheet

Cargado por

aprendiente.leal
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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas9 páginas

Postgres Cheatsheet

Cargado por

aprendiente.leal
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 DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 9

Postgres sssssssssssssssssssssssssss

ssssssssssssssss
Guia de atajos

Tipos de datos generales Operadores de Strings y funciones


Operador
Tipo Alias Descripción
bigint int8 Entero de ocho bytes
Descripción
con signo
Función
bit [ (n) ] Cadena de bits de | Concatena dos o más strings
longitud fija
bit varying varbit [ (n) ] Cadena de bits de CONCAT( ) Une dos o más strings
[(n)] longitud variable
boolean bool Booleano lógico LOWER( ) Resultado en minúscula
(verdadero/falso)
character varchar[(n)] Cadena de
varying [(n)] caracteres de UPPER( ) Resultado en mayúscula
longitud variable

date Fecha del calendario LENGTH( ) Número de caracteres del string


(año, mes, día)
integer int, int4 Entero de cuatro POSITION Buscar ‘term' en el campo y retorna
bytes con signo
( 'term' in field ) el ind
json Datos JSON Remueve los espacios iniciales y
textuales
TRIM( text )
money Cantidad de moneda finales del string (ltrim, rtrim)

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


precisión
Operadores matemáticos y funciones
seleccionable
smallint int2 Entero de dos bytes
Operador
con signo
Descripción
smallserial serial2
Función
Entero de dos bytes
autoincrementable + Sumar
serial serial4 Entero de cuatro
bytes - Restar
autoincrementable
* Multiplicar
text Cadena de
caracteres de Dividir (divisiones entre enteros
longitud variable /
time [ (p) ] Hora del día (sin cortan el resultado)
[ without time zona horaria)
zone ]
% Resultado de la división

time [ (p) ] timetz Hora del día, incluida ROUND( v, p ) Redondea el valor y precisión decimal
with time zone la zona horaria
timestamp Fecha y hora (sin
[ (p) ] zona horaria)
[ without time Operadores de Comparación
zone ] Operador
timestamp timestamptz Fecha y hora, Descripción
[ (p) ] with incluida la zona Función
time zone horaria
= ¿Son los valores iguales?
uuid Identificador único
universal ¿Es el valor de la izquierda es más
>
xml Datos XML
grande que el de la derecha?
¿Es el valor de la izquierda más
<
grande que el de la derecha?
¿Es el valor de la derecha mayor o
>=
igual al de la derecha?
¿Es el valor de la izquierda mayor o
<= NOT IN El valor no se encuentra en la lista
igual al de la derecha?
IN ¿El valor se encuentra en la lista?

Postgresql Docs Cursos y cupones en fernando-herrera.com


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
El valor se encuentra entre Ejemplo de SERIAL primary key
BETWEEN
estos dos valores.
CREATE TABLE books (
El valor no se encuentra entre id SERIAL PRIMARY KEY,
NOT BETWEEN
estos dos valores. title VARCHAR(100) NOT NULL,
Realiza la verificació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 especifico
El término de búsqueda NO CREATE SEQUENCE books_sequence
NOT LIKE start 2
contiene un patrón especifico increment 2;

Operadores lógicos
correlativos
Operador Descripción
Ambas condiciones se deben de
AND
cumplir
Una de las condiciones se tiene que
OR
cumplir
Depende de donde se use, pero en
NOT
general es una negación.

Tabla lógica
a b a AND b a OR b
TRUE TRUE TRUE TRUE
TRUE FALSE FALSE TRUE
TRUE NULL NULL TRUE
FALSE FALSE FALSE FALSE
FALSE NULL FALSE NULL
NULL NULL NULL NULL

Tabla lógica de NOT


a NOT a

TRUE FALSE

FALSE TRUE

NULL NULL

Primary Keys automáticas

Tipo Descripción
SERIAL Serie valores numéricos
INSERT INTO books
(id, title)
SELECT * FROM "users"
VALUES WHERE "id" BETWEEN 2 AND 4;
( nextval('books_sequence'), 'TheHobbit' );

Case
En definición de tabla SELECT "name", "salary",
CASE
CREATE TABLE Students ( WHEN "salary" > 6000 THEN 'Salario mayor a 6000$'
id bigint DEFAULT nextval('integer_id_seq') WHEN "salary" > 4000 THEN 'Salario mayor a 4000$'
PRIMARY KEY, WHEN "salary" >= 2000 THEN 'Salario mayor a 2000$'
name VARCHAR(200) not NULL ELSE 'Salario menor a 2000$'
END AS "Salary information"
); FROM "users";

CREATE TABLE Students (


id uuid DEFAULT gen_random_uuid() PRIMARY KEY, Comentarios
name VARCHAR(200) not NULL
-- Single-line comment
);

CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; /*


DROP EXTENSION "uuid-ossp"; Multi-line
comment
*/
Ejemplos de cláusulas
Between
Postgresql Docs Cursos y cupones en fernando-herrera.com
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 WHERE


id SERIAL, "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 Offset
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
Postgres sssssssssssssssssssssssssss
ssssssssssssssss
Guia de atajos
Funciones de agregación coalesce(ANY Devuelve el primero de sus
REPEATED) argumentos que no es nulo

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

Valores de entrada, REPEATED) lista de cualquier número de

array_agg(expression) expresiones
incluidos los nulos,
concatenados en una
matriz least(ANY Devuelve el valor más pequeño de una
REPEATED) lista de cualquier número de

El promedio (media expresiones.

aritmética) de todos los


avg(expression) nullif(value1 ANY, Devuelve un valor nulo si valor1 es
valores de entrada no value2 ANY) igual a valor2; de lo contrario, devuelve
nulos valor1.

Número de filas de
count(*)
entrada

Número de filas de
entrada para las que el
count(expression)
valor de expresión no es
nulo

Agrega valores, incluidos


json_agg(expression) valores nulos, como una
matriz JSON

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

Valor mínimo
de expresión en todos los
min(expression)
valores de entrada no
nulos

Valores de entrada no
string_agg( nulos concatenados en
expression, delimiter) una cadena, separados
por delimitador

Suma de expresión en
sum(expression) todos los valores de
entrada no nulos

Funciones condicionales

Function Description
JOINS - Uniones de tablas
Visualisation SQL Query
SELECT *
FROM table_a A
SELECT * FROM table_a A LEFT JOIN table_b B ON
JOIN table_b B A.key = B.key
ON A.key = B.key WHERE B.key IS NULL

SELECT *
FROM table_a A
SELECT * FROM table_a A RIGHT JOIN table_b B
LEFT JOIN table_b B ON ON A.key = B.key
A.key = B.key WHERE A.key IS NULL

SELECT * FROM table_a A


FULL OUTER JOIN table_b B
SELECT * FROM table_a A ON A.key = B.key WHERE
RIGHT JOIN table_b B ON B.key IS NULL OR
A.key = B.key A.key IS NULL

SELECT * FROM table_a A


FULL OUTER JOIN table_b B
ON A.key = B.key

Postgresql Docs Cursos y cupones en fernando-herrera.com


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]) $$
RETURNS return_datatype as $$ DECLARE
DECLARE - variables
< Declaración de variables > BEGIN
BEGIN - cuerpo
< Cuerpo de la función > RETURN < END;
Valor > $$ LANGUAGE plpgsql;
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" where
UNION username='fernando' and password =
-- Query recursivo 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