Diferença entre cláusula Where e Having no SQL

Autor: Laura McKinney
Data De Criação: 1 Abril 2021
Data De Atualização: 12 Poderia 2024
Anonim
Diferença entre cláusula Where e Having no SQL - Tecnologia
Diferença entre cláusula Where e Having no SQL - Tecnologia

Contente


As cláusulas WHERE e HAVING são usadas principalmente na instrução de consultas SQL, elas permitem restringir a combinação na relação de resultados usando um predicado específico. A principal diferença entre WHERE e HAVING é que a cláusula WHERE especifica as condições para selecionar o tuplas (linhas) das relações, incluindo condições de junção, se necessário. Por outro lado, a cláusula HAVING especifica uma condição no grupos sendo selecionado em vez de em tuplas individuais.

SQL apoia Linguagem de Consulta Estruturada; é uma linguagem abrangente ou declarativa do banco de dados usada para acessar os dados dos bancos de dados.

  1. Gráfico de comparação
  2. Definição
  3. Principais diferenças
  4. Conclusão

Gráfico de comparação

Base para comparaçãoONDETENDO
BasicImplementado em operações de linha.Implementado em operações de coluna.
Aplicado aFila unicaLinha ou grupos resumidos.
Busca de dadosEle busca apenas os dados específicos de linhas específicas de acordo com a condição.Inicialmente, os dados completos são buscados e separados de acordo com a condição.
Funções agregadasNão pode aparecer na cláusula WHERE.Pode aparecer na cláusula HAVING.
Usado comSELECT e outras instruções, como UPDATE, DELETE ou qualquer uma delas.Não pode ser usado sem uma instrução SELECT.
Agir comoPré-filtroPós-filtro
GRUPO PORVem depois de ONDE.Vem antes de ter.


Definição da Cláusula Where

O SQL Cláusula WHERE é usado para descrever uma condição no momento de recuperar os dados de uma única tabela ou juntando-se a várias tabelas. Ele somente retorna o valor específico da tabela se a condição especificada for atendida. A cláusula WHERE é usada para permear os registros e recuperar apenas os registros necessários.

SQL também implementa os conectivos lógicos e, ou e não na cláusula WHERE, que também são conhecidas como boleano condição; a condição deve ser verdadeira para recuperar as tuplas. Os operandos das expressões conectivas lógicas envolvem operadores de comparação, como <, <=, >, >=, =e <>. Esses operadores de comparação comparam cadeias e expressões aritméticas. Pode ser usado no SELECT , bem como em UPDATE, EXCLUIR afirmações.


Vamos dar um exemplo. A tabela mostrada abaixo é nomeada como ‘Vendas‘Tabela consiste em‘produtos‘E‘Quantidade de vendas' atributos.

A consulta a seguir deve ser escrita para calcular o Vendas totais de telefone e alto-falantes.

SELECT Product, sum (sales_amount) AS Total_sales FROM Sales WHERE Produto em (telefone, alto-falantes) GRUPO POR Produto;

A saída a seguir é a saída resultante, onde as linhas são filtradas primeiro, as linhas de telefone e alto-falante são recuperadas e a função agregada é executada.

Definição da cláusula Having

SQL fornece Cláusula HAVING que pode ser usado em conjunto com GRUPO POR cláusula. Esta cláusula HAVING ajuda a recuperar os valores para os grupos que atendem a determinadas condições. A cláusula WHERE também pode ser usada em conjunto com a cláusula HAVING durante a seleção, a cláusula WHERE filtra a linha individual. As linhas são agrupadas e os cálculos agregados são executados; finalmente, a cláusula HAVING filtra os grupos.

Ele se comporta da mesma forma que WHERE quando a palavra-chave GROUP BY não é usada. As funções de grupo, como min, max, média, soma e contagem, podem aparecer em apenas duas cláusulas: cláusula SELECT e HAVING. Ele fornece uma condição nas tuplas correspondentes a cada valor no grupo de atributos. O único conjunto de registros que satisfaz a condição será mostrado como resultado.

Aqui também estamos usando o mesmo exemplo da cláusula WHERE e considerando o mesmo ‘Vendas' tabela. Quando queremos calcular o Vendas totais de telefone e alto-falantes usando a cláusula HAVING, escreveremos a seguinte consulta.

SELECT Product, sum (Sales_amount) AS Total_sales DO GRUPO DE VENDAS POR PRODUTO COM O PRODUTO EM (telefone, alto-falantes);

A consulta produz a seguinte saída em que os produtos são recuperados primeiro, a função agregada (soma) é executada e, por último, os grupos são filtrados ao contrário da cláusula WHERE.

Quando queremos encontrar apenas os produtos em que o Vendas totais é maior que 1000. A consulta pode ser escrita como:

SELECIONAR produto, soma (quantidade_de_vendas) AS Total_sales DO GRUPO DE Vendas POR PRODUTO COM soma (quantidade_de vendas)> 1000;

A saída produzida é:

Isso não pode ser executado usando a cláusula WHERE, apesar de HAVING e gera um erro porque a cláusula WHERE não pode ser usada com funções agregadas.

  1. A cláusula WHERE é empregada em operações de linha e aplicada em uma única linha, enquanto a cláusula HAVING é usada em operações de coluna e pode ser aplicada a linhas ou grupos resumidos.
  2. Na cláusula WHERE, os dados desejados são buscados de acordo com a condição aplicada. Por outro lado, a cláusula HAVING busca dados inteiros e a separação é feita de acordo com a condição.
  3. Funções agregadas como min, sum, max, avg nunca podem aparecer junto com a cláusula WHERE. Por outro lado, essas funções podem aparecer na cláusula HAVING.
  4. A cláusula HAVING não pode ser usada sem uma instrução SELECT. Por outro lado, ONDE pode ser usado com SELECT, UPDATE, DELETE etc.
  5. A cláusula WHERE se comporta como um pré-filtro, enquanto a cláusula HAVING atua como um pós-filtro.
  6. A cláusula WHERE, quando usada com GROUP BY, vem antes de GROUP BY. Isso significa que WHERE filtra as linhas antes que os cálculos agregados sejam executados. Por outro lado, HAVING vem após GROUP BY, o que significa que ele filtra após a realização de cálculos agregados.

Conclusão

A cláusula WHERE e HAVING funciona da mesma maneira, exceto o recurso adicional pelo qual a cláusula HAVING é popular. A cláusula HAVING pode trabalhar eficientemente com funções agregadas, enquanto WHERE não pode ser operado com funções agregadas.