Συνιστάται, 2024

Επιλογή Συντάκτη

Διαφορά μεταξύ του όρου και της ρήτρας στην SQL

Όπου η ρήτρα WHERE και HAVING χρησιμοποιούνται κυρίως στη δήλωση των ερωτημάτων SQL, αυτές μας επιτρέπουν να περιορίσουμε τον συνδυασμό στη σχέση αποτελεσμάτων χρησιμοποιώντας ένα συγκεκριμένο κατηγόρημα. Η κύρια διαφορά μεταξύ WHERE και HAVING είναι ότι η ρήτρα WHERE καθορίζει τις προϋποθέσεις για την επιλογή των πλειάδων (σειρών) από τις σχέσεις, συμπεριλαμβανομένων των συνθηκών σύνδεσης εάν χρειάζεται. Από την άλλη πλευρά, η ρήτρα HAVING ορίζει μια προϋπόθεση για τις ομάδες που επιλέγονται αντί για τις επιμέρους πλειάδες.

Το SQL αντιπροσωπεύει Δομημένη γλώσσα ερωτήματος . είναι μια περιεκτική ή δηλωτική γλώσσα βάσης δεδομένων που χρησιμοποιείται για την πρόσβαση στα δεδομένα από τις βάσεις δεδομένων.

Συγκριτικό διάγραμμα

Βάση σύγκρισηςΟΠΟΥHAVING
ΒασικόςΕφαρμογή σε εργασίες γραμμών.Εφαρμόζεται σε λειτουργίες στήλης.
Εφαρμόζεται σεΜονή σειράΣυγκεντρωμένη σειρά ή ομάδες.
Ανάκτηση δεδομένωνΛαμβάνει μόνο τα συγκεκριμένα δεδομένα από συγκεκριμένες σειρές ανάλογα με την κατάσταση.Αρχικά, τα πλήρη δεδομένα λαμβάνονται και διαχωρίζονται ανάλογα με την κατάσταση.
Συγκεντρωτικές λειτουργίεςΔεν είναι δυνατή η εμφάνιση της ρήτρας WHERE.Μπορεί να εμφανιστεί στη ρήτρα HAVING.
Χρησιμοποιείται μεSELECT και άλλες δηλώσεις όπως UPDATE, DELETE ή οποιαδήποτε από αυτές.Δεν μπορεί να χρησιμοποιηθεί χωρίς μια δήλωση SELECT.
Φέρομαι σανΠρο-φιλτράρισμαΜετά τη διήθηση
GROUP BYΈρχεται μετά από WHERE.Έρχεται μετά από HAVING.

Ορισμός της ρήτρας Where

Η ρήτρα SQL WHERE χρησιμοποιείται για να περιγράψει μια κατάσταση κατά τη στιγμή της ανάκτησης των δεδομένων από έναν μόνο πίνακα ή με την ένωση με πολλαπλούς πίνακες. Επιστρέφει μόνο τη συγκεκριμένη τιμή από τον πίνακα εάν πληρούται η δεδομένη συνθήκη. WHERE η ρήτρα χρησιμοποιείται για να διαπεράσει τα αρχεία και να ανακτήσει μόνο τα απαραίτητα αρχεία.

Το SQL υλοποιεί επίσης τους λογικούς συνδέσμους και, ή και όχι στη ρήτρα WHERE, που είναι επίσης γνωστή ως η κατάσταση boolean . η συνθήκη πρέπει να ισχύει για την ανάκτηση των πλειάδων. Οι τελεστές των εκφράσεων των λογικών συνδετήρων περιλαμβάνουν τους χειριστές σύγκρισης όπως <, <=, >, > =, =, και . Αυτοί οι χειριστές σύγκρισης συγκρίνουν τις συμβολοσειρές και τις αριθμητικές εκφράσεις. Μπορεί να χρησιμοποιηθεί στη δήλωση SELECT, καθώς και στις δηλώσεις UPDATE, DELETE .

Ας πάρουμε ένα παράδειγμα. Ο παρακάτω πίνακας που ονομάζεται πίνακας " Πωλήσεις " αποτελείται από τα χαρακτηριστικά " Προϊόν " και " Ποιότητα πωλήσεων ".

Το παρακάτω ερώτημα θα πρέπει να γραφεί για να υπολογίσετε το Total_sales του τηλεφώνου και των ομιλητών.

 SELECT Προϊόν, άθροισμα (Sales_amount) AS Total_sales FROM Πωλήσεις WHERE Προϊόντος σε ('Τηλέφωνο', 'Ομιλητές') ΟΜΑΔΑ ΚΑΤΑ ΠΡΟΪΟΝ; 

Μετά την έξοδο είναι η προκύπτουσα έξοδος όπου φιλτράρονται πρώτα οι σειρές, ανακτώνται οι σειρές του τηλεφώνου και των ηχείων, τότε εκτελείται η συνάθροιση λειτουργίας.

Ορισμός της ρήτρας

Η SQL παρέχει ρήτρα HAVING η οποία μπορεί να χρησιμοποιηθεί σε συνδυασμό μαζί με τη ρήτρα GROUP BY . Αυτή η ρήτρα HAVING βοηθά στην ανάκτηση των τιμών για τις ομάδες που πληρούν ορισμένες προϋποθέσεις. WHERE η ρήτρα μπορεί επίσης να χρησιμοποιηθεί σε συνδυασμό με την ρήτρα HAVING κατά την επιλογή, WHERE η ρήτρα φιλτράρει τη μεμονωμένη σειρά. Στη συνέχεια, οι σειρές ομαδοποιούνται και εκτελούνται συνολικοί υπολογισμοί, επιτέλους η ρήτρα HAVING φιλτράρει τις ομάδες.

