CodeGym /Cursos Java /Módulo 4. Working with databases /DONDE: condiciones en consultas SQL

DONDE: condiciones en consultas SQL

Módulo 4. Working with databases
Nivel 1 , Lección 2
Disponible

3.1 Comparación de valores: <, >, =, <>

Una de las palabras clave más comunes que se utilizan al escribir consultas SQL es WHERE. Es con su ayuda que le decimos a MySQL qué filas de la tabla queremos filtrar (seleccionar).

Después de la palabra clave, WHEREpuede escribir condiciones muy complejas y engañosas. Entonces, ¿qué operaciones puede contener esta condición?

Operador Descripción Ejemplo
< Menos salario < 40000
> Más salario > 100000
<= menor o igual edad <= 25
>= más o igual edad >= 18
= igual ocupación = 'Programador'
<>, != No es igual Año(join_date) != 2015

A diferencia del lenguaje Java, por igualdad estricta, aquí se usa un carácter igual, y no dos .

Si desea verificar que los valores no sean iguales, esto se puede hacer de dos maneras: <>El !=primer enfoque se usa en lenguajes como Pascal, el segundo es típico para lenguajes como C ++ y Java.

Para la asignación en SQL, se usa :=como en Pascal, pero la asignación en sí se usa muy raramente.

Escribamos una consulta donde mostramos todos los empleados que no fueron contratados en 2015.


SELECT * FROM employee WHERE YEAR(join_date) != 2015
        

Y obtenemos el siguiente resultado de la consulta:

identificación nombre ocupación salario edad Fecha de Ingreso
1 ivanov ivan Programador 100,000 25 2012-06-30
2 petrov petr Programador 80.000 23 2013-08-12
3 Sergey Ivanov Ensayador 40.000 treinta 2014-01-01
6 Vaska gato 1,000 3 2018-01-01

3.2 Operaciones lógicas Y, O, NO

También puede utilizar WHERElas operaciones lógicas ANDy OR. NOTY están escritos exactamente como los describí aquí. ninguno &&, ||o!

Escribamos una consulta SQL donde seleccionamos empleados que tienen más de 20 años y reciben un salario de menos de 50K.


SELECT * FROM employee WHERE age > 20 AND salary < 50000
        

Y obtenemos el siguiente resultado de la consulta:

identificación nombre ocupación salario edad Fecha de Ingreso
3 Sergey Ivanov Ensayador 40.000 treinta 2014-01-01
5 Anastasia Kirienko Gerente de oficina 40.000 25 2015-10-10

Demasiado fácil. Escribamos una consulta donde seleccionamos empleados que reciben más de 100K y no trabajan como director:


SELECT * FROM employee WHERE salary >= 100000 AND NOT occupation = 'Director'
        

Aquí !=usamos específicamente el operador en lugar del símbolo NOT.

Y obtenemos el siguiente resultado de la consulta:

identificación nombre ocupación salario edad Fecha de Ingreso
1 ivanov ivan Programador 100,000 25 2012-06-30

3.3 ENTRE: rango de valores

También en SQL hay un operador especial BETWEENcon el que puede verificar si una variable se encuentra entre dos valores. Este operador se usa dentro de expresiones booleanas. La forma general de tal operador es:


variable BETWEEN bottom line AND top_bound
        

En este caso, a diferencia del lenguaje Java, tanto el límite inferior como el superior se incluyen en el intervalo permitido.

Escribamos un ejemplo donde seleccionamos a todos los empleados con un salario de 40K a 100K. La solicitud se verá así:

SELECT * FROM employee WHERE salary BETWEEN 40000 AND 100000

Y obtenemos el siguiente resultado de la consulta:

identificación nombre ocupación salario edad Fecha de Ingreso
1 ivanov ivan Programador 100,000 25 2012-06-30
2 petrov petr Programador 80.000 23 2013-08-12
3 Sergey Ivanov Ensayador 40.000 treinta 2014-01-01
5 Anastasia Kirienko Gerente de oficina 40.000 25 2015-10-10

El operador BETWEENadmite no solo tipos numéricos, sino también fechas e incluso tipos de cadenas . En el caso de trabajar con cadenas se utiliza el orden lexicográfico: aaba precede a aabb

3.4 IN: lista de valores

Además, SQL tiene un operador especial INcon el que puede verificar si una variable está contenida en la lista especificada. Este operador se usa dentro de expresiones booleanas. La forma general de tal operador es:

variable IN (value 1 , value 2 , ... value N)

Escribamos una consulta en la que seleccionemos empleados que tengan 20, 25 o 30 años. La solicitud se verá así:

SELECT * FROM employee WHERE age IN (20, 25, 30)

Y obtenemos el siguiente resultado de la consulta:

identificación nombre ocupación salario edad Fecha de Ingreso
1 ivanov ivan Programador 100,000 25 2012-06-30
3 Sergey Ivanov Ensayador 40.000 treinta 2014-01-01
5 Anastasia Kirienko Gerente de oficina 40.000 25 2015-10-10

Y ahora escribamos una consulta, donde, por el contrario, seleccionemos empleados cuya edad sea not20, 25 o 30. La consulta se verá así:

SELECT * FROM employee WHERE age NOT IN (20, 25, 30)

Y obtenemos el siguiente resultado de la consulta:

identificación nombre ocupación salario edad Fecha de Ingreso
2 petrov petr Programador 80.000 23 2013-08-12
4 Rabinovich Moisha Director 200,000 35 2015-05-12
6 Vaska gato 1,000 3 2018-01-01

Todo funcionó como se esperaba. Belleza.

3.5 ME GUSTA: patrón de cuerdas

Y finalmente, otro operador importante y de uso muy frecuente: LIKE. Se utiliza cuando se comparan cadenas. Se puede utilizar para establecer un patrón de cadena. Este operador se usa dentro de expresiones booleanas. La forma general de tal operador es:

variable LIKE 'sample'

Se pueden utilizar caracteres especiales en el patrón: %y _.

  • El guión bajo significa cualquier carácter, siempre 1 pieza.
  • Porcentaje significa cualquier carácter y cualquier número de veces (incluyendo 0 veces).

Escribamos una consulta que seleccione a todas las personas cuyo apellido comience con la letra "I". La solicitud se verá así:

SELECT * FROM employee WHERE name LIKE 'I%'

Y obtenemos el siguiente resultado de la consulta:

identificación nombre ocupación salario edad Fecha de Ingreso
1 ivanov ivan Programador 100,000 25 2012-06-30
3 Sergey Ivanov Ensayador 40.000 treinta 2014-01-01

Ahora compliquemos la tarea: el nombre debe contener "o" y el nombre debe terminar con "a". La solicitud se verá así:

SELECT * FROM employee WHERE name LIKE '%o%a'

Y obtenemos el siguiente resultado de la consulta:

identificación nombre ocupación salario edad Fecha de Ingreso
4 Rabinovich Moisha Director 200,000 35 2015-05-12

Bien, hagámoslo un poco más difícil. Filtremos a todos los empleados cuya edad comience con el número "3". La solicitud se verá así:

SELECT * FROM employee WHERE age LIKE '3%'

Y obtenemos el siguiente resultado de la consulta:

identificación nombre ocupación salario edad Fecha de Ingreso
3 Sergey Ivanov Ensayador 40.000 treinta 2014-01-01
4 Rabinovich Moisha Director 200,000 35 2015-05-12
6 Vaska gato 1,000 3 2018-01-01

Por cierto, nuestra columna de edadint es de tipo , por lo que LIKEno solo funciona con cadenas. Lo que no puede sino alegrarse.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION