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

DONDE: condiciones en consultas SQL

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.

1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0110
task0110
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0111
task0111
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0112
task0112
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0113
task0113
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0114
task0114
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0115
task0115
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0116
task0116
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0117
task0117
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0118
task0118
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0119
task0119
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0120
task0120
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0121
task0121
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0122
task0122
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0123
task0123
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0124
task0124
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0125
task0125
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0126
task0126
1
Tarea
Módulo 4. Working with databases,  nivel 1lección 2
Bloqueada
task0127
task0127
Comentarios
  • Populares
  • Nuevas
  • Antiguas
Debes iniciar sesión para dejar un comentario
Esta página aún no tiene comentarios