Empfohlen, 2024

Tipp Der Redaktion

Unterschied zwischen Where und Have-Klausel in SQL

Die Klausel WHERE und HAVING wird hauptsächlich in der Anweisung von SQL-Abfragen verwendet. Diese ermöglichen es uns, die Kombination in der Ergebnisbeziehung durch Verwendung eines bestimmten Prädikats einzuschränken. Der Hauptunterschied zwischen WHERE und HAVING besteht darin, dass die WHERE-Klausel die Bedingungen für die Auswahl der Tupel (Zeilen) aus den Beziehungen angibt, einschließlich der Join-Bedingungen, falls erforderlich. Andererseits gibt die HAVING-Klausel eine Bedingung für die ausgewählten Gruppen und nicht für einzelne Tupel an.

SQL steht für Structured Query Language . es ist eine umfassende oder deklarative Datenbanksprache, die für den Zugriff auf die Daten aus den Datenbanken verwendet wird.

Vergleichstabelle

Basis zum VergleichWOHERHABEN
BasicIn Zeilenoperationen implementiert.In Spaltenoperationen implementiert.
AngewendetEinzelne ReiheZusammengefasste Reihe oder Gruppen.
DatenabrufEs ruft nur die bestimmten Daten aus bestimmten Zeilen gemäß der Bedingung ab.Zuerst werden vollständige Daten abgerufen und dann nach Bedingung getrennt.
AggregatfunktionenKann nicht in der WHERE-Klausel erscheinen.Kann in der HAVING-Klausel erscheinen.
Benutzt mitSELECT und andere Anweisungen wie UPDATE, DELETE oder eine davon.Kann nicht ohne SELECT-Anweisung verwendet werden.
Fungieren alsVorfilterNachfilter
GRUPPIERE NACHKommt nach WO.Kommt nach dem HABEN.

Definition der Where-Klausel

Die SQL- WHERE-Klausel wird verwendet, um eine Bedingung zum Zeitpunkt des Abrufs der Daten aus einer einzelnen Tabelle oder durch Verbinden mit mehreren Tabellen zu beschreiben. Sie gibt den bestimmten Wert nur dann aus der Tabelle zurück, wenn die angegebene Bedingung erfüllt ist. Die WHERE-Klausel wird verwendet, um die Datensätze zu durchdringen und nur die erforderlichen Datensätze abzurufen.

SQL implementiert auch die logischen Verbindungen und und oder und nicht in der WHERE-Klausel, die auch als boolesche Bedingung bezeichnet werden. Die Bedingung muss erfüllt sein, um die Tupel abzurufen. Die Operanden der logischen Verbindungsausdrücke umfassen die Vergleichsoperatoren wie <, <=, >, > =, = und . Diese Vergleichsoperatoren vergleichen Zeichenfolgen und arithmetische Ausdrücke. Sie kann in der SELECT- Anweisung sowie in UPDATE- DELETE- Anweisungen verwendet werden.

Nehmen wir ein Beispiel. Die unten gezeigte Tabelle mit dem Namen " Sales " enthält die Attribute " Product " und " Sales_amount ".

Die folgende Abfrage soll geschrieben werden, um den Total_sales von Telefon und Sprechern zu berechnen.

 SELECT Produkt, Summe (Sales_amount) AS Total_sales FROM Verkäufe WO Produkt in ("Telefon", "Lautsprecher") GROUP BY Product; 

Die folgende Ausgabe ist die resultierende Ausgabe, bei der die Zeilen zuerst gefiltert werden, Telefon- und Sprecherzeilen abgerufen werden, und dann die Aggregatfunktion ausgeführt wird.

Definition von Klausel

SQL bietet eine HAVING-Klausel, die zusammen mit der GROUP BY- Klausel verwendet werden kann. Diese HAVING-Klausel hilft beim Abrufen der Werte für die Gruppen, die bestimmte Bedingungen erfüllen. Die WHERE-Klausel kann bei der Auswahl auch in Verbindung mit der HAVING-Klausel verwendet werden, die WHERE-Klausel filtert die einzelne Zeile. Die Zeilen werden dann gruppiert, und es werden Aggregatberechnungen durchgeführt. Zuletzt filtern die HAVING-Klauseln die Gruppen.

