Εισαγωγή της ρήτρας 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:
Αυτό παράγει έναν κατάλογο τεσσάρων προϊόντων, όπως φαίνεται παρακάτω:
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.