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