Es verhält sich wie WHERE, wenn das GROUP BY-Schlüsselwort nicht verwendet wird. Die Gruppenfunktionen wie min, max, avg, sum und count können nur in zwei Klauseln enthalten sein: SELECT- und HAVING-Klausel. Sie liefert eine Bedingung für die Tupel, die jedem Wert in der Attributgruppe entsprechen. Die einzige Gruppe von Datensätzen, die die Bedingung erfüllt, wird als Ergebnis angezeigt.

Auch hier nehmen wir dasselbe Beispiel wie die WHERE-Klausel und betrachten dieselbe ' Sales' -Tabelle. Wenn wir den Total_sales von Telefon und Lautsprechern mithilfe der HAVING-Klausel berechnen möchten, schreiben wir die folgende Abfrage.

 SELECT Produkt, Summe (Sales_amount) AS Total_sales FROM Umsatzgruppe NACH Produkt HABEN Produkt in ('Telefon', 'Lautsprecher'); 

Die Abfrage erzeugt die folgende Ausgabe, bei der die Produkte zuerst abgerufen werden. Anschließend wird die Aggregatfunktion (Summe) ausgeführt und die letzten Gruppen werden im Gegensatz zur WHERE-Klausel gefiltert.

Wenn nur Produkte gefunden werden sollen, bei denen Total_sales größer als 1000 ist. Die Abfrage kann wie folgt geschrieben werden:

 SELECT Produkt, Summe (Sales_amount) AS Total_sales FROM Umsatzgruppe NACH Product HAVING-Summe (Sales_amount)> 1000; 

Die produzierte Ausgabe ist:

Dies kann trotz HAVING nicht mit der WHERE-Klausel durchgeführt werden und generiert eine Fehlermeldung, da die WHERE-Klausel nicht mit Aggregatfunktionen verwendet werden kann.

Hauptunterschiede zwischen wo und Klausel

  1. Die WHERE-Klausel wird in Zeilenoperationen verwendet und auf eine einzelne Zeile angewendet, während die HAVING-Klausel in Spaltenoperationen verwendet wird und auf zusammengefasste Zeilen oder Gruppen angewendet werden kann.
  2. In der WHERE-Klausel werden die gewünschten Daten entsprechend der angewendeten Bedingung abgerufen. Im Gegensatz dazu holt die HAVING-Klausel ganze Daten, dann erfolgt die Trennung entsprechend der Bedingung.
  3. Aggregatfunktionen wie min, sum, max, avg können niemals zusammen mit der WHERE-Klausel angezeigt werden. Im Gegensatz dazu können diese Funktionen in der HAVING-Klausel erscheinen.
  4. Die HAVING-Klausel kann nicht ohne eine SELECT-Anweisung verwendet werden. Umgekehrt kann WHERE mit SELECT, UPDATE, DELETE usw. verwendet werden.
  5. Die WHERE-Klausel verhält sich als Vorfilter, während die HAVING-Klausel als Nachfilter fungiert.
  6. Wenn die WHERE-Klausel mit GROUP BY verwendet wird, kommt sie vor GROUP BY. Dies bedeutet, dass WHERE Zeilen vor der Durchführung von Aggregatberechnungen filtern. Auf der anderen Seite kommt HAVING nach GROUP BY, was bedeutet, dass es nach der Durchführung von Aggregatberechnungen gefiltert wird.

Fazit

Die WHERE- und HAVING-Klausel funktioniert auf die gleiche Weise, mit Ausnahme der zusätzlichen Funktion, für die die HAVING-Klausel beliebt ist. Die HAVING-Klausel kann effizient mit Aggregatfunktionen arbeiten, während WHERE nicht mit Aggregatfunktionen betrieben werden kann.

Top