TÓPICO 7 – USANDO SUBQUERIES
No tópico 7, falarei um pouco sobre subqueries, como e quando usa-las.
1) QUANDO USAR SUBQUERIES:
As subqueries podem resolver os seguintes problemas:
- Criando tabelas populadas: Uma subquery pode ser usada em um comando CREATE TABLE para criar e já popular uma tabela, técnica essa chamada de CTAS ou CREATE TABLE AS SELECT. Sua sintaxe é:
- Manipulação de grandes quantidades de dados: Subqueries podem ser incorporadas em comandos de INSERT e UPDATE para mover grandes quantidades de dados, ou alterar grandes quantidades de dados em um único SQL.
- Definição dinâmica de VIEWs (Cláusula WITH)
- Definição dinâmica de expressões com subqueries escalares (subqueries que retornam apenas um valor)
2) COMO USAR SUBQUERIES
Existem alguns tipos de subqueries, cada uma com suas vantagens/desvantagens. Abaixo é possível ver os tipos de subqueries bem como alguns exemplos para ajudar a entende-las.
NOTA.01 – Caso a subquery retorne 0 linhas, então o valor retornado pela subquery é NULL
NOTA.02 – É possível ter subqueries no WHERE, HAVING e GROUP BY.
2.1) SINGLE-ROW SUBQUERIES
Subqueries que retornam apenas uma linha, e uma ou varias colunas Ex:
2.2) MULTIPLE-ROW SUBQUERIES
Subqueries que retornam 0, uma ou varias linhas. Ex:
2.3) MULTIPLE-COLUMN SUBQUERIES
Retorna mais de uma coluna para a query pai. Pode retornar uma ou várias linhas. Ex:
2.4) CORRELATED SUBQUERIES:
Especifica colunas que pertencem a tabelas que são referenciadas pela tabela pai. Ex:
3) USANDO O EXISTS
O EXISTS testa a existência de uma linha em uma subquery. Caso nenhuma linha seja encontrada, retorna FALSE. Caso a subquery retorne mais de uma linha, se essa linha “bater” com a linha da query-pai o comando é encerrado, não sendo necessário todas as linhas do EXISTS serem validadas. Mais performático do que o operador IN. Ex:
4) USANDO O WITH
O WITH determina nomes para subqueries (blocos de subqueries). Essa subquery, que foi nomeada é tratada como uma view dinâmica. Isso facilita a leitura e manutenção caso se tenha que trabalhar com muitas subqueries dentro de uma query Ex:
Bem… é isso por enquanto pessoal. Até a próxima.
Keep Querying
Muito bom esse tópico sobre sub-querys, tirou uma dúvida grande em relação a Multiple-Column.
Parabéns …
Comando WITH é muito bom de usar substituindo aqueles vários cursores dependentes de um principal. O WITH fica muito mais performático.
“NOTA.02 – É possível ter subqueries no WHERE, HAVING e GROUP BY.”
subquery no group by?
não seria só no where, having e select (inline)?
Obrigado por compartilhar conhecimento!