Comando Select

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';