Τι είναι ο όρος στο MySQL;
WHERE Clause in MySQL είναι μια λέξη-κλειδί που χρησιμοποιείται για τον καθορισμό των ακριβών κριτηρίων δεδομένων ή σειρών που θα επηρεαστούν από την καθορισμένη δήλωση SQL. Ο όρος WHERE μπορεί να χρησιμοποιηθεί με δηλώσεις SQL όπως INSERT, UPDATE, SELECT και DELETE για να φιλτράρετε εγγραφές και να εκτελέσετε διάφορες λειτουργίες στα δεδομένα.
Εξετάσαμε πώς να ζητάμε δεδομένα από μια βάση δεδομένων χρησιμοποιώντας τη δήλωση SELECT στο προηγούμενο σεμινάριο. Η δήλωση SELECT επέστρεψε όλα τα αποτελέσματα από τον πίνακα ερωτημένων βάσεων δεδομένων.
Ωστόσο, είναι φορές που θέλουμε να περιορίσουμε τα αποτελέσματα του ερωτήματος σε μια καθορισμένη κατάσταση. Ο όρος WHERE στη SQL είναι βολικός σε τέτοιες καταστάσεις.
ΠΟΥ υπάρχει η σύνταξη
Η βασική σύνταξη για τον όρο WHERE όταν χρησιμοποιείται σε μια δήλωση MySQL SELECT WHERE έχει ως εξής.
SELECT * FROM tableName WHERE condition;
ΕΔΩ
- "SELECT * FROM tableName" είναι η τυπική δήλωση SELECT
- Το "WHERE" είναι η λέξη-κλειδί που περιορίζει το επιλεγμένο σύνολο αποτελεσμάτων ερωτημάτων και το "condition" είναι το φίλτρο που θα εφαρμοστεί στα αποτελέσματα. Το φίλτρο θα μπορούσε να είναι ένα εύρος, μία τιμή ή ένα δευτερεύον ερώτημα.
Ας δούμε τώρα ένα πρακτικό παράδειγμα .
Ας υποθέσουμε ότι θέλουμε να λάβουμε τα προσωπικά στοιχεία ενός μέλους από τον πίνακα μελών, δεδομένου του αριθμού μέλους 1, θα χρησιμοποιήσουμε το ακόλουθο σενάριο για να το επιτύχουμε.
SELECT * FROM `members` WHERE `membership_number` = 1;
Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL στο "myflixdb" θα έχει τα ακόλουθα αποτελέσματα.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
ΠΟΥ συνδυάζεται η ρήτρα με - ΚΑΙ ΛΟΓΙΚΟ Χειριστή
Η συνθήκη WHERE στη MySQL όταν χρησιμοποιείται μαζί με τον λογικό τελεστή AND, εκτελείται μόνο εάν πληρούνται όλα τα καθορισμένα κριτήρια φίλτρου. Ας δούμε τώρα ένα πρακτικό παράδειγμα - Ας υποθέσουμε ότι θέλουμε να πάρουμε μια λίστα με όλες τις ταινίες της κατηγορίας 2 που κυκλοφόρησαν το 2008, θα χρησιμοποιούσαμε το σενάριο που φαίνεται παρακάτω για να το επιτύχουμε.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL έναντι του "myflixdb" παράγει τα ακόλουθα αποτελέσματα.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
ΠΟΥ συνδυάζεται η ρήτρα με - Ή ΛΟΓΙΚΟ χειριστή
Ο όρος WHERE όταν χρησιμοποιείται μαζί με τον τελεστή OR, εκτελείται μόνο εάν πληρούται κάποιο ή ολόκληρο το καθορισμένο κριτήριο φίλτρου. Το παρακάτω σενάριο λαμβάνει όλες τις ταινίες είτε στην κατηγορία 1 είτε στην κατηγορία 2SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL έναντι του "myflixdb" παράγει τα ακόλουθα αποτελέσματα.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
ΠΟΥ συνδυάζεται η ρήτρα με - IN Keyword
Ο όρος WHERE in MySQL, όταν χρησιμοποιείται μαζί με τη λέξη κλειδί IN επηρεάζει μόνο τις σειρές των οποίων οι τιμές ταιριάζουν με τη λίστα τιμών που παρέχονται στη λέξη-κλειδί IN. Η δήλωση MySQL IN βοηθά στη μείωση του αριθμού των ρητρών OR που ίσως χρειαστεί να χρησιμοποιήσετε. Το ακόλουθο MySQL WHERE IN query δίνει σειρές όπου ο αριθμός_δίσκου είναι 1, 2 ή 3SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL έναντι του "myflixdb" παράγει τα ακόλουθα αποτελέσματα.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
ΠΟΥ συνδυάζεται η ρήτρα με - ΟΧΙ ΣΤΗ λέξη-κλειδί
Ο όρος WHERE όταν χρησιμοποιείται μαζί με τη λέξη-κλειδί NOT IN ΔΕΝ επηρεάζει τις σειρές των οποίων οι τιμές ταιριάζουν με τη λίστα τιμών που παρέχονται στη λέξη-κλειδί NOT IN. Το ακόλουθο ερώτημα δίνει σειρές όπου ο αριθμός__ μελών δεν είναι 1, 2 ή 3SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL έναντι του "myflixdb" παράγει τα ακόλουθα αποτελέσματα.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
ΠΟΥ συνδυάζεται ρήτρα με - ΣΥΓΚΡΙΣΗ χειριστές
Οι τελεστές σύγκρισης μικρότεροι από (), ίσοι με (=), όχι ίσοι με () μπορούν να χρησιμοποιηθούν με τον όρο WHERE= Ίση με
Το ακόλουθο σενάριο λαμβάνει όλα τα θηλυκά μέλη από τον πίνακα μελών χρησιμοποιώντας τον τελεστή ισότητας με σύγκριση.SELECT * FROM `members` WHERE `gender` = 'Female';
Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL έναντι του "myflixdb" παράγει τα ακόλουθα αποτελέσματα.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
> Μεγαλύτερο από
Το ακόλουθο σενάριο λαμβάνει όλες τις πληρωμές που είναι μεγαλύτερες από 2.000 από τον πίνακα πληρωμών. ΕΠΙΛΕΞΤΕ * ΑΠΟ «πληρωμές» ΠΟΥ «ποσό_πληρωμένο»> 2000; Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL έναντι του "myflixdb" παράγει τα ακόλουθα αποτελέσματα.payment_id | membership_number | payment_date | description | amount_paid | external_reference_number |
---|---|---|---|---|---|
1 | 1 | 23-07-2012 | Movie rental payment | 2500 | 11 |
3 | 3 | 30-07-2012 | Movie rental payment | 6000 | NULL |
<> Δεν ισούται με
Το παρακάτω σενάριο λαμβάνει όλες τις ταινίες των οποίων το αναγνωριστικό κατηγορίας δεν είναι 1.SELECT * FROM `movies` WHERE `category_id`<> 1;Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL έναντι του "myflixdb" παράγει τα ακόλουθα αποτελέσματα.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
Περίληψη
- Η ρήτρα SQL WHERE χρησιμοποιείται για να περιορίσει τον αριθμό των σειρών που επηρεάζονται από ένα ερώτημα SELECT, UPDATE ή DELETE.
- Η συνθήκη WHERE σε SQL μπορεί να χρησιμοποιηθεί σε συνδυασμό με λογικούς τελεστές όπως AND και OR, τελεστές σύγκρισης όπως, = κ.λπ.
- Όταν χρησιμοποιείται με τον λογικό τελεστή AND, πρέπει να πληρούνται όλα τα κριτήρια.
- Όταν χρησιμοποιείται με τον λογικό τελεστή OR, οποιοδήποτε από τα κριτήρια πρέπει να πληρούται.
- Η λέξη κλειδί IN χρησιμοποιείται για την επιλογή σειρών που ταιριάζουν με μια λίστα τιμών.
Brain Teaser Ας υποθέσουμε ότι θέλουμε να λάβουμε μια λίστα ενοικιαζόμενων ταινιών που δεν έχουν επιστραφεί εγκαίρως στις 25/06/2012. Μπορούμε να χρησιμοποιήσουμε τον όρο δήλωσης SQL WHERE μαζί με τον τελεστή λιγότερο από τη σύγκριση και τον λογικό τελεστή AND για να το επιτύχουμε.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL δίνει τα ακόλουθα αποτελέσματα.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |