Franco Lopez

Papá, Ingeniero y creador.

Cheatsheet: SQL

Esta guia está basada en notas que he recopilado con el tiempo. Aplica para PostgreSQL, MySQL o SQLite. Los comandos cubren consultas, filtrado, modificación y unión de datos.


SELECT - Consultas Básicas

-- Selecciona todo de una tabla
SELECT * FROM Country;

-- Renombrar columnas usando AS y ordenar alfabéticamente
SELECT Name, Lifeexpectancy AS "Esperanza de Vida" FROM Country ORDER BY Name;

-- Consulta condicional con LIMIT y OFFSET
SELECT Name, Continent, Region 
FROM Country 
WHERE Continent = 'Europe' 
ORDER BY Name 
LIMIT 5 OFFSET 15;

-- Contar países con población mayor a un millón
SELECT COUNT(*) FROM Country WHERE Population > 1000000;

-- Eliminar duplicados (DISTINCT)
SELECT DISTINCT Continent FROM Country;

Filtrado con WHERE

-- Filtrar por múltiples condiciones
SELECT Name, Continent, Population 
FROM Country 
WHERE Population < 10000 AND Continent = 'Oceania' 
ORDER BY Population DESC;

-- Usar LIKE con comodines
SELECT Name FROM Country WHERE Name LIKE '%island%' ORDER BY Name;

-- Segunda letra sea A
SELECT Name FROM Country WHERE Name LIKE '_a%' ORDER BY Name;

INSERTAR Datos

-- Insertar datos en columnas específicas
INSERT INTO customer (name, city, state) 
VALUES ('Jimi', 'Renton', 'WA');

-- Insertar datos desde otra tabla
INSERT INTO test (a, b, c) 
SELECT id, name, description FROM item;

ACTUALIZAR y ELIMINAR

-- Actualizar campos específicos por ID
UPDATE customer 
SET address = '123 music ave', zip = '98056' 
WHERE id = 5;

-- Eliminar un registro específico
DELETE FROM customer WHERE id = 5;

Estructura de la Tabla

-- Eliminar tabla si existe
DROP TABLE IF EXISTS test;

-- Añadir una columna con valor por defecto
ALTER TABLE test ADD columna TEXT DEFAULT 'panda';

Unir Tablas (JOINs)

-- Inner Join
SELECT customers.name, orders.amount 
FROM customers 
INNER JOIN orders ON customers.id = orders.customer_id;

-- Left Join
SELECT customers.name, orders.amount 
FROM customers 
LEFT JOIN orders ON customers.id = orders.customer_id;

-- Right Join (no soportado en todas las bases de datos)
SELECT customers.name, orders.amount 
FROM customers 
RIGHT JOIN orders ON customers.id = orders.customer_id;

-- Full Outer Join (PostgreSQL)
SELECT customers.name, orders.amount 
FROM customers 
FULL OUTER JOIN orders ON customers.id = orders.customer_id;

Agregación y Agrupación

-- Agrupar datos y contar registros
SELECT Continent, COUNT(*) as total_paises 
FROM Country 
GROUP BY Continent;

-- Promedio de población por región
SELECT Region, AVG(Population) as promedio_poblacion 
FROM Country 
GROUP BY Region;

Otros Comandos Útiles

-- Encontrar máximos y mínimos
SELECT MAX(Population), MIN(LifeExpectancy) FROM Country;

-- Ordenar por múltiples columnas
SELECT Name, Continent, Population 
FROM Country 
ORDER BY Continent, Population DESC;

-- Limitar el número de resultados
SELECT * FROM Country LIMIT 10;

Esta guia está pensada como una referencia rápida para el diario.

— Franco