Τι είναι το ερώτημα SELECT στο MySQL;
Το SELECT QUERY χρησιμοποιείται για την ανάκτηση των δεδομένων από τη βάση δεδομένων MySQL. Οι βάσεις δεδομένων αποθηκεύουν δεδομένα για μελλοντική ανάκτηση. Ο σκοπός του MySQL Select είναι να επιστρέψετε από τους πίνακες βάσης δεδομένων, μία ή περισσότερες σειρές που ταιριάζουν σε συγκεκριμένα κριτήρια. Επιλογή ερωτήματος μπορεί να χρησιμοποιηθεί σε γλώσσα scripting όπως PHP, Ruby ή μπορείτε να το εκτελέσετε μέσω της γραμμής εντολών.
Σύνταξη δήλωσης SQL SELECT
Είναι η εντολή SQL που χρησιμοποιείται πιο συχνά και έχει την ακόλουθη γενική σύνταξη
SELECT [DISTINCT|ALL ] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition][GROUP BY fieldName(s)] [HAVING condition] ORDER BY fieldName(s)ΕΔΩ
- SELECT είναι η λέξη-κλειδί SQL που επιτρέπει στη βάση δεδομένων να γνωρίζει ότι θέλετε να ανακτήσετε δεδομένα.
- [ΑΠΟΣΤΑΣΗ | ΟΛΕΣ] είναι προαιρετικές λέξεις-κλειδιά που μπορούν να χρησιμοποιηθούν για τη ρύθμιση των αποτελεσμάτων που επιστρέφονται από τη δήλωση SQL SELECT. Εάν δεν έχει καθοριστεί τίποτα, τότε το ALL θεωρείται ως προεπιλογή.
- {* | [fieldExpression [AS newName]} τουλάχιστον ένα μέρος πρέπει να καθοριστεί, "*" επέλεξε όλα τα πεδία από το καθορισμένο όνομα πίνακα, το fieldExpression εκτελεί μερικούς υπολογισμούς στα καθορισμένα πεδία, όπως η προσθήκη αριθμών ή η συγκέντρωση δύο πεδίων συμβολοσειρών σε ένα.
- FROM tableName είναι υποχρεωτικό και πρέπει να περιέχει τουλάχιστον έναν πίνακα, πολλοί πίνακες πρέπει να διαχωρίζονται με κόμματα ή να ενώνονται χρησιμοποιώντας τη λέξη-κλειδί JOIN.
- Όπου η συνθήκη είναι προαιρετική, μπορεί να χρησιμοποιηθεί για τον καθορισμό κριτηρίων στο σύνολο αποτελεσμάτων που επιστρέφεται από το ερώτημα.
- Το GROUP BY χρησιμοποιείται για τη συγκέντρωση εγγραφών που έχουν τις ίδιες τιμές πεδίου.
- Η συνθήκη HAVING χρησιμοποιείται για τον καθορισμό κριτηρίων κατά την εργασία χρησιμοποιώντας τη λέξη-κλειδί GROUP BY.
- Το ORDER BY χρησιμοποιείται για τον καθορισμό της σειράς ταξινόμησης του συνόλου αποτελεσμάτων.
*
Το σύμβολο αστεριού χρησιμοποιείται για την επιλογή όλων των στηλών του πίνακα. Ένα παράδειγμα απλής δήλωσης SELECT μοιάζει με αυτό που φαίνεται παρακάτω.
SELECT * FROM `members`;
Η παραπάνω δήλωση επιλέγει όλα τα πεδία από τον πίνακα μελών. Το τελείωμα είναι τελική δήλωση. Δεν είναι υποχρεωτικό, αλλά θεωρείται καλή πρακτική να τερματίζετε τις δηλώσεις σας έτσι.
Πρακτικά παραδείγματα
Κάντε κλικ για να κατεβάσετε το myflix DB που χρησιμοποιείται για πρακτικά παραδείγματα.
Μπορείτε να μάθετε να εισάγετε το αρχείο .sql στο MySQL WorkBench
Τα παραδείγματα εκτελούνται στους ακόλουθους δύο πίνακες
Πίνακας 1: πίνακας μελών
αριθμός μέλους | πλήρη_ ονόματα | γένος | Ημερομηνια γεννησης | φυσική διεύθυνση | ταχυδρομική διεύθυνση | αριθμός contct_ | ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ |
---|---|---|---|---|---|---|---|
1 | Τζένετ Τζόουνς | Θηλυκός | 21-07-1980 | Πρώτη οδός Νο 4 | Ιδιωτική τσάντα | 0759 253 542 | Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να τη δείτε. |
2 | Janet Smith Jones | Θηλυκός | 23-06-1980 | Melrose 123 | ΜΗΔΕΝΙΚΟ | ΜΗΔΕΝΙΚΟ | Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να τη δείτε. |
3 | Ρόμπερτ Φιλ | Αρσενικός | 12-07-1989 | 3η οδός 34 | ΜΗΔΕΝΙΚΟ | 12345 | Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να τη δείτε. |
4 | Γκλόρια Ουίλιαμς | Θηλυκός | 14-02-1984 | 2ος δρόμος 23 | ΜΗΔΕΝΙΚΟ | ΜΗΔΕΝΙΚΟ | ΜΗΔΕΝΙΚΟ |
Πίνακας 2: πίνακας ταινιών
movie_id | τίτλος | διευθυντής | κυκλοφόρησε το έτος | κατηγορία_id |
---|---|---|---|---|
1 | Πειρατές της Καραϊβικής 4 | Ρομπ Μάρσαλ | 2011 | 1 |
2 | Ξεχνώντας τη Σάρσαρ | Nicholas Stoller | 2008 | 2 |
3 | X Men | ΜΗΔΕΝΙΚΟ | 2008 | ΜΗΔΕΝΙΚΟ |
4 | Κωδικός Όνομα Μαύρο | Έντγκαρ Τζιμ | 2010 | ΜΗΔΕΝΙΚΟ |
5 | Μικρά κορίτσια του μπαμπά | ΜΗΔΕΝΙΚΟ | 2007 | 8 |
6 | Αγγελοι και ΔΑΙΜΟΝΕΣ | ΜΗΔΕΝΙΚΟ | 2007 | 6 |
7 | Κωδικός Davinci | ΜΗΔΕΝΙΚΟ | 2007 | 6 |
9 | Μέλι | Τζον Σουλτς | 2005 | 8 |
16 | 67% ένοχος | ΜΗΔΕΝΙΚΟ | 2012 | ΜΗΔΕΝΙΚΟ |
Λήψη μελών
Ας υποθέσουμε ότι θέλουμε να λάβουμε μια λίστα με όλα τα εγγεγραμμένα μέλη της βιβλιοθήκης από τη βάση δεδομένων μας, θα χρησιμοποιούσαμε το σενάριο που φαίνεται παρακάτω για να το κάνουμε αυτό.
SELECT * FROM `members`;
Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL παράγει τα ακόλουθα αποτελέσματα.
αριθμός μέλους | πλήρη_ ονόματα | γένος | Ημερομηνια γεννησης | φυσική διεύθυνση | ταχυδρομική διεύθυνση | αριθμός contct_ | ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ |
---|---|---|---|---|---|---|---|
1 | Τζένετ Τζόουνς | Θηλυκός | 21-07-1980 | Πρώτη οδός Νο 4 | Ιδιωτική τσάντα | 0759 253 542 | Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να τη δείτε. |
2 | Janet Smith Jones | Θηλυκός | 23-06-1980 | Melrose 123 | ΜΗΔΕΝΙΚΟ | ΜΗΔΕΝΙΚΟ | Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να τη δείτε. |
3 | Ρόμπερτ Φιλ | Αρσενικός | 12-07-1989 | 3η οδός 34 | ΜΗΔΕΝΙΚΟ | 12345 | Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να τη δείτε. |
4 | Γκλόρια Ουίλιαμς | Θηλυκός | 14-02-1984 | 2ος δρόμος 23 | ΜΗΔΕΝΙΚΟ | ΜΗΔΕΝΙΚΟ | ΜΗΔΕΝΙΚΟ |
Το παραπάνω ερώτημά μας επέστρεψε όλες τις σειρές και τις στήλες από τον πίνακα μελών.
Ας υποθέσουμε ότι ενδιαφερόμαστε μόνο να λάβουμε μόνο τα πεδία πλήρους ονόματος, φύλου, φυσικής διεύθυνσης και email. Το ακόλουθο σενάριο θα μας βοηθούσε να το επιτύχουμε.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL παράγει τα ακόλουθα αποτελέσματα.
πλήρη_ ονόματα | γένος | φυσική διεύθυνση | ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ |
---|---|---|---|
Τζένετ Τζόουνς | Θηλυκός | Πρώτη οδός Νο 4 | Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να τη δείτε. |
Janet Smith Jones | Θηλυκός | Melrose 123 | Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να τη δείτε. |
Ρόμπερτ Φιλ | Αρσενικός | 3η οδός 34 | Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου προστατεύεται από κακόβουλη χρήση. Χρειάζεται να ενεργοποιήσετε τη JavaScript για να τη δείτε. |
Γκλόρια Ουίλιαμς | Θηλυκός | 2ος δρόμος 23 | ΜΗΔΕΝΙΚΟ |
Λήψη λίστας ταινιών
Θυμηθείτε στην παραπάνω συζήτησή μας ότι αναφέρουμε ότι οι εκφράσεις χρησιμοποιήθηκαν στις δηλώσεις SELECT. Ας πούμε ότι θέλουμε να λάβουμε μια λίστα ταινιών από τη βάση δεδομένων μας. Θέλουμε να έχουμε τον τίτλο της ταινίας και το όνομα του σκηνοθέτη της ταινίας σε ένα πεδίο. Το όνομα του σκηνοθέτη ταινίας πρέπει να είναι σε παρένθεση. Θέλουμε επίσης να πάρουμε τη χρονιά που κυκλοφόρησε η ταινία. Το παρακάτω σενάριο μας βοηθά να το κάνουμε αυτό.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
ΕΔΩ
- Η συνάρτηση Concat () MySQL χρησιμοποιείται, ενώστε τις τιμές των στηλών μαζί.
- Η γραμμή "Concat (" τίτλος "," ("," σκηνοθέτης ",") ") παίρνει τον τίτλο, προσθέτει μια αγκύλη ανοίγματος ακολουθούμενη από το όνομα του σκηνοθέτη και στη συνέχεια προσθέτει την αγκύλη κλεισίματος.
Τα τμήματα συμβολοσειράς διαχωρίζονται με κόμματα στη συνάρτηση Concat ().
Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL παράγει το ακόλουθο σύνολο αποτελεσμάτων.
Concat ("τίτλος", "(", "σκηνοθέτης", ")") | κυκλοφόρησε το έτος |
---|---|
Πειρατές της Καραϊβικής 4 (Rob Marshall) | 2011 |
Ξεχνώντας τη Sarah Marshal (Nicholas Stoller) | 2008 |
ΜΗΔΕΝΙΚΟ | 2008 |
Κωδικός Όνομα Black (Edgar Jimz) | 2010 |
ΜΗΔΕΝΙΚΟ | 2007 |
ΜΗΔΕΝΙΚΟ | 2007 |
ΜΗΔΕΝΙΚΟ | 2007 |
Honey Mooners (Τζον Σουλτς) | 2005 |
ΜΗΔΕΝΙΚΟ | 2012 |
Ψευδώνυμα ονόματα πεδίων
Το παραπάνω παράδειγμα επέστρεψε τον κωδικό συνένωσης ως το όνομα πεδίου για τα αποτελέσματά μας. Ας υποθέσουμε ότι θέλουμε να χρησιμοποιήσουμε ένα πιο περιγραφικό όνομα πεδίου στο σύνολο αποτελεσμάτων μας. Θα χρησιμοποιούσαμε το ψευδώνυμο της στήλης για να το πετύχουμε. Το παρακάτω είναι η βασική σύνταξη για το όνομα ψευδωνύμου στήλης
SELECT `column_name|value|expression` [AS] `alias_name`;
ΕΔΩ
- "SELECT" column_name | value | express "" είναι η κανονική πρόταση SELECT που μπορεί να είναι όνομα στήλης, τιμή ή έκφραση.
- "[AS]" είναι η προαιρετική λέξη-κλειδί προτού το όνομα ψευδωνύμου που δηλώνει την έκφραση, την τιμή ή το όνομα πεδίου θα επιστραφεί ως.
- "" alias_name "" είναι το ψευδώνυμο όνομα που θέλουμε να επιστρέψουμε στο αποτέλεσμα που ορίσαμε ως όνομα πεδίου.
Το παραπάνω ερώτημα με πιο νόημα όνομα στήλης
SELECT Concat(`title`, ' (', `director`, ')') AS 'Concat', `year_released` FROM `movies`;
Έχουμε το ακόλουθο αποτέλεσμα
Κόκατ | κυκλοφόρησε το έτος |
---|---|
Πειρατές της Καραϊβικής 4 (Rob Marshall) | 2011 |
Ξεχνώντας τη Sarah Marshal (Nicholas Stoller) | 2008 |
ΜΗΔΕΝΙΚΟ | 2008 |
Κωδικός Όνομα Black (Edgar Jimz) | 2010 |
ΜΗΔΕΝΙΚΟ | 2007 |
ΜΗΔΕΝΙΚΟ | 2007 |
ΜΗΔΕΝΙΚΟ | 2007 |
Honey Mooners (Τζον Σουλτς) | 2005 |
ΜΗΔΕΝΙΚΟ | 2012 |
Λήψη καταλόγου μελών που δείχνει το έτος γέννησης
Ας υποθέσουμε ότι θέλουμε να λάβουμε μια λίστα με όλα τα μέλη που δείχνουν τον αριθμό μέλους, τα πλήρη ονόματα και το έτος γέννησης, μπορούμε να χρησιμοποιήσουμε τη συνάρτηση LEFT string για να εξαγάγουμε το έτος γέννησης από την ημερομηνία γέννησης. Το σενάριο που φαίνεται παρακάτω μας βοηθά να το κάνουμε αυτό.
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
ΕΔΩ
- "LEFT (` date_of_birth`, 4) " η συνάρτηση LEFT δέχεται την ημερομηνία γέννησης ως παράμετρο και επιστρέφει μόνο 4 χαρακτήρες από τα αριστερά.
- "AS` year_of_birth` " είναι το ψευδώνυμο όνομα στήλης που θα εμφανιστεί στα αποτελέσματά μας. Λάβετε υπόψη ότι η λέξη-κλειδί AS είναι προαιρετική , μπορείτε να την αφήσετε και το ερώτημα θα εξακολουθήσει να λειτουργεί.
Η εκτέλεση του παραπάνω ερωτήματος στον πάγκο εργασίας MySQL έναντι του myflixdb μας δίνει τα αποτελέσματα που εμφανίζονται παρακάτω.
αριθμός μέλους | πλήρη_ ονόματα | έτος γέννησης |
---|---|---|
1 | Τζένετ Τζόουνς | 1980 |
2 | Janet Smith Jones | 1980 |
3 | Ρόμπερτ Φιλ | 1989 |
4 | Γκλόρια Ουίλιαμς | 1984 |
SQL χρησιμοποιώντας MySQL Workbench
Τώρα πρόκειται να χρησιμοποιήσουμε τον πάγκο εργασίας MySQL για να δημιουργήσουμε το σενάριο που θα εμφανίζει όλα τα ονόματα πεδίων από τον πίνακα κατηγοριών μας.
1. Κάντε δεξί κλικ στον πίνακα κατηγοριών. Κάντε κλικ στο "Επιλογή σειρών - Όριο 1000"
2. Ο πάγκος εργασίας MySQL θα δημιουργήσει αυτόματα ένα ερώτημα και επικόλληση SQL στον επεξεργαστή.
3. Θα εμφανιστούν τα αποτελέσματα του ερωτήματος
Παρατηρήστε ότι δεν γράψαμε οι ίδιοι τη δήλωση SELECT. Ο πάγκος εργασίας MySQL το δημιούργησε για εμάς.
Γιατί να χρησιμοποιήσετε την εντολή SELECT SQL όταν διαθέτουμε MySQL Workbench;
Τώρα, ίσως σκέφτεστε γιατί μάθετε την εντολή SQL SELECT για να ζητήσετε δεδομένα από τη βάση δεδομένων, όταν μπορείτε απλά να χρησιμοποιήσετε ένα εργαλείο όπως το MySQL πάγκο εργασίας για να έχετε τα ίδια αποτελέσματα χωρίς να γνωρίζετε τη γλώσσα SQL. Φυσικά αυτό είναι δυνατό, αλλά η εκμάθηση του τρόπου χρήσης της εντολής SELECT σάς προσφέρει περισσότερη ευελιξία και έλεγχο των δηλώσεων SQL SELECT .
Ο πάγκος εργασίας MySQL εμπίπτει στην κατηγορία των εργαλείων QBE " Query by Example ". Σκοπεύει να βοηθήσει στη δημιουργία ταχύτερων δηλώσεων SQL για την αύξηση της παραγωγικότητας του χρήστη.
Η εκμάθηση της εντολής SQL SELECT μπορεί να σας επιτρέψει να δημιουργήσετε πολύπλοκα ερωτήματα που δεν μπορούν να δημιουργηθούν εύκολα χρησιμοποιώντας το βοηθητικό πρόγραμμα Query by Example όπως ο πάγκος εργασίας MySQL.
Για να βελτιώσετε την παραγωγικότητα μπορείτε να δημιουργήσετε τον κώδικα χρησιμοποιώντας τον πάγκο εργασίας MySQL και, στη συνέχεια, να τον προσαρμόσετε ώστε να ανταποκρίνεται στις απαιτήσεις σας . Αυτό μπορεί να συμβεί μόνο αν καταλάβετε πώς λειτουργούν οι δηλώσεις SQL!
Περίληψη
- Η λέξη-κλειδί SQL SELECT χρησιμοποιείται για την αναζήτηση δεδομένων από τη βάση δεδομένων και είναι η πιο συχνά χρησιμοποιούμενη εντολή.
- Η απλούστερη φόρμα έχει τη σύνταξη "SELECT * FROM tableName;"
- Οι εκφράσεις μπορούν επίσης να χρησιμοποιηθούν στην επιλεγμένη δήλωση. Παράδειγμα "ΕΠΙΛΕΞΤΕ ποσότητα + τιμή ΑΠΟ πωλήσεις"
- Η εντολή SQL SELECT μπορεί επίσης να έχει άλλες προαιρετικές παραμέτρους όπως WHERE, GROUP BY, HAVING, ORDER BY. Θα συζητηθούν αργότερα.
- Ο πάγκος εργασίας MySQL μπορεί να σας βοηθήσει να αναπτύξετε δηλώσεις SQL, να τις εκτελέσετε και να δημιουργήσετε το αποτέλεσμα εξόδου στο ίδιο παράθυρο.