MySQL WHERE Ρήτρα: ΚΑΙ, Ή, IN, NOT IN Παράδειγμα ερωτήματος

⚡ Έξυπνη Σύνοψη

MySQL Η ρήτρα WHERE φιλτράρει τις γραμμές πριν φτάσουν στο σύνολο αποτελεσμάτων, εφαρμόζοντας ακριβή κριτήρια στις εντολές SELECT, UPDATE και DELETE. Η κατανόηση των τελεστών AND, OR, IN, NOT IN και σύγκρισης επιτρέπει στους αρχάριους να ανακτούν ακριβώς τις εγγραφές που απαιτεί ένα ερώτημα.

  • 🔍 Βασικός Σκοπός: Η ρήτρα WHERE περιορίζει τις γραμμές που αγγίζει μια πρόταση, επομένως οι SELECT, UPDATE και DELETE επηρεάζουν μόνο τις αντίστοιχες γραμμές.
  • 🔗 ΚΑΙ Operaβραχώδης κορυφή: Οι γραμμές επιστρέφονται μόνο όταν κάθε συνθήκη αξιολογηθεί ως true, περιορίζοντας το σύνολο αποτελεσμάτων.
  • 🔀 OR Operaβραχώδης κορυφή: Οι γραμμές επιστρέφονται όταν οποιαδήποτε μεμονωμένη συνθήκη αξιολογηθεί ως true, διευρύνοντας το σύνολο αποτελεσμάτων.
  • 📋 ΜΕΣΑ και ΟΧΙ ΜΕΣΑ: Η λέξη-κλειδί IN αντιστοιχεί σε μια λίστα τιμών σε μία παράσταση, ενώ η λέξη-κλειδί NOT IN εξαιρεί την ίδια λίστα.
  • Σύγκριση Operators: Ίσο με (=), μεγαλύτερο από (>), μικρότερο από (<) και όχι ίσο με (<>) φιλτράρει αριθμητικές, κειμενικές και χρονικές στήλες.
  • ⚠️ Χειρισμός NULL: Το NULL δεν ταιριάζει ποτέ με το = ή το <>, επομένως τα IS NULL και IS NOT NULL απαιτούνται για τον έλεγχο ελλειπουσών τιμών.

Τι είναι η ρήτρα WHERE MySQL?

WHERE, in MySQL είναι μια λέξη-κλειδί που χρησιμοποιείται για τον καθορισμό των ακριβών κριτηρίων των δεδομένων ή των γραμμών που θα επηρεαστούν από την καθορισμένη πρόταση SQL. Ο όρος WHERE μπορεί να χρησιμοποιηθεί με εντολές SQL όπως INSERT, UPDATE, SELECT και DELETE για φιλτράρισμα εγγραφών και εκτέλεση διαφόρων λειτουργιών στα δεδομένα.

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

Υπάρχουν, ωστόσο, φορές που θέλουμε να περιορίσουμε τα αποτελέσματα του ερωτήματος σε μια συγκεκριμένη συνθήκη. Η ρήτρα WHERE στην SQL είναι χρήσιμη σε τέτοιες περιπτώσεις και λειτουργεί με τον ίδιο τρόπο σε ένα Ερώτημα ΔΙΑΓΡΑΦΗΣ ή ΕΝΗΜΕΡΩΣΗΣ όπως συμβαίνει σε ένα ερώτημα SELECT.

WHERE ρήτρα μέσα MySQL

WHERE ρήτρα Σύνταξη

Η βασική σύνταξη της ρήτρας WHERE έχει ως εξής.

SELECT * FROM tableName WHERE condition;

ΕΔΩ

  • "ΕΠΙΛΟΓΗ * ΑΠΟ Όνομα πίνακα" είναι το πρότυπο Δήλωση SELECT
  • "ΟΠΟΥ" είναι η λέξη-κλειδί που περιορίζει το σύνολο αποτελεσμάτων και "κατάσταση" είναι το φίλτρο που εφαρμόζεται στα αποτελέσματα. Το φίλτρο μπορεί να είναι ένα εύρος, μια μεμονωμένη τιμή ή ένα δευτερεύον ερώτημα.

Ας υποθέσουμε ότι θέλουμε τα στοιχεία ενός μέλους από τον πίνακα μελών, δεδομένου του αριθμού μέλους 1. Το παρακάτω σενάριο το επιτυγχάνει αυτό.