Συμπεριφέρεται με τον ίδιο τρόπο όπως WHERE όταν η λέξη GROUP BY δεν χρησιμοποιείται. Οι λειτουργίες του Ομίλου, όπως τα min, max, avg, sum και count, μπορούν να εμφανιστούν μόνο σε δύο ρήτρες: SELECT και HAVING. Παρέχει μια προϋπόθεση για τις πλειάδες που αντιστοιχούν σε κάθε τιμή στην ομάδα χαρακτηριστικών. Το μόνο σύνολο εγγραφών που ικανοποιεί την κατάσταση θα εμφανιστεί ως αποτέλεσμα.

Εδώ λαμβάνουμε το ίδιο παράδειγμα με τη ρήτρα WHERE και εξετάζουμε τον ίδιο πίνακα « Πωλήσεις ». Όταν θέλουμε να υπολογίσουμε το Total_sales του τηλεφώνου και των ηχείων με τη χρήση της ρήτρας HAVING, θα γράψουμε το ακόλουθο ερώτημα.

 SELECT Προϊόν, άθροισμα (Sales_amount) AS Total_sales FROM ΟΜΑΔΑ ΠΩΛΗΣΕΩΝ ΑΝΑ ΠΡΟΪΟΝ HAVING Προϊόν σε ('τηλέφωνο', 'Ομιλητές')? 

Το ερώτημα παράγει την ακόλουθη έξοδο όπου τα προϊόντα ανακτώνται πρώτα, στη συνέχεια πραγματοποιείται η αθροιστική συνάρτηση (άθροισμα) και οι τελευταίες ομάδες φιλτράρονται σε αντίθεση με την ρήτρα WHERE.

Όταν θέλουμε να βρούμε μόνο εκείνα τα προϊόντα όπου το Total_sales είναι μεγαλύτερο από 1000. Το ερώτημα μπορεί να γραφτεί ως:

 SELECT Προϊόν, άθροισμα (Sales_amount) AS Total_sales FROM ΟΜΑΔΑ ΠΩΛΗΣΕΩΝ ΑΝΑ ΑΥΞΗΣΗ Προϊόντος HAVING (Ποσότητα Πωλήσεων)> 1000; 

Η παραγόμενη παραγωγή είναι:

Αυτό δεν μπορεί να εκτελεστεί χρησιμοποιώντας την παράμετρο WHERE παρά το HAVING και δημιουργεί ένα μήνυμα σφάλματος επειδή η ρήτρα WHERE δεν μπορεί να χρησιμοποιηθεί με συναθροιστικές λειτουργίες.

Βασικές διαφορές μεταξύ του σημείου και της ρήτρας

  1. Η συνάρτηση WHERE χρησιμοποιείται σε γραμμές γραμμών και εφαρμόζεται σε μία μόνο σειρά ενώ η ρήτρα HAVING χρησιμοποιείται στις λειτουργίες της στήλης και μπορεί να εφαρμοστεί σε συνοπτικές σειρές ή ομάδες.
  2. Στη ρήτρα WHERE λαμβάνονται τα επιθυμητά δεδομένα σύμφωνα με την εφαρμοζόμενη κατάσταση. Αντίθετα, η ρήτρα HAVING ρίχνει ολόκληρα δεδομένα, ο διαχωρισμός γίνεται σύμφωνα με την κατάσταση.
  3. Συγκεντρωτικές λειτουργίες όπως min, sum, max, avg δεν μπορούν ποτέ να εμφανιστούν μαζί με την ρήτρα WHERE. Αντιθέτως, αυτές οι λειτουργίες μπορούν να εμφανιστούν στη ρήτρα HAVING.
  4. Η ρήτρα HAVING δεν μπορεί να χρησιμοποιηθεί χωρίς μια δήλωση SELECT. Αντίθετα, WHERE μπορεί να χρησιμοποιηθεί με SELECT, UPDATE, DELETE, κλπ.
  5. WHERE η ρήτρα συμπεριφέρεται ως προφίλτρο, ενώ η ρήτρα HAVING λειτουργεί ως μετα-φίλτρο.
  6. WHERE ρήτρα, όταν χρησιμοποιείται με GROUP BY, έρχεται πριν GROUP BY. Αυτό υποδηλώνει ότι οι σειρές φίλτρων WHERE πριν από την εκτέλεση των συνολικών υπολογισμών. Από την άλλη πλευρά, HAVING έρχεται μετά από GROUP BY, που σημαίνει ότι φιλτράρει μετά από αθροιστικούς υπολογισμούς που εκτελούνται.

συμπέρασμα

WHERE και η ρήτρα HAVING λειτουργεί με τον ίδιο τρόπο εκτός από το πρόσθετο χαρακτηριστικό που η ρήτρα HAVING είναι δημοφιλής για. Η ρήτρα HAVING μπορεί να λειτουργήσει αποτελεσματικά με συναρτήσεις, ενώ WHERE δεν μπορεί να λειτουργήσει με συναρτήσεις.

Top