Επιλογή δεδομένων εντός εύρους σε SQL

Εισαγωγή της ρήτρας WHERE και BETWEEN

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

Ας εξετάσουμε ένα παράδειγμα βασισμένο στην κοινώς χρησιμοποιούμενη βάση δεδομένων Northwind, η οποία συχνά συνοδεύεται από προϊόντα βάσης δεδομένων ως οδηγό.

Ακολουθεί ένα απόσπασμα από τον πίνακα προϊόντων της βάσης δεδομένων:

Πίνακας προϊόντων
Κωδικός προϊόντος Ονομα προϊόντος SupplierID QuantityPerUnit Τιμή μονάδας UnitsInStock
1 Chai 1 10 κουτιά x 20 σακούλες 18.00 39
2 Chang 1 24 - 12 οζ φιάλες 19.00 17
3 Σιρόπι γλυκάνισου 1 12 - φιάλες των 550 ml 10.00 13
4 Ο καπνιστής Cajun του σεφ του Αντόνιου 2 Δοχεία 48 - 6 οζ 22.00 53
5 Σεμινάριο γκουμπού του αρχιμάγειρα Αντόνιο 2 36 κιβώτια 21.35 0
6 Το Boysenberry της γιαγιάς απλώνεται 3 Δοχεία 12 - 8 οζ 25.00 120
7 Τα βιολογικά αποξηραμένα αχλάδια του θείου Bob 3 12 - 1 λίβρες pkgs. 30.00 15

Απλές οριακές συνθήκες

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


Πρώτον, ας δοκιμάσουμε ένα απλό ερώτημα που μας επιτρέπει να εξαγάγουμε μια λίστα με όλα τα προϊόντα της βάσης δεδομένων που έχουν UnitPrice μεγαλύτερη από 20.00:

SELECT ProductName, UnitPrice ΑΠΟ προϊόντα WHERE UnitPrice> 20.00

Αυτό παράγει έναν κατάλογο τεσσάρων προϊόντων, όπως φαίνεται παρακάτω:

ProductName UnitPrice ------- -------- Chef Anton's Gumbo Mix 21.35 Σεφ του Cajun του Αντόνιου Καρυκεύματος του Αμυγδαλού 22.00 Το Βαγιαντούρι της Βρετανίας Spread 25.00 Οργανικά Αποξηραμένα Αχλάδια του Θείους Μπόμπ 30.00

Μπορούμε επίσης να χρησιμοποιήσουμε τη ρήτρα WHERE με τις τιμές των συμβολοσειρών. Αυτό αντιστοιχεί ουσιαστικά στους χαρακτήρες σε αριθμούς, με το Α να αντιπροσωπεύει την τιμή 1 και το Z που αντιπροσωπεύουν την τιμή 26. Για παράδειγμα, μπορούμε να δείξουμε όλα τα προϊόντα με ονόματα που αρχίζουν με U, V, W, X, Y ή Z με το ακόλουθο ερώτημα:

SELECT Όνομα_προϊόντος FROM PRODUCTS WHERE ProductName> = 'T'

Ποιο παράγει το αποτέλεσμα:

ProductName ------- Οργανικά αποξηραμένα αχλάδια του θείου Bob

Εκφράζοντας εύρη τιμών χρησιμοποιώντας όρια

Η ρήτρα WHERE μας επιτρέπει επίσης να εφαρμόσουμε μια συνθήκη εύρους σε μια τιμή χρησιμοποιώντας πολλαπλές συνθήκες. Για παράδειγμα, αν θέλαμε να λάβουμε την ερώτησή μας παραπάνω και να περιορίσουμε τα αποτελέσματα σε προϊόντα με τιμές μεταξύ 15.00 και 20.00, θα μπορούσαμε να χρησιμοποιήσουμε το ακόλουθο ερώτημα:

SELECT Όνομα_προϊόντος, UnitPrice ΑΠΟ προϊόντα WHERE UnitPrice> 15.00 ΚΑΙ UnitPrice <20.00

Αυτό παράγει το αποτέλεσμα που φαίνεται παρακάτω:

ProductName UnitPrice ------- -------- Chai 18.00 Τσανγκ 19.00

Εκφράζοντας περιοχές με ΜΕΓΑΛΟ

Η SQL παρέχει επίσης μια σύντομη συντομογραφία BETWEEN που μειώνει τον αριθμό συνθηκών που πρέπει να συμπεριλάβουμε και καθιστά το ερώτημα πιο ευανάγνωστο. Για παράδειγμα, αντί να χρησιμοποιήσουμε τις δύο παραπάνω συνθήκες WHERE, μπορούμε να εκφράσουμε το ίδιο ερώτημα με:

SELECT Όνομα_προϊόντος, UnitPrice ΑΠΟ προϊόντα WHERE UnitPrice ΜΕΤΑΞΥ 15.00 ΚΑΙ 20.00

Όπως συμβαίνει και με τις λοιπές ρήτρες των όρων μας, BETWEEN λειτουργεί επίσης με τις τιμές των συμβολοσειρών. Αν θέλαμε να δημιουργήσουμε μια λίστα με όλες τις χώρες που αρχίζουν με V, W ή X, θα μπορούσαμε να χρησιμοποιήσουμε το ερώτημα:

SELECT PRODUCTName FROM PRODUCTS WHERE Όνομα προϊόντος ΜΕΤΑΞΥ "Α" και "D"

Ποιο παράγει το αποτέλεσμα:

ProductName ------- Σιρόπι γλυκάνισου Chai Chang σεφ μαγειρέματος του γκουάμπο του Αντόχου

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

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