TOP

Lección SQL 4. Filtrado de datos (WHERE)

En la mayoría de los casos, no es necesario recibir todos los registros, sino solo aquellos que cumplen ciertos criterios. Es por eso que existe un operador especial WHERE en SQL para el filtrado de muestreo.


1. Filtrado simple por operador WHERE.

Seleccionemos de nuestra tabla, por ejemplo, registros que se relacionen únicamente con un determinado producto. Para ello, especificamos un parámetro de selección adicional que filtrará los valores por la columna Producto.

Un ejemplo de una consulta para seleccionar valores de texto:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes'

Como puede ver, la condición de selección está entre comillas simples, lo cual es obligatorio al filtrar valores de texto. No se requieren comillas al filtrar valores numéricos.

Un ejemplo de una consulta para seleccionar valores numéricos:

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 
ORDER BY Amount

En este ejemplo, seleccionamos registros en los que los ingresos por ventas fueron superiores a $40 000 y, además, ordenamos todos los registros en orden ascendente según el campo Importe.

La siguiente tabla enumera las declaraciones condicionales admitidas por SQL:

señal de operación Valor
= Es igual a
<> No igual a
< Menos
<= Menos que o igual a
> Más
>= Mayor qué o igual a
ENTRE Entre dos valores
IS NULL no hay registro

2. Filtrado por rango de valores (BETWEEN)

El operador BETWEEN se utiliza para seleccionar datos que se encuentran en un rango determinado. En la siguiente consulta, se seleccionarán todos los valores que se encuentren entre $1000 y $2000, inclusive, en el campo Importe.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount BETWEEN 1000 AND 2000

El orden de clasificación dependerá del orden de los campos de la solicitud. Es decir, en nuestro caso, los datos se ordenarán primero por la columna Importe y luego por City.

3. Selección de registros vacíos (IS NULL)

En SQL, existe un operador especial para seleccionar registros vacíos (llamado NULL). Una entrada vacía es cualquier celda de la tabla en la que no se ingresa ningún carácter. Si se ingresa 0 o un espacio en la celda, se considera que el campo está lleno.

SELECT * 
FROM Sumproduct 
WHERE Amount IS NULL

En el ejemplo anterior, eliminamos intencionalmente dos valores en el campo Monto para demostrar el operador NULL.

4. Filtrado avanzado (AND, OR)

El lenguaje SQL no se limita a filtrar por una condición; para sus propios fines, puede utilizar construcciones bastante complejas para seleccionar datos simultáneamente según muchos criterios. Para ello, SQL cuenta con operadores adicionales que amplían las capacidades del operador WHERE. Dichos operadores son: AND, OR, IN, NOT. Daremos varios ejemplos del funcionamiento de estos operadores.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Amount > 40000 AND City = 'Toronto'
Run SQLSELECT * 
FROM Sumproduct 
WHERE Month = 'April' OR Month = 'March'

Combinemos los operadores AND y OR. Para ello, haremos una selección de bicicletas (Bikes) y patines (Skates), que se vendieron en marzo.

Run SQLSELECT * 
FROM Sumproduct 
WHERE Product = 'Bikes' OR Product = 'Skates' AND Month = 'March'

Podemos ver que en nuestra muestra se incluyeron muchos valores (además de marzo, también enero, febrero y abril). ¿Cuál es la razón? Y el hecho de que SQL tiene prioridades de ejecución de comandos. Es decir, el operador AND tiene mayor prioridad que el operador OR, por lo que se seleccionaron primero los registros con patines vendidos en marzo, seguido de todos los registros relacionados con bicicletas.

Entonces, para obtener el muestreo correcto, debemos cambiar las prioridades de ejecución del comando. Para ello utilizaremos paréntesis, como en matemáticas. Luego, primero se procesarán los operadores entre paréntesis y luego el resto.

Run SQLSELECT * 
FROM Sumproduct 
WHERE (Product = 'Bikes' OR Product = 'Skates') AND Month = 'March'

5. Filtrado avanzado (operador IN)

Run SQLSELECT * 
FROM Sumproduct 
WHERE ID IN (4, 12, 58, 67)

El operador IN realiza la misma función que OR, pero tiene varias ventajas:

  • Cuando se trabaja con listas largas, las oraciones con IN son más fáciles de leer;
  • Se utilizan menos operadores, lo que acelera el procesamiento de solicitudes;
  • La ventaja más importante de IN es que en su construcción se puede utilizar la construcción adicional SELECT, que
  • відкриває великі можливості для створення складних підзапитів.

    6. Filtrado avanzado (operador NOT)

    Run SQLSELECT * 
    FROM Sumproduct 
    WHERE NOT City IN ('Toronto', 'Montreal')
    

    La palabra clave NOT le permite eliminar valores innecesarios de la muestra. Además, su característica es que se coloca antes del nombre de la columna involucrada en el filtrado, y no después.