Sintaxis Básica
SELECT * FROM tabla;
- Selecciona todas las columnas de la tabla
SELECT columna1, columna2 FROM tabla;
- Selecciona columnas específicas
Ejemplos con Cláusulas
WHERE (Filtrado)
SELECT * FROM empleados WHERE salario > 50000;
SELECT nombre, apellido FROM clientes WHERE pais = 'México';
ORDER BY (Ordenamiento)
SELECT * FROM productos ORDER BY precio DESC;
SELECT nombre, edad FROM estudiantes ORDER BY edad ASC, nombre DESC;
GROUP BY (Agrupamiento)
SELECT departamento, COUNT(*) FROM empleados GROUP BY departamento;
SELECT categoria, AVG(precio) FROM productos GROUP BY categoria;
JOIN (Unión de tablas)
SELECT p.nombre, p.precio, c.nombre AS categoria
FROM productos p
JOIN categorias c ON p.categoria_id = c.id;
SELECT e.nombre, d.nombre_departamento
FROM empleados e
LEFT JOIN departamentos d ON e.departamento_id = d.id;
Funciones de Agregación
SELECT COUNT(*) AS total_clientes FROM clientes;
SELECT MAX(precio) AS precio_maximo FROM productos;
SELECT AVG(edad) AS edad_promedio FROM estudiantes;
Subconsultas
SELECT nombre FROM productos
WHERE precio > (SELECT AVG(precio) FROM productos);
SELECT nombre FROM empleados
WHERE departamento_id IN (SELECT id FROM departamentos WHERE ubicacion = 'Norte');
SELECT DISTINCT (Valores únicos)
SELECT DISTINCT pais FROM clientes;
LIMIT/OFFSET (Paginación)
SELECT * FROM productos LIMIT 10;
SELECT * FROM productos LIMIT 10 OFFSET 20; -- Página 3 (mostrar registros 21-30)
Expresiones y Aliases
SELECT nombre, precio, precio * 1.16 AS precio_con_iva FROM productos;
CASE (Condicional)
SELECT nombre,
CASE
WHEN edad < 18 THEN 'Menor'
WHEN edad BETWEEN 18 AND 65 THEN 'Adulto'
ELSE 'Jubilado'
END AS grupo_edad
FROM personas;
SELECT INTO (Crear tabla a partir de consulta)
SELECT * INTO empleados_backup FROM empleados;
WITH (Common Table Expressions)
WITH ventas_altas AS (
SELECT * FROM ventas WHERE monto > 10000
)
SELECT * FROM ventas_altas WHERE fecha > '2023-01-01';