mysql | Precedencia del operador

La precedencia de operadores especifica el orden en que se evalúan los operadores cuando dos o más operadores con diferente precedencia son adyacentes en una expresión.

Por ejemplo , 1+2/3 da un resultado diferente en comparación con (1+2)/3. Al igual que todos los demás lenguajes de programación C, C++, Java, etc., MySQL también tiene una regla de precedencia.

La siguiente tabla describe la precedencia de operadores en MySQL, de mayor a menor. Los operadores que están en el mismo grupo tienen la misma precedencia.

Operador Descripción
INTERVALO Devuelve el índice del argumento que es menor que el primer argumento
COLABORACIÓN BINARIA Este es un tipo que almacena strings de bytes binarios.
Esta cláusula anula cualquiera que sea la intercalación predeterminada para la comparación .
! Negar valores

~
Cambia el signo del operando
Invierte los bits del operando
^ XOR bit a bit
*
/
DIV
%, MOD
Operador de multiplicación Operador de
división División
entera (descartar la parte fraccionaria de la división)
Operador de módulo

+
Operador menos Operador de
suma
<<
>>
Desplazar un número (BIGINT) o string binaria a la izquierda
Desplazar un número (BIGINT) o string binaria a la derecha
& Y bit a bit
| O bit a bit
=
<=>
>=, >
<=, <
<>, !=
ES
COMO
REGEXP
EN
Operador de comparación Operador
igual a seguro NULL
Mayor que/Mayor que o igual a
Menor que/Menor que o igual
a Operador No igual a Comparar
un valor con un valor booleano
Operador de coincidencia de patrones Hace coincidir
la expresión de string con la expresión regular
Verificar si un valor está presente en la lista o no
ENTRE
CASO CUANDO ENTONCES OTRO
Comprobar si un valor está dentro de un rango de valores
Operador de caso
NO Valor de negación
Y, && Y lógico
XOR XOR lógico
O, || O lógico
=
:=
Asignar un valor (como parte de una sentencia SET/cláusula SET en una sentencia UPDATE)
Asignar un valor

Esta regla de precedencia de operadores afecta en gran medida a nuestras consultas MySQL. Sin el conocimiento de la precedencia de operadores, podemos obtener resultados inesperados. Para entender esto considere la siguiente tabla Student .

identificación nombre marcas
1 pago 12
2 Utkarsh 9
3 Reeta 19
4 Soleado 15
5 Shanu 5
6 castigo 7

De la tabla anterior queremos el resultado de aquellos estudiantes que tienen calificaciones mayores a 10 y cuyo nombre comienza con ‘p’ o ‘s’. Entonces, su consulta se puede escribir como-

mysql>select * 
from student 
where marks>10 and name like 'p%' 
                   or name like 's%'; 

Resultado:
Producirá el resultado deseado:

identificación nombre marcas
1 pago 12
4 Soleado 15
6 castigo 7

Este conjunto de resultados no es el esperado de la consulta. Como está dando el resultado de un estudiante ‘Punit’ con marcas de menos de 10, lo cual no es obligatorio. Debido a la mayor precedencia del operador AND en comparación con OR, la consulta anterior da como resultado que todos los estudiantes tengan marcas superiores a 10 y nombres que comiencen con ‘s’, además de los resultados de aquellos estudiantes que tengan nombres que comiencen con ‘p’ también se da en la salida. Entonces, aquí viene el papel de los paréntesis. La consulta anterior se puede escribir como,

mysql>select * 
from student 
where marks>10 and (name like 'p%' 
                       or name like 's%');

Resultado:
Producirá el resultado deseado:

identificación nombre marcas
1 pago 12
4 Soleado 15


Por lo tanto, esta precedencia del operador se puede anular haciendo uso de paréntesis.

Publicación traducida automáticamente

Artículo escrito por Tanvi_Garg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *