Unterschied zwischen Where- und Having-Klausel in SQL

Autor: Laura McKinney
Erstelldatum: 1 April 2021
Aktualisierungsdatum: 13 Kann 2024
Anonim
Group, Sort und Aggregation in SQL - SQL 7 ● Gehe auf SIMPLECLUB.DE/GO & werde #EinserSchüler
Video: Group, Sort und Aggregation in SQL - SQL 7 ● Gehe auf SIMPLECLUB.DE/GO & werde #EinserSchüler

Inhalt


WHERE- und HAVING-Klausel werden hauptsächlich in der Anweisung von SQL-Abfragen verwendet. Dadurch können wir die Kombination in der Ergebnisrelation durch die Verwendung eines bestimmten Prädikats einschränken. Der Hauptunterschied zwischen WHERE und HAVING besteht darin, dass die WHERE-Klausel die Bedingungen für die Auswahl des Tupel (Zeilen) aus den Beziehungen, einschließlich Join-Bedingungen, falls erforderlich. Andererseits spezifiziert die HAVING-Klausel eine Bedingung für die Gruppen ausgewählt werden, anstatt auf einzelne Tupel.

SQL steht für Strukturierte Abfragesprache; Es ist eine umfassende oder deklarative Datenbanksprache, die für den Zugriff auf die Daten aus den Datenbanken verwendet wird.

  1. Vergleichstabelle
  2. Definition
  3. Hauptunterschiede
  4. Fazit

Vergleichstabelle

VergleichsbasisWOHABEN
BasicIn Zeilenoperationen implementiert.Implementiert in Spaltenoperationen.
AngewendetEinzelne ReiheZusammengefasste Zeile oder Gruppen.
Daten abrufenEs werden nur die bestimmten Daten aus bestimmten Zeilen entsprechend der Bedingung abgerufen.Zuerst werden vollständige Daten abgerufen und dann entsprechend der 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 von ihnen.Kann nicht ohne SELECT-Anweisung verwendet werden.
Fungieren alsVorfilterNachfilter
GRUPPIERE NACHKommt nach WO.Kommt vor 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 Verknüpfen mit mehreren Tabellen zu beschreiben. Es wird nur dann der bestimmte Wert aus der Tabelle zurückgegeben, 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, oder und nicht in der WHERE - Klausel, die auch als Boolescher Wert Bedingung; Die Bedingung muss wahr sein, um die Tupel abzurufen. Bei den Operanden der logischen Konnektivausdrücke handelt es sich um Vergleichsoperatoren wie z <, <=, >, >=, =, und <>. Diese Vergleichsoperatoren vergleichen Zeichenfolgen und arithmetische Ausdrücke. Es kann in der verwendet werden WÄHLEN Anweisung sowie in UPDATE, LÖSCHEN Aussagen.


Nehmen wir ein Beispiel. Die nachstehende Tabelle mit der Bezeichnung „Der UmsatzTabelle besteht ausProdukt' und 'VerkaufszahlenAttribute.

Die folgende Abfrage ist zu schreiben, um die zu berechnen Gesamtumsatz von Telefon und Lautsprecher.

SELECT Product, sum (Sales_amount) AS Total_sales FROM Sales WHERE Produkt in (Telefon, Lautsprecher) GROUP BY Product;

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

Definition von Klausel

SQL bietet HAVING-Klausel die zusammen mit verwendet werden können GRUPPIERE NACH Klausel. Diese HAVING-Klausel hilft beim Abrufen der Werte für die Gruppen, die bestimmte Bedingungen erfüllen. Die WHERE-Klausel kann auch in Verbindung mit der HAVING-Klausel bei der Auswahl verwendet werden. Die WHERE-Klausel filtert die einzelne Zeile. Die Zeilen werden dann gruppiert und es werden Gesamtberechnungen durchgeführt. Die letzte HAVING-Klausel filtert die Gruppen.

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

Auch hier nehmen wir dasselbe Beispiel wie die WHERE-Klausel und betrachten dasselbeDer Umsatz' Tabelle. Wann wollen wir das berechnen? Gesamtumsatz von Telefon und Lautsprecher mit HAVING-Klausel werden wir die folgende Abfrage schreiben.

SELECT Product, sum (Sales_amount) AS Total_sales FROM Sales GROUP NACH Produkt MIT Produkt in (Telefon, Lautsprecher);

Die Abfrage erzeugt die folgende Ausgabe, wobei die Produkte zuerst abgerufen werden, dann die Aggregatfunktion (Summe) ausgeführt wird und zuletzt die Gruppen im Gegensatz zur WHERE-Klausel gefiltert werden.

Wenn wir nur die Produkte finden wollen, bei denen die Gesamtumsatz ist größer als 1000. Die Abfrage kann wie folgt geschrieben werden:

SELECT Product, sum (Sales_amount) AS Total_sales FROM Sales GROUP NACH Produkt HAVING sum (Sales_amount)> 1000;

Die produzierte Ausgabe ist:

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

  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 gemäß der angewendeten Bedingung abgerufen. Im Gegensatz dazu ruft die HAVING-Klausel ganze Daten ab, und die Trennung erfolgt entsprechend der Bedingung.
  3. Aggregatfunktionen wie min, sum, max, avg können niemals zusammen mit der WHERE-Klausel auftreten. Im Gegensatz dazu können diese Funktionen in der HAVING-Klausel erscheinen.
  4. Die HAVING-Klausel kann ohne eine SELECT-Anweisung nicht verwendet werden. Umgekehrt kann WHERE mit SELECT, UPDATE, DELETE usw. verwendet werden.
  5. Die WHERE-Klausel fungiert als Vorfilter, während die HAVING-Klausel als Nachfilter fungiert.
  6. Die WHERE-Klausel steht in Verbindung mit GROUP BY vor GROUP BY. Dies bedeutet, dass WHERE-Filterzeilen vor der Durchführung von Aggregatberechnungen erstellt werden. Auf der anderen Seite steht HAVING nach GROUP BY, dh es wird gefiltert, nachdem aggregierte Berechnungen durchgeführt wurden.

Fazit

Die WHERE- und die HAVING-Klausel funktionieren auf dieselbe 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.