SQLite EXISTE

Resumo : neste tutorial, você aprenderá como usar o EXISTSoperador SQLite para testar a existência de linhas retornadas por uma subconsulta.

EXISTSIntrodução ao operador SQLite

O EXISTSoperador é um operador lógico que verifica se uma subconsulta retorna alguma linha.

Aqui está a sintaxe básica do EXISTSoperador:

EXISTS(subquery)
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe, a subconsulta é uma SELECTinstrução que retorna zero ou mais linhas.

Se a subconsulta retornar uma ou mais linhas, o EXISTSoperador retornará verdadeiro. Caso contrário, o EXISTSoperador retornará falso ou NULL.

Observe que se a subconsulta retornar uma linha com NULL, o resultado do EXISTSoperador ainda será verdadeiro porque o conjunto de resultados contém uma linha com NULL.

Para negar o EXISTSoperador, você usa o NOT EXISTSoperador da seguinte maneira:

NOT EXISTS (subquery)Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O NOT EXISTSoperador retorna verdadeiro se a subconsulta não retornar nenhuma linha.

EXISTSExemplo de operador SQLite

Consulte o seguinte Customerse Invoicesas tabelas do banco de dados de exemplo :

A instrução a seguir localiza clientes que possuem faturas:

SELECT
    CustomerId,
    FirstName,
    LastName,
    Company
FROM
    Customers c
WHERE
    EXISTS (
        SELECT 
            1 
        FROM 
            Invoices
        WHERE 
            CustomerId = c.CustomerId
    )
ORDER BY
    FirstName,
    LastName; 
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A imagem a seguir mostra o conjunto de resultados parciais:

Neste exemplo, para cada cliente, o EXISTSoperador verifica se o id do cliente existe na invoicestabela.

  • Se sim, a subconsulta retorna uma linha com valor 1 que faz com que o EXISTSoperador seja avaliado como verdadeiro. Portanto, a consulta inclui o cliente no conjunto de resultados.
  • Caso o ID do cliente não exista na Invoicestabela, a subconsulta não retorna nenhuma linha, o que faz com que o EXISTSoperador seja avaliado como falso, portanto a consulta não inclui o cliente no conjunto de resultados.

Observe que você pode usar o INoperador em vez de EXISTSoperador neste caso para obter o mesmo resultado:

SELECT
   CustomerId, 
   FirstName, 
   LastName, 
   Company
FROM
   Customers c
WHERE
   CustomerId IN (
      SELECT
         CustomerId
      FROM
         Invoices
   )
ORDER BY
   FirstName, 
   LastName;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Depois que a subconsulta retorna a primeira linha, o EXISTSoperador interrompe a pesquisa porque pode determinar o resultado. Por outro lado, o INoperador deve verificar todas as linhas retornadas pela subconsulta para determinar o resultado.

De modo geral, o EXISTSoperador é mais rápido que INo operador se o conjunto de resultados retornado pela subconsulta for grande. Por outro lado, o INoperador é mais rápido que o EXISTSoperador se o conjunto de resultados retornado pela subconsulta for pequeno.

NOT EXISTSExemplo de operador SQLite

Consulte a seguinte tabela Artistas e Álbuns do banco de dados de amostra:

Esta consulta encontra todos os artistas que não possuem nenhum álbum na tabela Álbuns:

SELECT
   *
FROM
   Artists a
WHERE
   NOT EXISTS(
      SELECT
         1
      FROM
         Albums
      WHERE
         ArtistId = a.ArtistId
   )
ORDER BY Name;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Aqui está a saída parcial:

Neste tutorial, você aprendeu como usar o EXISTSoperador SQLite para testar a existência de linhas retornadas por uma subconsulta.

Deixe um comentário

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