SQL significa Linguagem de Consulta Estruturada ; é uma linguagem de banco de dados abrangente ou declarativa usada para acessar os dados dos bancos de dados.
Gráfico de comparação
Base para comparação | ONDE | TENDO |
---|---|---|
Basic | Implementado em operações de linha. | Implementado em operações de coluna. |
Aplicado a | Fila unica | Linha ou grupos resumidos. |
Busca de dados | Ele busca somente os dados específicos de linhas específicas de acordo com a condição. | Primeiro, os dados completos são buscados e depois separados de acordo com a condição. |
Funções agregadas | Não pode aparecer na cláusula WHERE. | Pode aparecer na cláusula HAVING. |
Usado com | SELECT e outras declarações, como UPDATE, DELETE ou qualquer uma delas. | Não pode ser usado sem uma instrução SELECT. |
Agir como | Pré-filtro | Pós-filtro |
GRUPO POR | Vem depois de ONDE. | Vem depois de ter. |
Definição da cláusula where
A cláusula SQL WHERE é usada para descrever uma condição no momento de recuperar os dados de uma única tabela ou unindo-se a várias tabelas. Apenas 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.
O SQL também implementa os conectivos lógicos e, ou e não na cláusula WHERE, que também são conhecidos como a condição booleana ; a condição deve ser verdadeira para recuperar as tuplas. Os operandos das expressões conectivas lógicas envolvem os operadores de comparação, como <, <=, >, > =, = e . Esses operadores de comparação comparam seqüências de caracteres e expressões aritméticas. Ele pode ser usado na instrução SELECT, bem como em instruções UPDATE, DELETE .
Vamos dar um exemplo. A tabela abaixo indicada como tabela ' Sales ' consiste nos atributos ' Product ' e ' Sales_amount '.
SELECT Produto, soma (Sales_amount) AS Total_sales FROM Vendas WHERE Produto em ('Phone', 'Speakers') GROUP BY Produto;
Definição de ter cláusula
O SQL fornece a cláusula HAVING, que pode ser usada em conjunto com a cláusula GROUP BY . Esta cláusula HAVING ajuda na recuperação dos valores dos grupos que preenchem certas condições. Cláusula WHERE também pode usar em conjunto com cláusula HAVING durante a seleção, 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, avg, sum e count, podem aparecer em apenas duas cláusulas: 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 tomando o mesmo exemplo da cláusula WHERE e considerando a mesma tabela ' Sales '. Quando quisermos calcular o Total_sales do telefone e dos alto-falantes usando a cláusula HAVING, escreveremos a consulta a seguir.
SELECT Produto, soma (Sales_amount) AS Total_sales FROM Vendas GROUP BY Produto HAVING Produto em ('phone', 'Speakers');
A consulta produz a seguinte saída, em que os produtos são recuperados primeiro, depois a função agregada (sum) é 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 Total_sales é maior que 1000. A consulta pode ser escrita como:
SELECT Produto, soma (Sales_amount) AS Total_sales FROM Vendas GROUP BY Produto HAVING sum (Sales_amount)> 1000;
A saída produzida é:
Isso não pode ser executado usando a cláusula WHERE apesar de HAVING e gera uma mensagem de erro porque a cláusula WHERE não pode ser usada com funções agregadas.
Principais diferenças entre onde e tendo cláusula
- 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 compactados.
- Na cláusula WHERE, os dados desejados são buscados de acordo com a condição aplicada. Em contraste, a cláusula HAVING obtém dados inteiros e a separação é feita de acordo com a condição.
- Funções agregadas como min, sum, max, avg nunca podem aparecer junto com a cláusula WHERE. Em contrapartida, essas funções podem aparecer na cláusula HAVING.
- Cláusula HAVING não pode usar sem uma instrução SELECT. Por outro lado, WHERE pode ser usado com SELECT, UPDATE, DELETE, etc.
- A cláusula WHERE se comporta como um pré-filtro enquanto a cláusula HAVING atua como um pós-filtro.
- A cláusula WHERE, quando usada com o GROUP BY, vem antes do GROUP BY. Isso significa que as linhas do filtro WHERE antes dos cálculos agregados são executadas. Por outro lado, o HAVING vem depois do GROUP BY, o que significa que ele filtra após os cálculos agregados serem executados.
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 funcionar eficientemente com funções agregadas, enquanto o WHERE não pode ser operado com funções agregadas.