MySQL ΕΠΙΛΟΓΗ Δήλωση με Παραδείγματα

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

The MySQL Η εντολή SELECT ανακτά γραμμές από έναν ή περισσότερους πίνακες και κάθε παρακάτω παράδειγμα εκτελείται στη βάση δεδομένων δειγμάτων myflix, μετακινούμενο από το απλό ερώτημα αστεριού σε εκφράσεις, ψευδώνυμα στηλών και συναρτήσεις συμβολοσειρών.

  • 🔎 Βασικός Σκοπός: Η εντολή SELECT ανακτά τις αποθηκευμένες γραμμές που ταιριάζουν με ένα κριτήριο, από τη γραμμή εντολών ή από την PHP, Pythonκαι άλλες γλώσσες.
  • 🧩 Σειρά σύνταξης: Οι SELECT, FROM, WHERE, GROUP BY, HAVING και ORDER BY πρέπει να εμφανίζονται σε αυτήν τη σταθερή ακολουθία.
  • Συντόμευση αστεριού: SELECT * FROM `members`; επιστρέφει κάθε στήλη, ενώ η ονομασία στηλών διατηρεί ρητά τα σύνολα αποτελεσμάτων μικρότερα και ταχύτερα.
  • 🔗 Εκφράσεις: Η Concat() ενώνει τις τιμές των στηλών και η LEFT() περικόπτει τους χαρακτήρες, έτσι ώστε τα υπολογισμένα πεδία να εμφανίζονται απευθείας στο σύνολο αποτελεσμάτων.
  • 🏷️ Ψευδώνυμα στηλών: Η προαιρετική λέξη-κλειδί AS μετονομάζει οποιαδήποτε έκφραση, αντικαθιστώντας μη αναγνώσιμες κεφαλίδες όπως Concat(`title`) με σαφείς ετικέτες.
  • 🖱️ Σύγκριση πάγκων εργασίας: MySQL Το Workbench δημιουργεί ερωτήματα οπτικά, ωστόσο οι χειρόγραφες εντολές SELECT παραμένουν απαραίτητες για πολύπλοκη και ακριβή ανάκτηση.

Τι είναι το ερώτημα SELECT; MySQL?

Ερώτημα SELECT χρησιμοποιείται για την ανάκτηση δεδομένων από το MySQL βάση δεδομένων. Οι βάσεις δεδομένων αποθηκεύουν δεδομένα για μελλοντική ανάκτηση. Ο σκοπός του MySQL Η συνάρτηση SELECT επιστρέφει μία ή περισσότερες γραμμές από τους πίνακες της βάσης δεδομένων που ταιριάζουν με ένα δεδομένο κριτήριο. Ένα ερώτημα SELECT μπορεί να χρησιμοποιηθεί σε μια γλώσσα scripting όπως PHP ή Ruby ή μπορείτε να το εκτελέσετε από τη γραμμή εντολών.

ΕΠΙΛΟΓΗ ερωτήματος σε MySQL

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

Σύνταξη πρότασης SQL SELECT

Η εντολή 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 θεωρείται ως η προεπιλογή.
  • {*| [έκφραση πεδίου [AS newName]} Πρέπει να καθοριστεί τουλάχιστον ένα μέρος. Το "*" επιλέγει όλα τα πεδία από το καθορισμένο όνομα πίνακα. Το fieldExpression εκτελεί υπολογισμούς στα καθορισμένα πεδία, όπως προσθήκη αριθμών ή ένωση δύο πεδίων συμβολοσειρών σε ένα.
  • ΑΠΟ Το tableName είναι υποχρεωτικό και πρέπει να περιέχει τουλάχιστον έναν πίνακα. Πολλαπλοί πίνακες πρέπει να διαχωρίζονται με κόμματα ή να ενώνονται χρησιμοποιώντας τη λέξη-κλειδί JOIN.
  • ΠΟΥ Η συνθήκη είναι προαιρετική. Καθορίζει κριτήρια στο σύνολο αποτελεσμάτων που επιστρέφεται από το ερώτημα.
  • GROUP BY χρησιμοποιείται για τη συναρμολόγηση εγγραφών που έχουν τις ίδιες τιμές πεδίου.
  • HAVING Η συνθήκη χρησιμοποιείται για τον καθορισμό κριτηρίων κατά την εργασία με τη λέξη-κλειδί GROUP BY.
  • ΤΑΞΙΝΟΜΗΣΗ ΚΑΤΑ χρησιμοποιείται για να καθορίσει τη σειρά ταξινόμησης του συνόλου αποτελεσμάτων.

*

Το σύμβολο του αστεριού επιλέγει όλες τις στήλες σε έναν πίνακα. Μια απλή εντολή SELECT μοιάζει με αυτήν που φαίνεται παρακάτω.

SELECT * FROM `members`;

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

ΕΠΙΛΕΞΤΕ ΔΙΑΦΟΡΕΤΙΚΑ και ΟΡΙΟ σε MySQL

Δύο προαιρετικές λέξεις-κλειδιά στη σύνταξη αξίζουν μια πιο προσεκτική εξέταση, επειδή οι αρχάριοι τις συναντούν μόλις μεγαλώσει ένας πίνακας.

ΔΙΑΦΟΡΕΤΙΚΕΣ Η συνάρτηση DISTINCT αφαιρεί διπλότυπες γραμμές από το σύνολο αποτελεσμάτων. Ο πίνακας ταινιών αποθηκεύει αρκετές ταινίες που κυκλοφόρησαν το 2007, επομένως ένα απλό ερώτημα επαναλαμβάνεται για εκείνο το έτος. Η συνάρτηση DISTINCT επιστρέφει κάθε τιμή μία φορά.

SELECT DISTINCT `year_released` FROM `movies`;

LIMIT περιορίζει τον αριθμό των γραμμών που επιστρέφονται, γεγονός που προστατεύει τον πελάτη από ένα ερώτημα που διαφορετικά θα τραβούσε εκατομμύρια εγγραφές.

SELECT * FROM `movies` LIMIT 5;
Λέξη-κλειδί Τι κάνει Πότε να το χρησιμοποιήσετε
ΟΛΑ (προεπιλογή) Επιστρέφει κάθε αντίστοιχη γραμμή, συμπεριλαμβανομένων των διπλότυπων Καταμέτρηση ή καταγραφή ακατέργαστων αρχείων
ΔΙΑΦΟΡΕΤΙΚΕΣ Συμπτύσσει τις διπλότυπες γραμμές σε μία Δημιουργία λίστας μοναδικών τιμών
LIMIT Επιστρέφει μόνο τις πρώτες N γραμμές Προεπισκόπηση δεδομένων ή αποτελεσμάτων σελιδοποίησης

Με την τακτοποίηση της σύνταξης, η βάση δεδομένων-δειγμάτων δίνει ζωή σε αυτές τις ρήτρες.

Πρακτικά παραδείγματα δήλωσης SELECT

Κάντε κλικ για λήψη η βάση δεδομένων myflix που χρησιμοποιήθηκε για τα πρακτικά παραδείγματα.

Μπορείτε να μάθετε πώς να εισαγάγετε το αρχείο .sql σε MySQL Πάγκος εργασίας.

Τα παραδείγματα εκτελούνται στους δύο ακόλουθους πίνακες.

Πίνακας 1: μέλη τραπέζι

αριθμός μέλους πλήρη_ονόματα των δύο φύλων Ημερομηνια γεννησης φυσική_ διεύθυνση ταχυδρομική διεύθυνση αριθμός επικοινωνίας ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
1 Τζάνετ Τζόουνς Γυναίκα 21-07-1980 Οικόπεδο First Street No 4 Ιδιωτική τσάντα 0759 253 542 janetjones@yagoo.cm
2 Τζάνετ Σμιθ Τζόουνς Γυναίκα 23-06-1980 Melrose 123 Τιμή NULL Τιμή NULL jj@fstreet.com
3 Ρόμπερτ Φιλ Άντρας 12-07-1989 3η Οδός 34 Τιμή NULL 12345 rm@tstreet.com
4 Γκλόρια Ουίλιαμς Γυναίκα 14-02-1984 2η οδός 23 Τιμή NULL Τιμή NULL Τιμή NULL

Πίνακας 2: κινηματογράφος τραπέζι

movie_id τίτλος διευθυντής έτος_κυκλοφόρησε κατηγορία_αναγνωριστικό
1 Πειρατές της Καραϊβικής 4 Ρομπ Μάρσαλ 2011 1
2 Ξεχνώντας τη Σάρα Μάρσαλ Nicholas Stoller 2008 2
3 X Men Τιμή NULL 2008 Τιμή NULL
4 Code Όνομα Μαύρο Έντγκαρ Τζιμς 2010 Τιμή NULL
5 Μικρά κορίτσια του μπαμπά Τιμή NULL 2007 8
6 Αγγελοι και ΔΑΙΜΟΝΕΣ Τιμή NULL 2007 6
7 Ντα Βίντσι Code Τιμή NULL 2007 6
9 Honey mooners Τζον Σουλτς 2005 8
16 67% Ένοχοι Τιμή NULL 2012 Τιμή NULL

Λήψη καταχώρισης μελών

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

SELECT * FROM `members`;

Εκτέλεση του σεναρίου σε MySQL Το Workbench παράγει τα ακόλουθα αποτελέσματα.

αριθμός μέλους πλήρη_ονόματα των δύο φύλων Ημερομηνια γεννησης φυσική_ διεύθυνση ταχυδρομική διεύθυνση αριθμός επικοινωνίας ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
1 Τζάνετ Τζόουνς Γυναίκα 21-07-1980 Οικόπεδο First Street No 4 Ιδιωτική τσάντα 0759 253 542 janetjones@yagoo.cm
2 Τζάνετ Σμιθ Τζόουνς Γυναίκα 23-06-1980 Melrose 123 Τιμή NULL Τιμή NULL jj@fstreet.com
3 Ρόμπερτ Φιλ Άντρας 12-07-1989 3η Οδός 34 Τιμή NULL 12345 rm@tstreet.com
4 Γκλόρια Ουίλιαμς Γυναίκα 14-02-1984 2η οδός 23 Τιμή NULL Τιμή NULL Τιμή NULL

Το ερώτημα επέστρεψε όλες τις γραμμές και τις στήλες από τον πίνακα μελών.

Επιλογή συγκεκριμένων στηλών

Ας υποθέσουμε ότι μας ενδιαφέρουν μόνο τα πεδία full_names (πλήρες_όνομα), gender (φύλο), physical_address (φυσική_διεύθυνση) και email. Το ακόλουθο σενάριο το επιτυγχάνει αυτό.

SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;

Εκτέλεση του σεναρίου σε MySQL Το Workbench παράγει τα ακόλουθα αποτελέσματα.

πλήρη_ονόματα των δύο φύλων φυσική_διεύθυνση ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
Τζάνετ Τζόουνς Γυναίκα Οικόπεδο First Street No 4 janetjones@yagoo.cm
Τζάνετ Σμιθ Τζόουνς Γυναίκα Melrose 123 jj@fstreet.com
Ρόμπερτ Φιλ Άντρας 3η Οδός 34 rm@tstreet.com
Γκλόρια Ουίλιαμς Γυναίκα 2η οδός 23 Τιμή NULL

Λήψη καταχώρισης ταινιών με εκφράσεις

Οι εκφράσεις μπορούν επίσης να χρησιμοποιηθούν σε εντολές SELECT. Ας υποθέσουμε ότι θέλουμε μια λίστα ταινιών με τον τίτλο και το όνομα του σκηνοθέτη σε ένα πεδίο, τον σκηνοθέτη σε παρενθέσεις, καθώς και το έτος κυκλοφορίας της ταινίας. Το ακόλουθο σενάριο το κάνει αυτό.

SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;

ΕΔΩ

  • Το Concat() MySQL Η συνάρτηση ενώνει τις τιμές των στηλών μεταξύ τους.
  • Η γραμμή “Concat(`title`, ' (', `director`, ')')” λαμβάνει τον τίτλο, προσθέτει μια αρχική αγκύλη ακολουθούμενη από το όνομα του σκηνοθέτη και, στη συνέχεια, προσθέτει την αγκύλη κλεισίματος.
  • Τα τμήματα των συμβολοσειρών διαχωρίζονται χρησιμοποιώντας κόμματα μέσα στη συνάρτηση Concat().

Εκτέλεση του σεναρίου σε MySQL Το Workbench παράγει το ακόλουθο σύνολο αποτελεσμάτων.

Concat('τίτλος', ' (', 'σκηνοθέτης', ')') έτος_κυκλοφόρησε
Pirates of the Caribean 4 (Ρομπ Μάρσαλ) 2011
Ξεχνώντας τη Σάρα Μάρσαλ (Νικόλας Στόλερ) 2008
Τιμή NULL 2008
Code Όνομα Black (Edgar Jimz) 2010
Τιμή NULL 2007
Τιμή NULL 2007
Τιμή NULL 2007
Honey mooners (Τζον Σουλτς) 2005
Τιμή NULL 2012

Σημείωση: Η Concat() επιστρέφει NULL όταν οποιοδήποτε όρισμα είναι NULL, γι' αυτό και οι ταινίες χωρίς σκηνοθέτη εμφανίζουν NULL παραπάνω.

Ονόματα πεδίων με ψευδώνυμο

Το παραπάνω παράδειγμα επέστρεψε τον κώδικα συνένωσης ως όνομα πεδίου. Για να χρησιμοποιήσετε ένα πιο περιγραφικό όνομα πεδίου στο σύνολο αποτελεσμάτων, εφαρμόστε ένα ψευδώνυμο στήλης. Ακολουθεί η βασική σύνταξη.

SELECT `column_name|value|expression` [AS] `alias_name`;

ΕΔΩ

  • "ΕΠΙΛΕΞΤΕ `όνομα_στήλης|τιμή|έκφραση`" είναι η κανονική εντολή SELECT, η οποία μπορεί να είναι ένα όνομα στήλης, μια τιμή ή μια παράσταση.
  • "[ΟΠΩΣ ΚΑΙ]" είναι η προαιρετική λέξη-κλειδί πριν από το ψευδώνυμο.
  • ""ψευδώνυμο" είναι το ψευδώνυμο που επιστρέφεται στο σύνολο αποτελεσμάτων ως όνομα πεδίου.

Το ίδιο ερώτημα με ένα πιο ουσιαστικό όνομα στήλης:

SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;

Λαμβάνουμε το ακόλουθο αποτέλεσμα.

Concat έτος_κυκλοφόρησε
Pirates of the Caribean 4 (Ρομπ Μάρσαλ) 2011
Ξεχνώντας τη Σάρα Μάρσαλ (Νικόλας Στόλερ) 2008
Τιμή NULL 2008
Code Όνομα Black (Edgar Jimz) 2010
Τιμή NULL 2007
Τιμή NULL 2007
Τιμή NULL 2007
Honey mooners (Τζον Σουλτς) 2005
Τιμή NULL 2012

Λήψη καταχώρισης μελών που εμφανίζει το έτος γέννησης

Ας υποθέσουμε ότι θέλουμε μια λίστα με όλα τα μέλη που να εμφανίζει τον αριθμό μέλους, τα πλήρη ονόματα και το έτος γέννησης. Μπορούμε να χρησιμοποιήσουμε τη συνάρτηση συμβολοσειράς LEFT για να εξηγήσουμεtract το έτος γέννησης από το πεδίο ημερομηνίας γέννησης.

SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;

ΕΔΩ

  • "LEFT('ημερομηνία_γέννησης',4)" ο ΑΡΙΣΤΕΡΑ συνάρτηση συμβολοσειράς δέχεται την ημερομηνία γέννησης ως παράμετρο και επιστρέφει μόνο 4 χαρακτήρες από τα αριστερά.
  • "ΩΣ "έτος_γέννησης"" είναι το ψευδώνυμο στήλης επέστρεψε στα αποτελέσματά μας. Το Η λέξη-κλειδί AS είναι προαιρετική; μπορείτε να το παραλείψετε και το ερώτημα θα εξακολουθεί να λειτουργεί.

Εκτέλεση του ερωτήματος σε MySQL Το Workbench σε σχέση με το myflixdb μας δίνει τα αποτελέσματα που φαίνονται παρακάτω.

αριθμός μέλους πλήρη_ονόματα έτος γέννησης
1 Τζάνετ Τζόουνς 1980
2 Τζάνετ Σμιθ Τζόουνς 1980
3 Ρόμπερτ Φιλ 1989
4 Γκλόρια Ουίλιαμς 1984

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

Χρήση SQL MySQL Πάγκος εργασίας

Τώρα πρόκειται να χρησιμοποιήσουμε MySQL Workbench για τη δημιουργία του σεναρίου που εμφανίζει όλα τα ονόματα πεδίων από τον πίνακα κατηγοριών μας.

1. Κάντε δεξί κλικ στον πίνακα Κατηγορίες. Κάντε κλικ στην επιλογή «Επιλογή γραμμών – Όριο 1000».

2. MySQL Το Workbench δημιουργεί αυτόματα ένα ερώτημα SQL και το επικολλά στον επεξεργαστή.

3. Τα αποτελέσματα των ερωτημάτων εμφανίζονται στο πλέγμα κάτω από τον επεξεργαστή.

SQL με χρήση MySQL Πάγκος εργασίας

Όπως φαίνεται στο στιγμιότυπο οθόνης, δεν γράψαμε εμείς οι ίδιοι την εντολή SELECT. MySQL Το Workbench το δημιούργησε για εμάς.

Γιατί να χρησιμοποιήσουμε την εντολή SELECT SQL όταν έχουμε MySQL Πάγκος εργασίας?

Ίσως αναρωτιέστε γιατί πρέπει να μάθετε την εντολή SQL SELECT όταν ένα εργαλείο όπως το MySQL Το Workbench επιστρέφει τα ίδια αποτελέσματα χωρίς να γνωρίζει τη γλώσσα SQL. Αυτή η συντόμευση είναι δυνατή, αλλά εκμάθηση της εντολής SELECT σου δίνει περισσότερα ευελιξία και έλεγχος πάνω από το δικό σας Δηλώσεις SQL SELECT.

MySQL Ο πάγκος εργασίας εμπίπτει στην κατηγορία «Ερώτηση με Παράδειγμα"(QBE) εργαλεία. Σκοπός του είναι η ταχύτερη δημιουργία δηλώσεων SQL και η αύξηση της παραγωγικότητας των χρηστών.

Η εκμάθηση της εντολής SQL SELECT σάς επιτρέπει να δημιουργείτε σύνθετα ερωτήματα που δεν μπορούν εύκολα να δημιουργηθούν από βοηθητικά προγράμματα Query by Example όπως το MySQL Πάγκος εργασίας.

Για να βελτιώσετε την παραγωγικότητα, μπορείτε δημιουργήστε τον κώδικα στο MySQL Πάγκος εργασίας, Τότε προσαρμόσετε αυτό να ανταποκρίνεται στις απαιτήσεις σαςΑυτό είναι δυνατό μόνο αφού κατανοήσετε πώς λειτουργούν οι εντολές SQL.

Κατανόηση του MySQL Δήλωση SELECT

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

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

Οι λέξεις-κλειδιά όπως SELECT και FROM δεν κάνουν διάκριση πεζών-κεφαλαίων. Οι συγκρίσεις συμβολοσειρών ακολουθούν την ταξινόμηση της στήλης, επομένως μια ταξινόμηση χωρίς διάκριση πεζών-κεφαλαίων, όπως το utf8mb4_0900_ai_ci, αντιμετωπίζει τις λέξεις "Janet" και "janet" ως ίσες.

Η συνήθης αιτία είναι η έλλειψη ευρετηρίου. Εκτελέστε την εντολή EXPLAIN πριν από το ερώτημα για να δείτε εάν MySQL εκτελεί μια πλήρη σάρωση πίνακα, στη συνέχεια ευρετηριάζει τις φιλτραρισμένες ή ενωμένες στήλες και επιστρέφει μόνο τις γραμμές που χρειάζεστε.

Ναι. Οι βοηθοί μετατροπής κειμένου σε SQL μετατρέπουν ένα απλό αίτημα σε μια πρόταση SELECT μόλις γνωρίζουν το σχήμα σας. RevΔείτε τις δημιουργημένες ενώσεις και τα φίλτρα, επειδή ένα μοντέλο Τεχνητής Νοημοσύνης μπορεί να εφεύρει ονόματα στηλών που δεν υπάρχουν.

Όχι. Η Τεχνητή Νοημοσύνη συντάσσει ένα ερώτημα γρήγορα, αλλά εσείς εξακολουθείτε να επαληθεύετε τη λογική, τις ενώσεις και την απόδοση στο MySQL Πάγκος εργασίαςΗ γνώση του SELECT είναι αυτή που σας επιτρέπει να εντοπίσετε ένα λανθασμένο αποτέλεσμα πριν φτάσει στην παραγωγή.

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