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, WHERE
puede 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 WHERE
las operaciones lógicas AND
y OR
. NOT
Y 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 BETWEEN
con 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 BETWEEN
admite 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 IN
con 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 not
20, 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 LIKE
no solo funciona con cadenas. Lo que no puede sino alegrarse.
GO TO FULL VERSION