Recomendado, 2024

La Elección Del Editor

Diferencia entre dónde y tener cláusula en SQL

Las cláusulas WHERE y HAVING se utilizan principalmente en la declaración de consultas SQL, que nos permiten restringir la combinación en la relación de resultados mediante el uso de un predicado específico. La principal diferencia entre WHERE y HAVING es que la cláusula WHERE especifica las condiciones para seleccionar las tuplas (filas) de las relaciones, incluidas las condiciones de unión si es necesario. Por otro lado, la cláusula HAVING especifica una condición en los grupos que se seleccionan en lugar de en tuplas individuales.

SQL significa lenguaje de consulta estructurado ; es un lenguaje de base de datos completo o declarativo que se utiliza para acceder a los datos de las bases de datos.

Gráfica comparativa

Bases para la comparaciónDÓNDETENIENDO
BASICImplementado en operaciones de fila.Implementado en operaciones de columna.
Aplicado aUnica filaFila o grupos resumidos.
Obtención de datosSolo obtiene los datos particulares de filas particulares de acuerdo con la condición.Al principio, los datos completos se obtienen y luego se separan de acuerdo con la condición.
Funciones agregadasNo puede aparecer en la cláusula WHERE.Puede aparecer en la cláusula HAVING.
Usado conSELECT y otras declaraciones como ACTUALIZAR, BORRAR o cualquiera de ellas.No se puede utilizar sin una instrucción SELECT.
Actuar dePrefiltroPost-filtro
AGRUPAR PORViene después de dónde.Viene después de tener.

Definición de Cláusula Donde

La cláusula WHERE de SQL se utiliza para describir una condición en el momento de recuperar los datos de una sola tabla o al unirse con varias tablas. Solo devuelve el valor particular de la tabla si se cumple la condición dada. La cláusula WHERE se utiliza para impregnar los registros y recuperar solo los registros necesarios.

SQL también implementa los conectivos lógicos y, o no, en la cláusula WHERE, que también se conocen como la condición booleana ; la condición debe ser verdadera para recuperar las tuplas. Los operandos de las expresiones de conectivos lógicos involucran a los operadores de comparación tales como <, <=, >, > =, = y . Estos operadores de comparación comparan cadenas y expresiones aritméticas. Se puede usar en la instrucción SELECT, así como en las instrucciones UPDATE, DELETE .

Tomemos un ejemplo. La tabla que se muestra a continuación nombrada como tabla " Ventas " consta de los atributos " Producto " y " Cantidad_venta ".

La siguiente consulta debe escribirse para calcular las ventas totales del teléfono y los altavoces.

 SELECCIONE el producto, suma (Sales_amount) AS Total_sales FROM Sales WHERE Producto en ('Teléfono', 'Altavoces') GRUPO POR Producto; 

La siguiente salida es la salida resultante donde las filas se filtran primero, las filas del teléfono y del altavoz se recuperan y luego se realiza la función agregada.

Definición de Cláusula de Tener

SQL proporciona una cláusula HAVING que se puede utilizar junto con la cláusula GROUP BY . Esta cláusula HAVING ayuda a recuperar los valores de los grupos que cumplen ciertas condiciones. La cláusula WHERE también se puede utilizar junto con la cláusula HAVING durante la selección, la cláusula WHERE filtra la fila individual. Luego, las filas se agrupan y se realizan los cálculos agregados, en la última cláusula HAVING se filtran los grupos.

Se comporta de la misma forma que WHERE cuando no se usa la palabra clave GROUP BY. Las funciones de grupo como min, max, avg, sum y count pueden aparecer en solo dos cláusulas: cláusula SELECT y HAVING. Proporciona una condición en las tuplas correspondientes a cada valor en el grupo de atributos. El único conjunto de registros que satisface la condición se mostrará como el resultado.

Aquí también estamos tomando el mismo ejemplo que la cláusula WHERE y considerando la misma tabla de ' Ventas '. Cuando deseamos calcular las ventas totales de teléfonos y altavoces utilizando la cláusula HAVING, escribiremos la siguiente consulta.

 SELECCIONE el producto, suma (Sales_amount) COMO Total_sales DE Ventas GRUPO POR Producto QUE TIENE Producto en ('teléfono', 'Altavoces'); 

La consulta produce la siguiente salida donde los productos se recuperan primero, luego se realiza la función agregada (suma) y, por último, los grupos se filtran a diferencia de la cláusula WHERE.

Cuando queremos encontrar solo aquellos productos en los que Total_sales es mayor que 1000. La consulta se puede escribir como:

 SELECCIONE el producto, suma (Sales_amount) AS Total_sales FROM Sales GROUP BY Product HAVING sum (Sales_amount)> 1000; 

La salida producida es:

Esto no se puede realizar utilizando la cláusula WHERE a pesar de HAVING y genera un mensaje de error porque la cláusula WHERE no se puede usar con funciones agregadas.

Diferencias clave entre dónde y tener cláusula

  1. La cláusula WHERE se emplea en operaciones de fila y se aplica en una sola fila, mientras que la cláusula HAVING se usa en operaciones de columna y se puede aplicar a filas o grupos resumidos.
  2. En la cláusula WHERE, los datos deseados se recuperan de acuerdo con la condición aplicada. En contraste, la cláusula HAVING obtiene datos completos y luego se realiza la separación de acuerdo con la condición.
  3. Las funciones agregadas como min, sum, max, avg nunca pueden aparecer junto con la cláusula WHERE. En contra, estas funciones pueden aparecer en la cláusula HAVING.
  4. La cláusula HAVING no se puede usar sin una instrucción SELECT. A la inversa, DONDE se puede usar con SELECCIONAR, ACTUALIZAR, BORRAR, etc.
  5. La cláusula WHERE se comporta como un filtro previo, mientras que la cláusula HAVING actúa como un filtro posterior.
  6. La cláusula WHERE cuando se usa con GROUP BY, viene antes de GROUP BY. Esto significa que DÓNDE filtrar las filas antes de realizar los cálculos agregados. Por otro lado, HAVING viene después de GROUP BY, lo que significa que se filtra después de realizar los cálculos agregados.

Conclusión

La cláusula WHERE y HAVING funciona de la misma manera, excepto la característica adicional por la cual la cláusula HAVING es popular. La cláusula HAVING puede funcionar de manera eficiente con funciones agregadas, mientras que DONDE no se puede operar con funciones agregadas.

Top