Recommandé, 2021

Choix De L'Éditeur

Différence entre Where et Clause SQL

Les clauses WHERE et HAVING sont principalement utilisées dans l’énoncé des requêtes SQL. Celles-ci nous permettent de restreindre la combinaison dans la relation de résultat en utilisant un prédicat spécifique. La principale différence entre WHERE et HAVING est que la clause WHERE spécifie les conditions de sélection des n - uplets (lignes) dans les relations, y compris les conditions de jointure si nécessaire. D'autre part, la clause HAVING spécifie une condition sur les groupes en cours de sélection plutôt que sur des tuples individuels.

SQL signifie langage de requête structuré ; c'est un langage de base de données complet ou déclaratif utilisé pour accéder aux données des bases de données.

Tableau de comparaison

Base de comparaisonAYANT
De baseImplémenté dans les opérations de ligne.Implémenté dans les opérations de colonne.
Appliqué àUne rangéeLigne ou groupes résumés.
Récupération de donnéesIl récupère uniquement les données particulières à partir de lignes particulières en fonction de la condition.Dans un premier temps, les données complètes sont extraites puis séparées en fonction de la condition.
Fonctions d'agrégatNe peut pas apparaître dans la clause WHERE.Peut apparaître dans la clause HAVING.
Utilisé avecSELECT et d’autres instructions telles que UPDATE, DELETE ou l’un d’eux.Ne peut être utilisé sans une instruction SELECT.
Agir commePré-filtrePost-filtre
PAR GROUPEVient après OERE.Vient après avoir.

Définition de Clause Where

La clause SQL WHERE est utilisée pour décrire une condition au moment de récupérer les données d'une seule table ou en les associant à plusieurs tables. Il ne renvoie la valeur particulière de la table que si la condition donnée est remplie. La clause WHERE est utilisée pour imprégner les enregistrements et récupérer uniquement les enregistrements nécessaires.

SQL implémente également les connecteurs logiques et, ou et non dans la clause WHERE, également appelée condition booléenne ; la condition doit être vraie pour récupérer les n-uplets. Les opérandes des expressions de connectives logiques impliquent les opérateurs de comparaison tels que <, <=, >, > =, = et . Ces opérateurs de comparaison comparent des chaînes et des expressions arithmétiques. Il peut être utilisé dans l' instruction SELECT ainsi que dans les instructions UPDATE et DELETE .

Prenons un exemple. La table ci-dessous, nommée " Ventes ", comprend les attributs " Produit " et " Ventes_amount ".

La requête suivante doit être écrite pour calculer le Total_sales de téléphone et de haut-parleurs.

 SELECT Produit, somme (Sales_amount) AS Total_sales FROM Sales WHERE Produit dans ('Téléphone', 'Haut-parleurs') GROUP BY Produit; 

La sortie suivante est la sortie résultante où les lignes sont d'abord filtrées, les lignes de téléphone et de haut-parleur sont extraites, puis la fonction d'agrégation est exécutée.

Définition de clause clause

SQL fournit une clause HAVING qui peut être utilisée conjointement avec la clause GROUP BY . Cette clause HAVING aide à récupérer les valeurs des groupes qui remplissent certaines conditions. La clause WHERE peut également être utilisée conjointement avec la clause HAVING lors de la sélection. La clause WHERE filtre la ligne individuelle. Les lignes sont ensuite regroupées et des calculs d'agrégats sont effectués. Enfin, la clause HAVING filtre les groupes.

Il se comporte de la même manière que WHERE lorsque le mot clé GROUP BY n'est pas utilisé. Les fonctions de groupe telles que min, max, avg, sum et count ne peuvent apparaître que dans deux clauses: clause SELECT et clause HAVING. Il fournit une condition sur les n-uplets correspondant à chaque valeur du groupe d'attributs. Le seul ensemble d'enregistrements qui remplit la condition sera affiché comme résultat.

Ici aussi, nous prenons le même exemple que la clause WHERE et considérons le même tableau ' Ventes '. Lorsque nous voulons calculer le total de ventes de téléphones et de haut-parleurs à l'aide de la clause HAVING, nous écrivons la requête suivante.

 SELECT Produit, somme (Sales_amount) AS Total_sales FROM Sales GROUP BY Produit AYANT le produit en ('téléphone', 'Haut-parleurs'); 

La requête produit la sortie suivante dans laquelle les produits sont extraits en premier, puis la fonction d'agrégation (somme) est exécutée et enfin, les groupes sont filtrés, contrairement à la clause WHERE.

Lorsque nous voulons rechercher uniquement les produits pour lesquels Total_sales est supérieur à 1000. La requête peut être écrite comme suit :

 SELECT Produit, somme (Sales_amount) AS Total_sales DE Sales GROUPE PAR PRODUIT AYANT sum (Sales_amount)> 1000; 

La sortie produite est:

Ceci ne peut pas être effectué à l'aide de la clause WHERE malgré HAVING et génère un message d'erreur car la clause WHERE ne peut pas être utilisée avec des fonctions d'agrégat.

Principales différences entre Where et Have Clause

  1. La clause WHERE est utilisée dans les opérations de ligne et appliquée sur une seule ligne, tandis que la clause HAVING est utilisée dans les opérations de colonne et peut être appliquée aux lignes ou aux groupes résumés.
  2. Dans la clause WHERE, les données souhaitées sont extraites en fonction de la condition appliquée. En revanche, la clause HAVING récupère des données entières, puis la séparation est effectuée en fonction de la condition.
  3. Les fonctions d'agrégation telles que min, sum, max, avg ne peuvent jamais apparaître avec la clause WHERE. Par contre, ces fonctions peuvent apparaître dans la clause HAVING.
  4. La clause HAVING ne peut pas être utilisée sans une instruction SELECT. Inversement, WHERE peut être utilisé avec SELECT, UPDATE, DELETE, etc.
  5. La clause WHERE se comporte comme un pré-filtre tandis que la clause HAVING agit comme un post-filtre.
  6. La clause WHERE, lorsqu'elle est utilisée avec GROUP BY, vient avant GROUP BY. Cela signifie que WHERE filtre les lignes avant que les calculs d'agrégats soient effectués. D'autre part, HAVING vient après GROUP BY, ce qui signifie qu'il filtre après les calculs d'agrégats.

Conclusion

Les clauses WHERE et HAVING fonctionnent de la même manière, à l'exception de la fonctionnalité supplémentaire pour laquelle la clause HAVING est populaire. La clause HAVING peut fonctionner efficacement avec des fonctions d'agrégat, tandis que WHERE ne peut pas être utilisé avec des fonctions d'agrégat.

Top