Jhonatan Pinheiro
Cargando página...
Jhonatan Pinheiro
Cargando página...
Jhonatan Pinheiro
Cargando página...
Los 20 comandos de SQL que usas todos los días — del SELECT a las agregaciones, con ejemplos listos para copiar.
Si estás empezando con bases de datos, estos son los 20 comandos que usas todos los días. Cada uno viene con un ejemplo práctico para que lo copies y lo pruebes. Vamos desde SELECT hasta las agregaciones — la base de todo.
El comando más usado: elige qué columnas traer de una tabla. Usa * para todas (evítalo en producción).
-- Todas las columnas
SELECT * FROM clientes;
-- Solo lo necesario (recomendado)
SELECT nome, email FROM clientes;Trae solo las filas que cumplen una condición.
SELECT nome, cidade
FROM clientes
WHERE cidade = 'São Paulo';Ordena el resultado. ASC (ascendente, por defecto) o DESC (descendente).
SELECT nome, criado_em
FROM clientes
ORDER BY criado_em DESC;Devuelve solo N filas. En SQL Server es TOP; en Oracle, FETCH FIRST.
-- PostgreSQL / MySQL / SQLite
SELECT * FROM produtos ORDER BY preco DESC LIMIT 10;
-- SQL Server
SELECT TOP 10 * FROM produtos ORDER BY preco DESC;Elimina las filas repetidas del resultado.
SELECT DISTINCT cidade FROM clientes;Agrega filas nuevas. Lista siempre las columnas.
INSERT INTO clientes (nome, email, cidade)
VALUES ('Ana Souza', 'ana@email.com', 'Campinas');Modifica filas existentes. Nunca olvides el WHERE — sin él, actualizas la tabla entera.
UPDATE clientes
SET cidade = 'Rio de Janeiro'
WHERE id = 42;Elimina filas. Igual que UPDATE: sin WHERE, borra todo.
DELETE FROM clientes WHERE id = 42;Define la estructura: columnas, tipos y restricciones.
CREATE TABLE clientes (
id INTEGER PRIMARY KEY,
nome VARCHAR(120) NOT NULL,
email VARCHAR(200) UNIQUE,
cidade VARCHAR(80),
criado_em TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);Agrega, quita o cambia columnas de una tabla existente.
ALTER TABLE clientes ADD COLUMN telefone VARCHAR(20);
ALTER TABLE clientes DROP COLUMN telefone;Borra la tabla entera (estructura + datos). Irreversible.
DROP TABLE clientes;
-- Solo si existe (evita el error)
DROP TABLE IF EXISTS clientes;Elegir el tipo correcto ahorra espacio y evita errores.
-- Numéricos: INTEGER, BIGINT, DECIMAL(10,2)
-- Texto: VARCHAR(n), TEXT
-- Fecha/hora: DATE, TIMESTAMP
-- Booleano: BOOLEAN
CREATE TABLE pedidos (
id BIGINT,
total DECIMAL(10,2),
pago BOOLEAN,
data DATE
);Identifica cada fila de forma única. Toda tabla debería tener una.
CREATE TABLE produtos (
id INTEGER PRIMARY KEY,
nome VARCHAR(120)
);Une varias condiciones en el WHERE. Usa paréntesis para dejarlo claro.
SELECT * FROM produtos
WHERE (categoria = 'livros' OR categoria = 'games')
AND preco < 100
AND NOT esgotado;Atajos potentes de filtrado: lista de valores, rango y búsqueda por patrón.
-- Lista
SELECT * FROM clientes WHERE cidade IN ('SP', 'RJ', 'MG');
-- Rango
SELECT * FROM produtos WHERE preco BETWEEN 50 AND 150;
-- Patrón (% = cualquier texto)
SELECT * FROM clientes WHERE email LIKE '%@gmail.com';NULL es 'ausencia de valor'. Nunca lo compares con = NULL — usa IS NULL.
SELECT * FROM clientes WHERE telefone IS NULL;
SELECT * FROM clientes WHERE telefone IS NOT NULL;Resumen varias filas en un único valor.
SELECT
COUNT(*) AS total_pedidos,
SUM(total) AS faturamento,
AVG(total) AS ticket_medio,
MIN(total) AS menor,
MAX(total) AS maior
FROM pedidos;Agrupa filas para agregar por categoría. Aquí: facturación por ciudad.
SELECT cidade, COUNT(*) AS pedidos, SUM(total) AS faturamento
FROM pedidos
GROUP BY cidade
ORDER BY faturamento DESC;Renombra columnas y tablas para que el resultado (y la consulta) se lea mejor.
SELECT p.nome AS produto, p.preco AS valor
FROM produtos AS p;Documenta tus consultas. -- para una línea, /* */ para un bloque.
-- Esto es un comentario de una línea
SELECT nome FROM clientes; -- también funciona al final
/* Comentario
de varias líneas */