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

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

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

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

Ωστόσο, είναι φορές που θέλουμε να περιορίσουμε τα αποτελέσματα του ερωτήματος σε μια καθορισμένη συνθήκη. Η ρήτρα WHERE στην SQL είναι χρήσιμη σε τέτοιες περιπτώσεις.

WHERE ρήτρα μέσα MySQL
WHERE ρήτρα μέσα MySQL

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

Η βασική σύνταξη για την πρόταση WHERE όταν χρησιμοποιείται στο α MySQL Η δήλωση SELECT 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 ρήτρα σε συνδυασμό με – ΚΑΙ ΛΟΓΙΚΟΣ OperaTor

Η συνθήκη 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 ΛΟΓΙΚΟΣ OperaTor

Η ρήτρα WHERE όταν χρησιμοποιείται μαζί με τον τελεστή OR, εκτελείται μόνο εάν πληρούνται κάποιο ή το σύνολο των καθορισμένων κριτηρίων φίλτρου.
Το παρακάτω σενάριο περιλαμβάνει όλες τις ταινίες είτε στην κατηγορία 1 είτε στην κατηγορία 2
SELECT * 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

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

Το WHERE in MySQL ρήτρα, όταν χρησιμοποιείται μαζί με τη λέξη-κλειδί IN επηρεάζει μόνο τις σειρές των οποίων οι τιμές αντιστοιχούν στη λίστα τιμών που παρέχονται στη λέξη-κλειδί IN. ο MySQL Η δήλωση IN βοηθά στη μείωση του αριθμού των ρητρών OR που μπορεί να χρειαστεί να χρησιμοποιήσετε.
Ο ακόλουθος MySQL Το ερώτημα WHERE IN δίνει σειρές όπου ο αριθμός_μελών είναι είτε 1 , 2 είτε 3
SELECT * 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 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

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

Ο όρος WHERE όταν χρησιμοποιείται μαζί με τη λέξη-κλειδί ΔΕΝ ΣΕ ΔΕΝ επηρεάζει τις σειρές των οποίων οι τιμές αντιστοιχούν στη λίστα τιμών που παρέχονται στη λέξη-κλειδί ΔΕΝ ΣΕ.
Το ακόλουθο ερώτημα δίνει σειρές όπου ο αριθμός_εγγραφής ΔΕΝ είναι 1, 2 ή 3
SELECT * 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 email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

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

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

= Ισο με

Το παρακάτω σενάριο παίρνει όλα τα θηλυκά μέλη από τον πίνακα μελών χρησιμοποιώντας τον τελεστή ίση προς σύγκριση.
SELECT * FROM `members` WHERE `gender` = 'Female';

Εκτέλεση του παραπάνω σεναρίου στο 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
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;
Εκτέλεση του παραπάνω σεναρίου στο 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 ή ΔΙΑΓΡΑΦΗ ερωτήματος.
  • Η συνθήκη WHERE στην SQL μπορεί να χρησιμοποιηθεί σε συνδυασμό με λογικούς τελεστές όπως AND και OR, τελεστές σύγκρισης όπως ,= κ.λπ.
  • Όταν χρησιμοποιείται με το AND λογικός τελεστής, πρέπει να πληρούνται όλα τα κριτήρια.
  • Όταν χρησιμοποιείται με τον λογικό τελεστή OR, πρέπει να πληρούται οποιοδήποτε από τα κριτήρια.
  • Η λέξη κλειδί IN χρησιμοποιείται για την επιλογή σειρών που ταιριάζουν με μια λίστα τιμών.

Σπαζοκεφαλιά

Ας υποθέσουμε ότι θέλουμε να λάβουμε μια λίστα με ενοικιαζόμενες ταινίες που δεν έχουν επιστραφεί εγκαίρως στις 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