Consultas Básicas con SELECT y WHERE en SQL
En esta lección aprenderás a dominar las dos instrucciones más fundamentales de SQL: SELECT para recuperar datos y WHERE para filtrarlos según condiciones específicas. Estas herramientas forman la base de todo análisis de datos y son esenciales para cualquier persona que trabaje con bases de datos.
¿Por qué son importantes estas consultas?
Imagina que tienes una base de datos con millones de registros de ventas. Necesitas encontrar únicamente las ventas del último mes, de un cliente específico, o que superen cierto monto. Sin SELECT y WHERE, tendrías que revisar manualmente cada registro, lo cual es completamente impráctico. Con estas consultas, puedes extraer exactamente la información que necesitas en segundos.
La Sentencia SELECT: Tu Puerta de Entrada a los Datos
La sentencia SELECT es la instrucción más utilizada en SQL. Su función principal es recuperar datos de una o más columnas de una tabla. La sintaxis básica es:
SELECT nombre_columna
FROM nombre_tabla;
Si deseas seleccionar múltiples columnas, sepáralas con comas:
SELECT nombre, apellido, email, telefono
FROM clientes;
Pero ¿qué sucede si necesitas todas las columnas de una tabla? En lugar de escribir cada nombre de columna, puedes utilizar el asterisco (*), que actúa como comodín:
SELECT *
FROM productos;
Esta consulta devuelve absolutamente todos los registros y todas las columnas de la tabla productos. Es útil para explorar datos desconocidos, pero en entornos de producción con grandes volúmenes de datos, es mejor práctica especificar las columnas que realmente necesitas.
La Cláusula WHERE: Filtrando Tus Resultados
Mientras SELECT especifica qué columnas recuperar, WHERE filtra qué filas se incluyen en el resultado. Sin WHERE, SELECT devolvería todos los registros; con WHERE, obtienes únicamente aquellos que cumplen una condición.
SELECT nombre, precio
FROM productos
WHERE precio > 100;
Esta consulta devuelve únicamente los productos con un precio superior a 100. El resultado estará filtrado, ordenado según el orden natural de la base de datos (o según un índice, si existe).
Operadores de Comparación
En las condiciones WHERE puedes utilizar diversos operadores de comparación:
=— Igual a (comprueba igualdad exacta)!=o<>— Diferente de (comprueba desigualdad)>— Mayor que<— Menor que>=— Mayor o igual que<=— Menor o igual que
Ejemplo práctico: Supongamos que tienes una tabla llamada empleados con columnas id, nombre, departamento y salario.Quieres encontrar todos los empleados del departamento de Ventas con salario mayor o igual a 30000:
SELECT nombre, salario
FROM empleados
WHERE departamento = 'Ventas' AND salario >= 30000;
Operadores Lógicos: AND, OR y NOT
Los operadores lógicos te permiten combinar múltiples condiciones para crear filtros más sofisticados y precisos.
AND: Todas las condiciones deben cumplirse
El operador AND devuelve registros únicamente cuando todas las condiciones separadas por AND son verdaderas:
SELECT nombre, ciudad, edad
FROM usuarios
WHERE ciudad = 'Madrid' AND edad >= 18;
Esta consulta devuelve usuarios que viven en Madrid y tienen 18 años o más. Si un usuario vive en Barcelona, aunque tenga 25 años, no aparecerá en los resultados.
OR: Al menos una condición debe cumplirse
El operador OR devuelve registros cuando al menos una de las condiciones es verdadera:
SELECT nombre, producto
FROM compras
WHERE producto = 'Portátil' OR producto = 'Tablet';
Esta consulta muestra todas las compras de portátiles o tablets. Un usuario que compró una Laptop (no incluida) no aparecerá, pero sí uno que haya comprado cualquiera de los dos productos especificados.
NOT: Invierte el resultado de una condición
El operador NOT excluye los registros que cumplen la condición especificada:
SELECT nombre, email
FROM suscriptores
WHERE NOT pais = 'México';
Esta consulta devuelve todos los suscriptores excepto aquellos que son de México.
Combinando Operadores: Prioridad y Paréntesis
Cuando combinas múltiples operadores lógicos, SQL evalúa primero NOT, luego AND y finalmente OR. Sin embargo, puedes usar paréntesis para controlar explícitamente el orden de evaluación:
SELECT nombre, departamento, salario
FROM empleados
WHERE (departamento = 'Ventas' OR departamento = 'Marketing')
AND salario > 25000;
Esta consulta devuelve empleados de Ventas o Marketing cuyo salario supere los 25000. Los paréntesis garantizan que primero se evalúa la condición del departamento y luego se aplica el filtro de salario.
Ejemplo Práctico Completo
Apliquemos todo lo aprendido con un escenario realista. Supongamos que gestionas una tienda en línea y tienes una tabla pedidos con la siguiente estructura:
pedidos (id, cliente_id, producto, categoria, cantidad, precio_unitario, fecha_pedido, estado)
Escenario: El director de ventas necesita un reporte de todos los pedidos del mes de enero de 2024 en la categoría de Electrónica, con un valor total (cantidad × precio_unitario) superior a 500, que estén en estado "Completado" o "Enviado".
SELECT
id,
producto,
cantidad,
precio_unitario,
cantidad * precio_unitario AS valor_total,
fecha_pedido,
estado
FROM pedidos
WHERE
fecha_pedido >= '2024-01-01'
AND fecha_pedido <= '2024-01-31'
AND categoria = 'Electrónica'
AND cantidad * precio_unitario > 500
AND (estado = 'Completado' OR estado = 'Enviado');
Este ejemplo demuestra cómo:
- Utilizamos SELECT para especificar exactamente las columnas que necesitamos
- Creamos un alias con AS para calcular el valor total de cada pedido
- Usamos múltiples condiciones en WHERE combinadas con AND y OR
- Los paréntesis garantizan que la condición del estado se evalúe correctamente
Nota importante: Cuando trabajes con fechas en SQL, el formato puede variar según el sistema de base de datos que utilices. MySQL y PostgreSQL generalmente aceptan fechas en formato 'YYYY-MM-DD', mientras que SQL Server puede requerir '#MM/DD/YYYY#' en algunos contextos. Siempre verifica la sintaxis específica de tu motor de base de datos.
Errores Comunes
Incluso los profesionales experimentados cometen estos errores. Familiarízate con ellos para evitarlos:
- Olvidar las comillas en textos: Al comparar valores de texto, siempre usa comillas simples.
WHERE nombre = 'Juan'es correcto, mientras queWHERE nombre = Juangenerará un error. Esto es especialmente frustrante cuando trabajas con Google Sheets, donde las fórmulas pueden tener diferentes sintaxis. - Confundir AND con OR: Un error frecuente es usar OR cuando necesitas AND, o viceversa. Antes de ejecutar tu consulta, pregúntate: ¿necesito que se cumplan todas las condiciones (AND) o basta con que se cumpla una (OR)? Dibujar un diagrama de Venn puede ayudarte a clarificarlo.
- Usar = en lugar de == o ===: A diferencia de la programación en JavaScript o Python, en SQL se usa un solo signo igual (=) para comparar valores, no dos (==) ni tres (===). Intentar usar == resultará en un error de sintaxis en la mayoría de sistemas de bases de datos.
Conexión con Google Sheets
Si ya conoces las fórmulas de Google Sheets como FILTER() o QUERY(), entenderás SQL con mayor facilidad. La función QUERY() de Google Sheets acepta lenguaje SQL directamente. Por ejemplo:
=QUERY(A1:E1000, "SELECT B, C, E WHERE E > 100 AND D = 'Activo'", 0)
Esta fórmula replica exactamente el tipo de consulta que hemos aprendido, pero dentro de una hoja de cálculo. Dominar SQL te hace más versátil tanto en bases de datos tradicionales como en herramientas de hoja de cálculo avanzadas.
Checklist de Dominio
- Comprendo la diferencia entre SELECT (qué columnas) y WHERE (qué filas)
- Sé utilizar el asterisco (*) para seleccionar todas las columnas
- Domino los seis operadores de comparación (=, !=, >, <, >=, <=)
- Puedo combinar múltiples condiciones con AND correctamente
- Puedo usar OR para crear alternativas en mis filtros
- Entiendo cómo NOT invierte las condiciones
- Sé cómo usar paréntesis para controlar el orden de evaluación
- Puedo crear alias de columnas con AS
- Soy capaz de escribir consultas que combinen filtros de texto, números y fechas
- Puedo traducir requisitos de negocio a consultas SQL funcionales