SELECT * FROM `members` WHERE `membership_number` = 1;

Εκτέλεση αυτού του σεναρίου σε MySQL πάγκος εργασίας στο "myflixdb" παράγει το παρακάτω αποτέλεσμα.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm

Μία μόνο συνθήκη σπάνια είναι αρκετή. Οι παρακάτω ενότητες συνδυάζουν το WHERE με το λογικούς τελεστές.

WHERE ρήτρα σε συνδυασμό με – ΚΑΙ ΛΟΓΙΚΟΣ OperaTor

Με τον λογικό τελεστή AND, μια γραμμή επιστρέφεται μόνο εάν πληρούνται ΟΛΑ τα καθορισμένα κριτήρια.

Ας υποθέσουμε ότι θέλουμε όλες τις ταινίες της κατηγορίας 2 που κυκλοφόρησαν το 2008. Το παρακάτω σενάριο το επιτυγχάνει αυτό.

SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;

Η εκτέλεση του παραπάνω σεναρίου στο "myflixdb" παράγει το ακόλουθο αποτέλεσμα.

movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

Το ΚΑΙ περιορίζει ένα σύνολο αποτελεσμάτων. Το Ή το διευρύνει.

WHERE ρήτρα σε συνδυασμό με – OR ΛΟΓΙΚΟΣ OperaTor

Με τον τελεστή OR, επιστρέφεται μια γραμμή εάν πληρούται ΟΠΟΙΟΔΗΠΟΤΕ από τα καθορισμένα κριτήρια.

Το ακόλουθο σενάριο κατατάσσει όλες τις ταινίες είτε στην κατηγορία 1 είτε στην κατηγορία 2.

SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;

Το σύνολο αποτελεσμάτων φαίνεται παρακάτω.

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

Η αλυσιδωτή σύνδεση πολλών συνθηκών OR γίνεται δύσκολο να διαβαστεί. Η λέξη-κλειδί IN λύνει αυτό το πρόβλημα.

WHERE ρήτρα σε συνδυασμό με – IN Λέξη-κλειδί

Η ρήτρα WHERE, όταν χρησιμοποιείται με τη λέξη-κλειδί IN, επηρεάζει μόνο γραμμές των οποίων οι τιμές ταιριάζουν με την παρεχόμενη λίστα. Η ρήτρα IN μειώνει τον αριθμό των ρήτρων OR που διαφορετικά θα γράφατε.

Ο ακόλουθος MySQL Το ερώτημα WHERE IN δίνει γραμμές όπου το membership_number είναι είτε 1, 2 είτε 3.

SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Το σύνολο αποτελεσμάτων φαίνεται παρακάτω.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 rm@tstreet.com

Η επιλογή NOT IN εκτελεί το αντίθετο φίλτρο.

WHERE ρήτρα σε συνδυασμό με – ΟΧΙ ΜΕΣΑ Λέξη-κλειδί

Με τη λέξη-κλειδί NOT IN, η ρήτρα WHERE εξαιρεί κάθε γραμμή της οποίας η τιμή ταιριάζει με την παρεχόμενη λίστα.

Το ακόλουθο ερώτημα δίνει γραμμές όπου το membership_number ΔΕΝ είναι 1, 2 ή 3.

SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Το σύνολο αποτελεσμάτων φαίνεται παρακάτω.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

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

WHERE ρήτρα σε συνδυασμό με – ΣΥΓΚΡΙΣΗ Operaκορμοί

Οι τελεστές σύγκρισης μικρότερο από (<), ίσο με (=), μεγαλύτερο από (>) και όχι ίσο με (<>) μπορούν να χρησιμοποιηθούν με τον όρο WHERE.

= Ισο με

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

SELECT * FROM `members` WHERE `gender` = 'Female';

Το σύνολο αποτελεσμάτων φαίνεται παρακάτω.

membership_number full_names gender date_of_birth physical_address postal_address contct_number email
1 Janet Jones Female 21-07-1980 First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

> Μεγαλύτερος από

Το παρακάτω σενάριο λαμβάνει όλες τις πληρωμές που είναι μεγαλύτερες από 2,000 από τον πίνακα πληρωμών.

SELECT * FROM `payments` WHERE `amount_paid` > 2000;

