Quais são as subconsultas correlacionadas?

Uma subconsulta correlacionada é um uso sofisticado de SQL.

SQL

Os bancos de dados relacionais mais modernos incorporam SQL para adicionar e atualizar dados, criar estruturas e coletar informações. O SQL é baseado em teorias sobre dados desenvolvidos na década de 1970 e é continuamente aprimorado desde então. Ele consiste em um conjunto de estados, incluindo SELECT, INSERT, CREATE e DELETE, seguidos por várias cláusulas que especificam os dados e opções gerenciados, como sort e group. O uso generalizado de bancos de dados é devido à flexibilidade e sofisticação do SQL; Ele permite que as organizações analisem grupos de dados complexos de várias maneiras.

Consultas e subconsultas

Um comando SQL para recuperar dados é chamado de consulta. Normalmente, os programadores usam a instrução SELECT de consultas, embora muitas das regras para pesquisa de dados também se apliquem a INSERT, DELETE e UPDATE. Uma consulta SELECT simples pode exibir o conteúdo de uma tabela de dados, como a seguinte instrução:

SELECT * FROM inventário;

Esta consulta mostra todos os registros em uma tabela chamada "Inventory". Você pode obter resultados de uma consulta mais específica adicionando testes condicionais, como nesta instrução "inventory":

SELECT * FROM inventário WHERE warehouse_code = 'chicago5';

Esta declaração mostra seus registros de inventário de um código de depósito, chicago5.

Uma subconsulta é uma consulta dentro de outra consulta. A declaração a seguir lista os registros de estoque dos itens que os depósitos estão em uma determinada região:

SELECT * FROM inventário WHERE warehouse_code IN (SELECT código_de_armazéns FROM armazéns WHERE region = 'midwest');

Observe que essa consulta tem duas instruções SELECT, uma que mostra os registros de inventário e outra que estabelece a consulta principal com os códigos de depósito.

Subconsulta correlacionada

Em uma subconsulta correlacionada, as consultas principal e subordinada extraem dados da mesma tabela. A consulta interna executa uma função agregada, como uma estatística, e alimenta essas informações para a consulta externa, que a utiliza como base de uma comparação. Por exemplo, essa subconsulta correlacionada produz uma lista de registros de estoque para itens com preços acima da média de um depósito. A consulta externa passa as informações do depósito para a consulta interna e a consulta interna envia o preço médio de volta para a consulta externa:

SELECT part_number, preço, warehouse_code FROM estoque i1 WHERE price> (SELECT AVG (preço) FROM estoque i2 WHERE warehouse_code.i1 = warehouse_code.i2);

As duas consultas usam tabelas de alias "I1" e "I2". Embora eles se refiram à mesma tabela, o uso do alias permite que as consultas sejam tratadas como duas entidades separadas.

Desvantagens da operação

Para subconsultas correlacionadas, o SQL avalia a consulta interna uma vez para cada registro na consulta externa. Quando os tamanhos das tabelas aumentam, o processo leva mais tempo. Se você achar que uma subconsulta correlacionada leva muito tempo para ser concluída, considere o uso de uma alternativa, como o carregamento de uma tabela temporária com resultados intermediários e o processamento da tabela temporária diretamente na tabela principal com uma subconsulta simples. Embora menos elegante, pode ser muito mais rápido.