MySQL WHERE Clause: AND, OR, IN, NOT IN Query παράδειγμα

Πίνακας περιεχομένων:

Anonim

Τι είναι ο όρος στο MySQL;

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

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

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

ΟΤΙ ρήτρα στο MySQL

ΠΟΥ υπάρχει η σύνταξη

Η βασική σύνταξη για τον όρο 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 email
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 είτε στην κατηγορία 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

ΠΟΥ συνδυάζεται η ρήτρα με - IN Keyword

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

= Ίση με

Το ακόλουθο σενάριο λαμβάνει όλα τα θηλυκά μέλη από τον πίνακα μελών χρησιμοποιώντας τον τελεστή ισότητας με σύγκριση.
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 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