viernes, 8 de marzo de 2024

Clausula WHERE en Lenguaje SQL

En una instrucción SQL, la cláusula WHERE especifica criterios que tienen que cumplir los valores de campo para que los registros que contienen los valores se incluyan en los resultados de la consulta.

Aparece obligatoriamente después de SELECT [lista de campos] FROM [lista de tablas] WHERE

Clausula WHERE en Lenguaje SQL


Después de WHERE podemos añadir los operadores necesarios

Operadores condicionales: =, !=, <, >, <= , >=

Símbolo de distinto puede ser  != o <>

Por ejemplo

SELECT * FROM nombre_tabla WHERE campo <> 1999

SELECT * FROM nombre_tabla WHERE campo != 1999

Devolverán el mismo resultado.

Operadores lógicos: OR, AND

Los operadores AND, OR y NOT son operadores lógicos importantes en SQL. Ayudan a combinar las condiciones utilizadas para filtrar los registros.

SELECT campo4 FROM nombre_tabla WHERE campo1 < 2005 OR campo2 < 10000

Operador BETWEEN  en Oracle incluye los extremos

SELECT * FROM nombre_tabla WHERE campo BETWEEN 2 AND 4;

Saca 2,3 y 4

Operador NOT

Se quitará de los resultados todo lo que se indique después de NOT

SELECT campo1, campo2, campo3 FROM nombre_tabla WHERE campo3 NOT BETWEEN 1995 AND 2005;

Combinación de condiciones

Para combinar condiciones se utilizan paréntesis

SELECT campo1 FROM nombre_tabla WHERE (campo2 < 1999 OR campo2 > 2005) AND ( campo3 < 4000 OR campo3 > 10000);

Operador LIKE y %

¿qué pasa si no sabemos exactamente qué letras estamos buscando? Con los valores tipo texto, siempre se puede utilizar el operador LIKE en lugar del signo igual

Con LIKE se puede usar del signo de porcentaje (%). El signo de porcentaje que se aplica en el ejemplo equivale a cualquier número (cero o más) de caracteres desconocidos.

Como resultado, obtendremos todos los valores cuyo nombre empiece por la letra "F". Es posible que no recordemos el nombre exacto de un valor, pero sabemos que empieza por F.

SELECT campo1, campo2, campo3 FROM nombre_tabla WHERE campo1 LIKE 'F%';

El signo de porcentaje (%) se puede poner en cualquier lugar dentro de las comillas simples y tantas veces como sea necesario.

SELECT * FROM nombre_tabla WHERE campo LIKE '%A%';

Seleccionará cualquier valor cuyo nombre contenga al menos una "A".  El signo de porcentaje (%) también puede equivaler a no tener a ningún carácter, por lo que el nombre también puede empezar o terminar con la "A".

Carácter de subrayado (_)

Es posible que, a veces, no recordemos solo una letra de un nombre concreto. Imagina que queremos encontrar a una chica que se llama... ¿Catherine? ¿Katherine?

SELECT * FROM nombre_tabla WHERE nombre LIKE '_atherine';

El carácter de subrayado (_) coincide exactamente con un solo carácter. Ya sea Catherine o Katherine, la expresión devolverá una fila.

NULL

NULL es un valor especial. No se puede utilizar el signo de igual para comprobar si algo es NULL. Básicamente, no funcionará, se utiliza  IS NULL.

SELECT campo1, campo2, campo3 FROM nombre_tabla WHERE campo IS NULL;

Esta consulta devolverá solo las filas cuyo campo es null, es decir es desconocido.

SELECT * FROM nombre_tabla WHERE campo IS NULL;

Si se establece una condición en una columna concreta, por ejemplo,  campo < 70, las filas en las que la edad sea NULL quedarán siempre excluidas de los resultados.

En ningún caso NULL es igual a cero.

SELECT * FROM nombre_tabla WHERE campo > 0;

No devolverá los registros con campo NULL

NOT NULL

Para comprobar si una columna tiene un valor, utilizamos la instrucción especial IS NOT NULL.

SELECT campo1 FROM nombre_tabla WHERE campo2 IS NOT NULL;

Este código selecciona solo las filas que tienen cuyo campo2 tiene un valor no nulo.

Operadores matemáticos básicos

SELECT * FROM nombre_tabla WHERE (campo * 12) > 50000;

En el ejemplo anterior, utilizamos el asterisco (*) para multiplicar valor del campo por 12 y, así, si campo es un salario mensual, obtendremos el salario anual. A continuación, podemos hacer lo que queramos con el nuevo valor; en este caso, lo comparamos con 50.000 €.

De este modo, se pueden usar signos para sumar (+), restar (-), multiplicar (*) y dividir (/) números.

Ejemplo: Seleccionar los artículos para los que se pagan más de 2000 € en impuestos. El importe de los impuestos de todos los artículos es el 20 % de su precio. Se multiplica que el precio por 0.2 para obtener el importe de los impuestos.

SELECT * FROM artículos WHERE precio * 0.2 > 2000;

Ejercicio

Seleccionar todas las columnas de artículos que cumplan lo siguiente:

se fabricaron entre 1999 y 2005;

no son marca ACME;

su modelo que empieza por "P" o "F";

tienen fijado un precio;

SELECT * FROM coche WHERE fecha_de_produccion BETWEEN 1999 AND 2005 AND marca != 'ACME' AND (modelo LIKE 'P%' OR modelo LIKE 'F%') AND precio IS NOT NULL;

No hay comentarios:

Publicar un comentario