Cheatsheet PostgreSQL

La función abs() nos retorna el valor absoluto de


SELECT abs(-49);
            

La función cbrt() nos retorna la raíz cúbica de


SELECT cbrt(27);
                

La función ceil() nos retorna el valor entero mayor más cercano de


SELECT ceil(20.5);
                      

La función div(a , b ) nos retorna el resultado (cociente) de la operación de división de A (dividendo) entre B (divisor).


SELECT div(9, 4);
                      

La función exp( OR ) nos retorna la exponenciación de un número como se especifica en el argumento.


SELECT exp(3) as Exponencial;
SELECT exp(2.2) as Exponencial;
  

La función floor( OR ) nos retorna el entero más cercano menor o igual que el argumento.


SELECT floor(5.8);
                      

La función factorial() nos retorna el factorial de .


SELECT factorial(5);
                      

La función random() nos retorna un valor aleatorio entre 0.0 y 1.0


SELECT random();
                            

La función power(a , b ) nos retorna A elevado a la potencia de B


SELECT power(5, 4);
                            

La función mod(a , b ) nos retorna el módulo (resto) de la operación de división de A (dividendo) entre B (divisor).


SELECT mod(9, 4);
                            

La función char_length() o character_length() nos retorna la longitud de :


SELECT char_length('enidev911') as "Cantidad de caracteres";
SELECT character_length('enidev') as "Cantidad de caracteres";
      

La función chr(num ) nos retorna el carácter correspondiente al código (ascii) dado en el argumento:


SELECT chr(169), chr(64);
      

La función concat(str , [str2 , str3 , ...]) se utiliza para concatenar dos o más cadenas excepto cuando NULL es especificado:


SELECT concat('eni', 'dev', NULL, '911');
      

La función initcap(str ) nos retorna STR con la primera letra de cada palabra en mayúscula y el resto a minúsculas:


SELECT initcap('marco antonio contreras herrera');
      

La función octec_length(str ) nos retorna el número de bytes en STR:


SELECT octet_length('ñ'),octet_length('🧠'), octet_length('❤️');
      

La función split_part(str, delimiter , field_num ) se utiliza para dividir STR dada en función de un delimitador indicado en DELIMITER y selecciona el campo deseado de la cadena indicado en FIELD_NUM, comenzando desde izquierda a derecha:


SELECT split_part('postgresql-#-mysql-#-oracle', '-#-', 1);
SELECT split_part('postgresql-#-mysql-#-oracle', '-#-', 2);
SELECT split_part('postgresql-#-mysql-#-oracle', '-#-', 3);
        

La función substring(, str_pos, n_char) nos permite extraer una subcadena, donde str_pos es un para la posición dentro de desde donde comenzará la extracción y n_char es un que es la cantidad de caracteres que se quieren extraer:


SELECT substring('enidev911' from 2 for 3) as "Extracto del texto";
        

La función repeat(str , n ) nos retorna STR repitida N cantidad de veces:


SELECT repeat('?', 1),repeat('|', 2),repeat('-', 3),repeat('*', 4);
              

La función reverse() nos retorna en sentido inverso:


SELECT reverse('enidev911') as "Texto invertido";
              

La función right(, n ) nos retorna los últimos N caracteres de :


SELECT right('enidev911', 2);
      

La función left(, n ) nos retorna los primeros N caracteres de :


SELECT left('enidev911', 2);
      

La función ltrim(str [, characters ]) se utiliza para eliminar espacios en blancos, pero también nos retorna STR recortando el conjunto de caracteres que coincidan con el texto en CHARACTERS de izquierda a derecha:


SELECT ltrim('             enidev911');
SELECT ltrim('911911911enidev911', '911');
      

La función rtrim(str [, characters ]) se utiliza para eliminar espacios en blancos, pero también nos retorna STR recortando el conjunto de caracteres que coincidan con el texto en CHARACTERS de derecha a izquierda:


SELECT rtrim('enidev911            ');
SELECT rtrim('enidev911 911911911', '911');
      

