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...

Nenhum comentário:

Postar um comentário