Skip to content

Clase 11 – Cláusula WHERE en SQL

La capacidad de filtrar datos de manera precisa es esencial. Las cláusulas WHERE son la llave maestra que permite seleccionar información específica de una base de datos.

En este artículo, exploraremos a fondo las cláusulas WHERE en SQL, desde su sintaxis básica hasta casos avanzados con múltiples condiciones y operadores lógicos.

Sintaxis Básica de la Cláusula WHERE

La cláusula WHERE se utiliza junto con las instrucciones SELECT, UPDATE, DELETE e incluso en combinación con JOIN.

Su función principal es filtrar filas basándose en una condición específica.

Aquí está la estructura básica de la cláusula WHERE:

SELECT columnas
FROM nombre_de_tabla
WHERE condición;

Donde:

  • columnas son las columnas que deseas recuperar.
  • nombre_de_tabla es la tabla de la que deseas recuperar datos.
  • condición es la condición que las filas deben cumplir para ser seleccionadas.

Ejemplo Básico

Supongamos que tenemos una tabla de empleados y queremos seleccionar aquellos cuyo salario es mayor que 50000:

SELECT nombre, salario
FROM empleados
WHERE salario > 50000;

Esta consulta devolverá los nombres y salarios de todos los empleados cuyos salarios superan los 50000.

Operadores de Comparación en la Cláusula WHERE

Los operadores de comparación son fundamentales para establecer condiciones en la cláusula WHERE. Algunos de los más comunes son:

= (Igual a): Compara si dos valores son iguales.

SELECT nombre
FROM clientes
WHERE ciudad = 'Nueva York';

!= o <> (Diferente de): Compara si dos valores no son iguales.

SELECT producto
FROM inventario
WHERE cantidad <> 0;

< (Menor que), > (Mayor que): Compara si un valor es menor o mayor que otro.

SELECT nombre, edad
FROM estudiantes
WHERE edad < 18;

<= (Menor o igual que), >= (Mayor o igual que): Compara si un valor es menor o igual, o mayor o igual que otro.

SELECT nombre, nota
FROM alumnos
WHERE nota >= 7;

Operadores Lógicos en la Cláusula WHERE

Los operadores lógicos permiten combinar condiciones en la cláusula WHERE para formar expresiones más complejas.

Algunos ejemplos incluyen:

AND: Devuelve verdadero si ambas condiciones son verdaderas.

SELECT nombre, edad
FROM empleados
WHERE salario > 50000 AND departamento = 'Ventas';

OR: Devuelve verdadero si al menos una de las condiciones es verdadera.

SELECT nombre, ciudad
FROM clientes
WHERE estado = 'CA' OR estado = 'NY';

NOT: Invierte la condición.

SELECT nombre, edad
FROM estudiantes
WHERE NOT edad < 18;

Usando Wildcards (Comodines) con LIKE

La cláusula WHERE también se puede utilizar con el operador LIKE y comodines para realizar búsquedas de patrones en datos de texto.

Algunos ejemplos son:

%: Representa cero o más caracteres.

SELECT nombre
FROM productos
WHERE nombre LIKE 'Camiseta%';

_: Representa un único carácter.

SELECT palabra
FROM diccionario
WHERE palabra LIKE '_ano';

Filtrando por Rangos de Valores

Es común utilizar la cláusula WHERE para seleccionar datos dentro de un rango específico.

Aquí hay un ejemplo:

SELECT nombre, edad
FROM empleados
WHERE edad BETWEEN 25 AND 35;

Esta consulta devolverá los nombres y edades de los empleados cuyas edades estén entre 25 y 35.

Uso de Subconsultas en la Cláusula WHERE

Las subconsultas permiten realizar consultas dentro de otras consultas, y son útiles en la cláusula WHERE para establecer condiciones más complejas.

Por ejemplo:

SELECT nombre, salario
FROM empleados
WHERE salario > (SELECT AVG(salario) FROM empleados);

Esta consulta seleccionará los nombres y salarios de los empleados cuyos salarios sean mayores que el salario promedio de la empresa.

Combina Cláusulas WHERE con JOIN

Cuando trabajas con múltiples tablas, puedes combinar cláusulas WHERE con JOIN para realizar consultas más avanzadas.

Supongamos que queremos obtener el nombre del cliente y su compra más reciente:

SELECT clientes.nombre, compras.fecha
FROM clientes
JOIN compras ON clientes.id_cliente = compras.id_cliente
WHERE compras.fecha = (SELECT MAX(fecha) FROM compras WHERE id_cliente = clientes.id_cliente);

Esta consulta utiliza JOIN y una subconsulta en la cláusula WHERE para obtener la última compra de cada cliente.

Control de Transacciones y Cláusula WHERE

Cuando trabajas con la cláusula WHERE en operaciones de modificación (UPDATE o DELETE), es fundamental entender el control de transacciones.

Aquí tienes un ejemplo:

BEGIN; -- Iniciar una transacción

UPDATE productos
SET stock = stock - 1
WHERE id_producto = 101;

-- Confirmar la transacción
COMMIT;

En este ejemplo, estamos actualizando el stock de un producto específico solo si hay suficientes unidades disponibles.

Consideraciones de Desempeño con la Cláusula WHERE

A medida que tus bases de datos crecen, la eficiencia de tus consultas se vuelve crucial.

Indexar las columnas utilizadas en las condiciones de la cláusula WHERE puede mejorar significativamente el rendimiento.

Por ejemplo:

CREATE INDEX idx_nombre ON empleados (nombre);

Este comando crea un índice en la columna nombre de la tabla empleados, acelerando las consultas que filtran por este campo.

Las cláusulas WHERE en SQL son la herramienta esencial para filtrar datos y realizar consultas específicas en tus bases de datos. Desde condiciones básicas hasta expresiones más complejas con operadores lógicos y subconsultas, entender cómo utilizar la cláusula WHERE te permite extraer información precisa y valiosa.