Το σύνολο αποτελεσμάτων φαίνεται παρακάτω.

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;

Το σύνολο αποτελεσμάτων φαίνεται παρακάτω.

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

Γρήγορη αναφορά: Όρος WHERE Operaκορμοί

Οι τελεστές που συνδυάζονται συχνότερα με το WHERE συνοψίζονται παρακάτω. Πλήρεις ορισμοί εμφανίζονται στο MySQL αναφορά χειριστή.

OperaTor Νόημα Παράδειγμα συνθήκης
= Ισο με `φύλο` = 'Θηλυκό'
<> Οχι ίσο με `category_id` <> 1
> / Μεγαλύτερο από / λιγότερο από `ποσό_πληρωτέο` > 2000
ΚΑΙ / Ή Όλα τα κριτήρια / οποιαδήποτε κριτήρια `category_id` = 2 ΚΑΙ `έτος_κυκλοφορίας` = 2008
ΜΕΣΑ / ΟΧΙ ΜΕΣΑ Αντιστοιχίζει / εξαιρεί μια λίστα `αριθμός_μέλους` IN (1,2,3)
ΕΙΝΑΙ ΜΗΔΕΝΙΚΟ / ΔΕΝ ΕΙΝΑΙ ΜΗΔΕΝΙΚΟ Δοκιμές για ελλείπουσες τιμές Η `ταχυδρομική_διεύθυνση` ΕΙΝΑΙ ΜΗΔΕΝΙΚΗ

⚠️ Σημείωση: Η τιμή NULL δεν αντιστοιχεί ποτέ σε = ή <>. Χρησιμοποιήστε την τιμή IS NULL ή IS NOT NULL όταν μια στήλη ενδέχεται να μην περιέχει καμία τιμή.

Γρίφος: Βρείτε ταινίες που επιστρέφονται αργά

Ας υποθέσουμε ότι θέλουμε τις ενοικιασμένες ταινίες που δεν έχουν επιστραφεί μέχρι την καταληκτική ημερομηνία 25/06/2012. Αυτό επιτυγχάνεται με τον συνδυασμό του 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

Συχνές Ερωτήσεις

Το WHERE φιλτράρει μεμονωμένες γραμμές πριν από την ομάδαping, επομένως δεν μπορεί να αναφέρει συναρτήσεις συγκεντρωτικών αποτελεσμάτων. Η συνάρτηση HAVING φιλτράρει τις ομάδες μετά την εκτέλεση του GROUP BY, καθιστώντας την το κατάλληλο μέρος για συνθήκες όπως COUNT(*) > 5.

Χρησιμοποιήστε IS NULL ή IS NOT NULL. OperaΟι συναρτήσεις όπως = και <> επιστρέφουν άγνωστο για το NULL, επομένως το `postal_address` = NULL δεν αντιστοιχεί σε κανένα αποτέλεσμα, ενώ το `postal_address` IS NULL λειτουργεί.

Ναι, όταν η φιλτραρισμένη στήλη έχει καταχωρηθεί με ευρετήριο, MySQL διαβάζει μόνο τις αντίστοιχες γραμμές αντί να σαρώνει τον πίνακα. Αναδίπλωσηping Μια στήλη σε μια συνάρτηση, όπως YEAR(`date_of_birth`) = 1980, αποτρέπει τη χρήση ευρετηρίου.

Ναι. Οι βοηθοί τεχνητής νοημοσύνης μετατρέπουν τα απλά αγγλικά σε SQL, και MySQL Πάγκος εργασίας μπορεί να εκτελέσει το αποτέλεσμα. RevΕξετάστε κάθε συνθήκη έναντι του σχήματός σας, επειδή ένα μοντέλο μπορεί να εφεύρει ονόματα στηλών.

Δοκιμάστε το πρώτα με το SELECT. Μια λανθασμένη πρόταση WHERE σε ένα Ερώτημα ΔΙΑΓΡΑΦΗΣ ή ΕΝΗΜΕΡΩΣΗΣ μπορεί να τροποποιήσει κάθε γραμμή. Κάντε προεπισκόπηση των γραμμών που αντιστοιχούν και, στη συνέχεια, χρησιμοποιήστε ξανά την ίδια συνθήκη για την εγγραφή.

Συνοψίστε αυτήν την ανάρτηση με: