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 comparaison | OÙ | AYANT |
---|---|---|
De base | Implémenté dans les opérations de ligne. | Implémenté dans les opérations de colonne. |
Appliqué à | Une rangée | Ligne ou groupes résumés. |
Récupération de données | Il 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égat | Ne peut pas apparaître dans la clause WHERE. | Peut apparaître dans la clause HAVING. |
Utilisé avec | SELECT et d’autres instructions telles que UPDATE, DELETE ou l’un d’eux. | Ne peut être utilisé sans une instruction SELECT. |
Agir comme | Pré-filtre | Post-filtre |
PAR GROUPE | Vient 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 ".
SELECT Produit, somme (Sales_amount) AS Total_sales FROM Sales WHERE Produit dans ('Téléphone', 'Haut-parleurs') GROUP BY Produit;
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
- 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.
- 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.
- 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.
- La clause HAVING ne peut pas être utilisée sans une instruction SELECT. Inversement, WHERE peut être utilisé avec SELECT, UPDATE, DELETE, etc.
- La clause WHERE se comporte comme un pré-filtre tandis que la clause HAVING agit comme un post-filtre.
- 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.