Oráculo NÃO EXISTE

Sumário: neste tutorial, aprende a usar o operador Oracle NOT EXISTS para subtrair um conjunto de dados de outro.

Introdução ao operador Oracle NOT EXISTS

O operador NOT EXISTS funciona o oposto do operador EXISTS operador. Utilizamos frequentemente o operador NOT EXISTS para subtrair um conjunto de dados de outro.

Considerar a seguinte afirmação que usa o NOT EXISTS operador:

SELECT *FROM table_nameWHERE NOT EXISTS (subquery);

O NOT EXISTS operador retorna verdadeiro se a subconsulta não retorna nenhuma linha. Caso contrário, retorna falso.

Nota que o operador NOT EXISTS retorna falso se a subconsulta retorna qualquer fila com um valor NULL.

Oracle NOT EXISTS examples

Ver o seguinte customers e orders tabelas na base de dados de amostras:

A seguinte declaração encontra todos os clientes que não têm encomenda:

SELECT nameFROM customersWHERE NOT EXISTS ( SELECT NULL FROM orders WHERE orders.customer_id = customers.customer_id )ORDER BY name;


Para arquivar os clientes que não têm encomenda, utiliza-se a seguinte declaração:

CREATE TABLE customers_archive ASSELECT * FROM customersWHERE NOT EXISTS ( SELECT NULL FROM orders WHERE orders.customer_id = customers.customer_id );

Para actualizar o limite de crédito dos clientes que não têm encomenda em 2017, usa a seguinte declaração UPDATE declaração:

UPDATE customersSET credit_limit = 0WHERE NOT EXISTS( SELECT NULL FROM orders WHERE orders.customer_id = customers.customer_id AND EXTRACT( YEAR FROM order_date );

E para eliminar todos os clientes que não tinham encomenda em 2016 e 2017 da tabela customers, utilize o seguinte DELETE declaração:

Oracle NOT EXISTS vs. NOT IN

A seguinte declaração utiliza o IN operador com uma subconsulta:

SELECT*FROMtable_nameWHEREid IN(subquery);

Subponha o subquery devolve quatro valores 1, 2, 3, e NULL. Pode reescrever toda a consulta acima como se segue:

SELECT *FROM table_nameWHERE id = 1 OR id = 2 OR id = 3 OR id = NULL;

A expressão seguinte retorna sempre um valor NULO porque um valor NULO não se pode comparar com nada.

id = NULL

Por isso, a expressão seguinte retorna um valor NULO se qualquer linha do conjunto de resultados da subconsulta for NULO.

id NOT IN (subquery)

Em contraste, NULL não afecta o resultado do NOT EXIST operador porque o operador NOT EXISTS verifica apenas a existência de linhas na subconsulta:

SELECT *FROM table_nameWHERE NOT EXISTS(subquery);

Em conclusão, o operador NOT EXISTS e NOT IN comportam-se de forma diferente quando há valores nulos envolvidos.

Neste tutorial, aprendeu como usar o Oracle NOT EXISTS operador para subtrair um conjunto de dados de outro.

  • Este tutorial foi útil?
  • Sim Não

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *