sábado, 24 de novembro de 2012
Oracle SQL - A Importância da Ordem de Precedência
Ordem de Precedência no SQL
A importância da ordem de precedência é mais evidente quando você lida com o agrupamento de condições. Isto é melhor ilustrado nas instruções SELECT como esta:
SELECT NUM_EMP, payrate, dept_code
DE emp_work
ONDE dept_code = 'Vendas'
E payrate = 18
OR payrate = 20;
O usuário está tentando para consultar informações sobre todos os funcionários do departamento de vendas que payrates de qualquer 18 ou 20. No entanto, os resultados reais a partir desta consulta vão ser todos os funcionários do departamento de vendas com um payrate de 18 e de qualquer funcionário com um payrate de 20.
Isto é porque a Oracle avalia o "E" primeiro por causa de sua maior precedência.
Quando a Oracle olha para esta consulta que vê:
ONDE dept_code = 'Vendas'
E payrate = 18
juntos e avalia as condições em primeiro lugar.
Oracle procura registros de funcionários, onde o funcionário está no departamento de vendas e tem um payrate
de 18 anos.
O Oracle olha para o operador OR, já que as duas primeiras condições foram agrupados pelo operador E, todos a Oracle deixou é:
OR payrate = 20;
avaliar, controlo o Oracle para todos os funcionários com um payrate de 20.
NOTA: Empregados com um dólar 20 uma payrate hora não estão todos no departamento de vendas.
Desde o que o usuário queria ver era os funcionários do departamento de vendas e com um payrate um de 18 ou 20, nós queremos Oracle para olhar para o operador OU antes de olhar para o AND.
Você pode colocar a ou acima do E se você quiser, mas não vai ajudar. Oracle ainda olha para o operador primeiro porque é mais alto na ordem de precedência. O que precisamos fazer é levantar de alguma forma ou acima e de uma forma que até mesmo o computador possa entender. A nossa forma de conseguir isso é em torno das condições OR com parênteses ().
Parênteses são maiores na ordem de precedência gráfico de E ou OU. Qualquer coisa dentro de parênteses serão avaliadas primeiro. Quando você usar parênteses para agrupar declarações que deseja avaliadas em conjunto (como o OR condições deste exemplo) é chamado Agrupamento.
Por exemplo, se somarmos parêntese em torno das condições ou do nosso exemplo anterior:
SELECT NUM_EMP, payrate, dept_code
DE emp_work
ONDE dept_code = 'Vendas'
E (payrate = 18
OR payrate = 20);
As condições payrate são agrupados e avaliados em primeiro lugar porque o parêntese em torno deles. Em seguida, a Oracle olha para a declaração e.
O que vamos acabar com uma seleção que pede uma listagem de todos os empregados que tenham um payrate de qualquer 18 ou 20, e depois verifica quais dessas é no departamento de vendas, o que nos dará os resultados que estávamos procurando para.
Agrupamento não é muitas vezes necessário, especialmente em selects simples.
No entanto, se você achar que você está recebendo informações mais ou diferente do que você esperava de uma consulta com várias condições, é um bom palpite que o agrupamento vai ajudar a dar-lhe os resultados que foram originalmente procurando.
Precedência dos operadores
Define a ordem de precedência que a Oracle usa ao avaliar diferentes operadores na mesma expressão. Cada operador tem uma precedência pré-definida. A Oracle avalia operadores com maior precedência antes que avalia os operadores com menor precedência. Operadores com a mesma precedência serão avaliados a partir da esquerda para a direita.
* Mesa * parcial de operadores em SQL Ordem de Precedência
& - Usado como um prefixo de parâmetro
() - Substituir normal Precedência de operadores
NÃO - A inversão do resultado de uma expressão
E - Expressando True Se duas condições forem verdadeiras
OR - Expressando verdadeiro se qualquer condição é verdadeira...
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário