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

Autor: Laura McKinney
Fecha De Creación: 1 Abril 2021
Fecha De Actualización: 6 Mayo 2024
Anonim
Diferencia entre dónde y tener cláusula en SQL - Tecnología
Diferencia entre dónde y tener cláusula en SQL - Tecnología

Contenido


Las cláusulas WHERE y HAVING se utilizan principalmente en la declaración de consultas SQL, 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 el 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 el grupos ser seleccionado en lugar de en tuplas individuales.

SQL representa lenguaje de consulta estructurado; Es un lenguaje de base de datos completo o declarativo utilizado para acceder a los datos de las bases de datos.

  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo

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


Definición de la cláusula Where

El SQL Dónde cláusula se usa para describir una condición en el momento de recuperar los datos de una sola tabla o uniéndose a 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 y no en la cláusula WHERE que también se conoce como booleano condición; La condición debe ser verdadera para recuperar las tuplas. Los operandos de las expresiones de conectividad lógica involucran operadores de comparación como <, <=, >, >=, =y <>. Estos operadores de comparación comparan cadenas y expresiones aritméticas. Se puede usar en SELECCIONAR declaración, así como en ACTUALIZACIÓN, BORRAR declaraciones.


Tomemos un ejemplo. La tabla que se muestra a continuación se denomina ‘Ventas‘Tabla consta de‘Producto‘Y‘Cantidad de ventas‘Atributos.

La siguiente consulta se debe escribir para calcular el Ventas totales de teléfono y altavoces.

SELECCIONE Producto, suma (Ventas_cantidad) COMO Total_ventas DESDE Ventas DONDE Producto en (Teléfono, Altavoces) GRUPO POR Producto;

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

Definición de tener cláusula

SQL proporciona Que tiene cláusula que se puede usar junto con AGRUPAR POR cláusula. Esta cláusula HAVING ayuda a recuperar los valores para los grupos que cumplen ciertas condiciones. La cláusula WHERE también se puede usar junto con la cláusula HAVING durante la selección, la cláusula WHERE filtra la fila individual. Las filas se agrupan y se realizan los cálculos agregados, por fin la cláusula HAVING filtra los grupos.

Se comporta igual que WHERE cuando no se usa la palabra clave GROUP BY. Las funciones de grupo como min, max, avg, sum y count solo pueden aparecer en 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 resultado.

Aquí también tomamos el mismo ejemplo que la cláusula WHERE y consideramos lo mismo ‘Ventas' mesa. Cuando queremos calcular el Ventas totales de teléfono y altavoces usando la cláusula HAVING, escribiremos la siguiente consulta.

SELECCIONE el Producto, suma (Ventas_cantidad) COMO Total_ventas DEL GRUPO de Ventas POR Producto QUE TIENE Producto en (teléfono, Altavoces);

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

Cuando queremos encontrar solo aquellos productos donde Ventas totales es mayor que 1000. La consulta se puede escribir como:

SELECCIONE Producto, suma (Ventas_cantidad) COMO Total_ventas DEL GRUPO de ventas POR Producto QUE TIENE suma (Ventas_cantidad)> 1000;

La salida producida es:

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

  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 obtienen de acuerdo con la condición aplicada. Por el contrario, la cláusula HAVING obtiene datos completos y luego la separación se realiza de acuerdo con la condición.
  3. Las funciones agregadas como min, sum, max, avg nunca pueden aparecer junto con la cláusula WHERE. Por el contrario, estas funciones pueden aparecer en la cláusula HAVING.
  4. La cláusula HAVING no se puede usar sin una instrucción SELECT. Por el contrario, WHERE se puede usar con SELECT, UPDATE, DELETE, etc.
  5. La cláusula WHERE se comporta como un filtro previo mientras que la cláusula HAVING actúa como filtro posterior.
  6. La cláusula WHERE cuando se usa con GROUP BY, precede a GROUP BY. Esto significa que WHERE filtra las filas antes de que se realicen 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 que la cláusula HAVING es popular. La cláusula HAVING puede funcionar de manera eficiente con funciones agregadas, mientras que WHERE no puede funcionar con funciones agregadas.