La función translate(str , match_str , replace_str ) se utiliza para intercambiar cualquier carácter en STR que coincida con MATCH_STR y será intercambiado por su equivalente en la misma posición en REPLACE_STR:


SELECT translate('anidtav044', '04at', '91e');
      

1. CREATE


-- 1 primera forma (si ejecutamos 2 veces, tendriamos un error) 
CREATE TABLE heros (
  id SERIAL,
  name VARCHAR(50)
);
-- 2 forma (Con la cláusula IF NOT EXISTS evitamos el error)
CREATE TABLE IF NOT EXISTS herosDC (
  id SERIAL,
  name VARCHAR(50)
);
-- mostrar las tablas creadas
\dt
        

2. ALTER


-- creamos una tabla 
CREATE TABLE users (
  id SERIAL,
  name VARCHAR(50)
);
-- le añadimos una nueva columna
ALTER TABLE users ADD age INT;
-- describimos la tabla 
\d users
        

3. TRUNCATE


-- creamos una tabla 
CREATE TABLE users (
  id SERIAL,
  name VARCHAR(50)
);
-- truncamos la tabla (elimina rápidamente todas las filas o tuplas)
TRUNCATE TABLE users;
--- truncamos la tabla y reiniciamos el secuanciador auto-incrementable "SERIAL"
TRUNCATE TABLE users RESTART IDENTITY;
-- describimos la tabla 
\d users
        

4. DROP


-- creamos una tabla 
CREATE TABLE users (
  id SERIAL,
  name VARCHAR(50)
);
-- eliminamos la tabla y con toda su estructura.
DROP TABLE users;
-- describimos la tabla (deberíamos obtener un error: Did not find any relation named "users")
\d users
        

1. INSERT


CREATE TABLE IF NOT EXISTS heros (
  name VARCHAR(50)
);
CREATE TABLE IF NOT EXISTS herosDC (
  name VARCHAR(50)
);
-- 1 primera forma 
INSERT INTO heros (name) VALUES ('black adam');
-- 2 forma (El nombre de la columna es opcional)
INSERT INTO heros VALUES ('thor');
-- 3 forma para múltiples tuplas
INSERT INTO heros VALUES ('superman'), ('aquaman'), ('mera'), ('flash');
-- 4 forma insertar en seleccionar (primero se ejecuta el select, luego el insert)
INSERT INTO heros (name) SELECT ('batman');
-- 5 forma insertar el resultado de una query de una tabla en otra tabla
INSERT INTO herosDC SELECT name FROM heros WHERE name IN ('black adam', 'mera', 'flash');
SELECT name as heros FROM heros;
SELECT name as herosDC FROM herosDC;
        

2. SELECT

Sintaxis


SELECT column1, column2, ...
FROM table_name
[where condition]; 

CREATE TABLE IF NOT EXISTS heros (
  id SERIAL,
  name VARCHAR(50)
);

COPY heros (name) FROM stdin;
afrodita
aquaman
batman
deadman
deadshot
eviless
lex luthor
thor
superman
flash
krypto
joker
\.
-- 1. Seleccionar todos los campos (el comodín * no es recomendado)
SELECT * FROM heros;
-- 2. Seleccionar campos por campo (lo ideal)
SELECT id, name as heros FROM heros;
-- 3. Selccionar campos condicionadamente
SELECT id, name as heros 
FROM heros
WHERE LEFT(name, 1) IN ('a', 'e', 'i', 'o', 'u');
        

3. UPDATE

Sintaxis


UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

CREATE TABLE IF NOT EXISTS heros (
  id SERIAL,
  name VARCHAR(50)
);

COPY heros (name) FROM stdin;
afroman
aquamon
batmin
\.
-- 1. ACTUALIZAMOS el registro 1  
UPDATE heros SET name='afrodita' WHERE name='afroman';
-- 2. ACTUALIZAMOS el registro 2
UPDATE heros SET name='aquaman' WHERE name='aquamon';
-- 3. ACTUALIZAMOS el registro 3
UPDATE heros SET name='batman' WHERE name='batmin';
-- 3. Vemos el cambio 
SELECT id, name as heros FROM heros;