Precedência de Operadores
Assim como em qualquer linguagem de programação, o MySQL obedece uma ordem quando encontra vários operadores em um mesmo comando. É muito importante conhecê-la, pois isso pode resolver problemas de dados sendo retornados incorretamente graças a incorreta formulação do comando. Vejam a tabela abaixo:
Prioridade |
Operador |
Descrição |
6 |
() |
Parênteses |
5 |
/ ou * |
Divisão ou Multiplicação, o que aparecer primeiro no comando |
4 |
- ou + |
Subtração ou Soma, o que aparecer primeiro no comando |
3 |
NOT |
Negação |
2 |
AND |
E Lógico |
1 |
OR |
OU Lógico |
Através desta tabela podemos perceber que o parênteses é o operador presente no topo da pirâmide hierarquica e o operador com menor prioridade é o OU Lógico. Vou demonstrar isso na prática, criando uma situação em que os parênteses sejam usados para inverter a precedência de outros operadores.
De acordo com a tabela acima, a multiplicação é executada antes da soma. Vamos verificar na prática com o seguinte comando:
select codigo*2+5 AS RESULTADO from filme WHERE codigo=4;
Mas, se quiséssemos forçar a multiplicação primeiro, bastaríamos acrescentar parênteses nela, da seguinte forma:
select codigo*(2+5) AS RESULTADO from filme WHERE codigo=4;
Agora, com o resultado sendo 28, podemos perceber que a soma, mesmo tendo precedência mais baixa que a multiplicação, foi executada primeiro, graças aos parênteses, que têm prioridade sobre quem está fora deles. O que é importante que fique bem claro com este pequeno tópico é que é necessário ter muita atenção no momento de montar suas consultas SQL. Para consultas pequenas, envolvendo uma única tabela ou até duas, é fácil montar o comando correto, mas para consultas mais complexas a atenção precisa ser redobrada.