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.
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.
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.
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 |
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.
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.
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'
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:
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.