Verschil tussen waar en clausule in SQL

Schrijver: Laura McKinney
Datum Van Creatie: 1 April 2021
Updatedatum: 10 Kunnen 2024
Anonim
Word een SQL baas: JOINs
Video: Word een SQL baas: JOINs

Inhoud


WHERE en HAVING-clausule worden voornamelijk gebruikt in de instructie SQL-query's. Hiermee kunnen we de combinatie in de resultaatrelatie beperken door een specifiek predicaat te gebruiken. Het grote verschil tussen WHERE en HAVING is dat de WHERE-clausule de voorwaarden voor het selecteren van de tupels (rijen) van de relaties, inclusief join-voorwaarden indien nodig. Aan de andere kant geeft de clausule HAVING een voorwaarde op de groepen wordt geselecteerd in plaats van op individuele tupels.

SQL betekent Structured Query Language; het is een uitgebreide of declaratieve databasetaal die wordt gebruikt voor toegang tot de gegevens uit de databases.

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijkingWAARHEBBEN
basis-Geïmplementeerd in rijbewerkingen.Geïmplementeerd in kolombewerkingen.
Toegepast opEnkele rijSamengevatte rij of groepen.
Gegevens ophalenHet haalt alleen de specifieke gegevens uit bepaalde rijen op volgens de voorwaarde.Eerst worden volledige gegevens opgehaald en vervolgens gescheiden volgens de voorwaarde.
Verzamelde functiesKan niet worden weergegeven in de WHERE-clausule.Kan worden weergegeven in de clausule HAVING.
Gebruikt metSELECT en andere uitspraken zoals UPDATE, DELETE of een van beide.Kan niet worden gebruikt zonder een SELECT-instructie.
Fungeren alsPre-filterPost-filter
GROEPEN OPKomt na WAAR.Komt vóór het hebben.


Definitie van Where-clausule

De SQL WAAR clausule wordt gebruikt om een ​​voorwaarde te beschrijven op het moment dat de gegevens uit een enkele tabel worden opgehaald of door deel te nemen aan meerdere tabellen. Het retourneert alleen de specifieke waarde uit de tabel als aan de gegeven voorwaarde is voldaan. WAAR clausule wordt gebruikt om de records te doordringen en alleen de benodigde records op te halen.

SQL implementeert ook de logische verbindingen en, of en niet in de WHERE-clausule die ook bekend staat als de boolean staat; de voorwaarde moet waar zijn om de tupels op te halen. De operanden van de logische verbindingsuitdrukkingen omvatten de vergelijkingsoperatoren zoals <, <=, >, >=, =en <>. Deze vergelijkingsoperatoren vergelijken tekenreeksen en rekenkundige uitdrukkingen. Het kan worden gebruikt in de SELECT verklaring, evenals in UPDATE, DELETE statements.


Laten we een voorbeeld nemen. De onderstaande tabel heeft de naam ‘verkoop'Tabel bestaat uit'Product'En'Sales_amount‘Attributen.

De volgende vraag moet worden geschreven om de te berekenen Totale verkoop van telefoon en luidsprekers.

SELECT Product, som (Sales_amount) AS Total_sales FROM Sales WHERE Product in (Telefoon, Luidsprekers) GROUP BY Product;

De volgende uitvoer is de resulterende uitvoer waarbij de rijen eerst worden gefilterd, telefoon- en luidsprekerrijen worden opgehaald en vervolgens de aggregatiefunctie wordt uitgevoerd.

Definitie van clausule

SQL biedt HEB clausule die kan worden gebruikt in combinatie met GROEPEN OP clausule. Deze HAVING-clausule helpt bij het ophalen van de waarden voor de groepen die aan bepaalde voorwaarden voldoen. WHERE-component kan ook worden gebruikt in combinatie met HAVING-component tijdens selectie, WHERE-component filtert de afzonderlijke rij. De rijen worden vervolgens gegroepeerd en geaggregeerde berekeningen worden uitgevoerd. Eindelijk filteren de groepen.

Het gedraagt ​​zich op dezelfde manier als WHERE wanneer het trefwoord GROUP BY niet wordt gebruikt. De groepsfuncties zoals min, max, avg, sum en count kunnen in slechts twee clausules worden weergegeven: SELECT en HAVING-clausule. Het geeft een voorwaarde voor de tupels die overeenkomen met elke waarde in de groep attributen. De enige set records die aan de voorwaarde voldoet, wordt als resultaat weergegeven.

Ook hier nemen we hetzelfde voorbeeld als de WHERE-clausule en beschouwen we hetzelfde ‘verkoop' tafel. Wanneer we de willen berekenen Totale verkoop van telefoon en luidsprekers met behulp van clausule HAVING, zullen we de volgende vraag schrijven.

SELECT Product, som (Sales_amount) AS Total_sales FROM Verkoopgroep PER Product met product in (telefoon, luidsprekers);

De query produceert de volgende uitvoer waarbij de producten eerst worden opgehaald, waarna de aggregatiefunctie (som) wordt uitgevoerd en ten slotte groepen worden gefilterd in tegenstelling tot de WHERE-clausule.

Wanneer we alleen die producten willen vinden waar de Totale verkoop is groter dan 1000. De zoekopdracht kan worden geschreven als:

SELECT Product, som (Sales_amount) AS Totaal_sales FROM Verkoopgroep OP Product met som (Sales_amount)> 1000;

De geproduceerde output is:

Dit kan ondanks HAVING niet worden uitgevoerd met de WHERE-component en het genereert een fout omdat de WHERE-component niet kan worden gebruikt met geaggregeerde functies.

  1. WAAR clausule wordt gebruikt in rijbewerkingen en toegepast op een enkele rij, terwijl clausule HAVING wordt gebruikt in kolombewerkingen en kan worden toegepast op samengevatte rijen of groepen.
  2. In de WHERE-clausule worden de gewenste gegevens opgehaald volgens de toegepaste voorwaarde. In tegenstelling, HEB clausule volledige gegevens ophalen, wordt scheiding uitgevoerd volgens de voorwaarde.
  3. Geaggregeerde functies zoals min, som, max, avg kunnen nooit samen met de WHERE-component worden weergegeven. In tegenstelling tot deze functies kunnen deze worden weergegeven in de clausule HAVING.
  4. HAVING-clausule kan niet worden gebruikt zonder een SELECT-instructie. Omgekeerd kan WHERE worden gebruikt met SELECT, UPDATE, DELETE, etc.
  5. WHERE-clausule gedraagt ​​zich als een voorfilter, terwijl HAVING-clausule werkt als een postfilter.
  6. WAAR clausule bij gebruik met GROUP BY, komt voor GROUP BY. Dit betekent dat WHERE rijen filtert voordat statistische berekeningen worden uitgevoerd. Aan de andere kant komt HAVING na GROUP BY, wat betekent dat het filtert nadat geaggregeerde berekeningen zijn uitgevoerd.

Gevolgtrekking

WHERE en HAVING-clausule werken op dezelfde manier, behalve de extra functie waarvoor HAVING-clausule populair is. HAVING-clausule kan efficiënt werken met geaggregeerde functies terwijl WHERE niet kan worden bediend met geaggregeerde functies.