Όταν θέλετε να ανακτήσετε δεδομένα από μια βάση δεδομένων, ζητάτε τα δεδομένα χρησιμοποιώντας Structured Query Language ή SQL. Η SQL είναι μια γλώσσα υπολογιστή που μοιάζει πολύ με τα Αγγλικά, αλλά τα προγράμματα βάσεων δεδομένων κατανοούν. Κάθε ερώτημα που εκτελείτε χρησιμοποιεί SQL στο παρασκήνιο.
Η κατανόηση του τρόπου λειτουργίας ΤΟΥ SQL μπορεί να σας βοηθήσει να δημιουργήσετε καλύτερα ερωτήματα και μπορεί να σας διευκολύνει να κατανοήσετε πώς μπορείτε να διορθώσετε ένα ερώτημα που δεν επιστρέφει τα αποτελέσματα που θέλετε.
Αυτό είναι ένα σύνολο άρθρων σχετικά με την SQL της Access. Σε αυτό το άρθρο περιγράφεται η βασική χρήση του SQL για την επιλογή δεδομένων και χρησιμοποιεί παραδείγματα για την απεικόνιση σύνταξης SQL.
Σε αυτό το άρθρο
Τι είναι το SQL;
Η SQL είναι μια γλώσσα υπολογιστή για την εργασία με σύνολα γεγονότων και τις σχέσεις μεταξύ τους. Τα προγράμματα σχεσιακών βάσεων δεδομένων, όπως η Microsoft Office Access, χρησιμοποιούν SQL για να εργαστούν με δεδομένα. Σε αντίθεση με πολλές γλώσσες υπολογιστή, το SQL δεν είναι δύσκολο να διαβαστεί και να κατανοηθεί, ακόμη και για αρχάριο. Όπως πολλές γλώσσες υπολογιστή, η SQL είναι ένα διεθνές πρότυπο που αναγνωρίζεται από οργανισμούς προτύπων όπως το ISO και το ANSI.
Μπορείτε να χρησιμοποιήσετε SQL για να περιγράψετε σύνολα δεδομένων που μπορούν να σας βοηθήσουν να απαντήσετε σε ερωτήσεις. Όταν χρησιμοποιείτε SQL, πρέπει να χρησιμοποιήσετε τη σωστή σύνταξη. Η σύνταξη είναι το σύνολο των κανόνων με τους οποίους συνδυάζονται σωστά τα στοιχεία μιας γλώσσας. Η σύνταξη SQL βασίζεται στη σύνταξη στα Αγγλικά και χρησιμοποιεί πολλά από τα ίδια στοιχεία με τη σύνταξη Visual Basic for Applications (VBA).
Για παράδειγμα, μια απλή πρόταση SQL που ανακτά μια λίστα επωνύμων για επαφές των οποίων το όνομα είναι Μαρία μπορεί να μοιάζει με αυτό:
SELECT Last_Name
FROM Contacts WHERE First_Name = 'Mary';
Σημείωση: Η sql δεν χρησιμοποιείται μόνο για το χειρισμό δεδομένων, αλλά επίσης για τη δημιουργία και την τροποποίηση της σχεδίασης αντικειμένων βάσης δεδομένων, όπως οι πίνακες. Το τμήμα του SQL που χρησιμοποιείται για τη δημιουργία και την τροποποίηση αντικειμένων βάσης δεδομένων ονομάζεται γλώσσα ορισμού δεδομένων (DDL). Αυτό το θέμα δεν καλύπτει το DDL. Για περισσότερες πληροφορίες, ανατρέξτε στο άρθρο Δημιουργία ή τροποποίηση πινάκων ή ευρετηρίων με χρήση ενός ερωτήματος ορισμού δεδομένων.
Προτάσεις SELECT
Για να περιγράψετε ένα σύνολο δεδομένων χρησιμοποιώντας SQL, συντάξετε μια πρόταση SELECT. Μια πρόταση SELECT περιέχει μια πλήρη περιγραφή ενός συνόλου δεδομένων που θέλετε να λάβετε από μια βάση δεδομένων. Σε αυτά περιλαμβάνονται τα εξής:
-
Ποιοι πίνακες περιέχουν τα δεδομένα.
-
Πώς σχετίζονται τα δεδομένα από διαφορετικές προελεύσεις.
-
Ποια πεδία ή υπολογισμοί θα παράγουν τα δεδομένα.
-
Κριτήρια που πρέπει να συμφωνούν τα δεδομένα για να συμπεριληφθούν.
-
Εάν και πώς μπορείτε να ταξινομήσετε τα αποτελέσματα.
Όροι SQL
Όπως και μια πρόταση, μια πρόταση SQL έχει όρους. Κάθε όρος εκτελεί μια συνάρτηση για την πρόταση SQL. Ορισμένοι όροι απαιτούνται σε μια πρόταση SELECT. Ο παρακάτω πίνακας παραθέτει τους πιο κοινούς όρους SQL.
Όρος SQL |
Τι κάνει |
Υποχρεωτικό |
SELECT |
Λίστες τα πεδία που περιέχουν δεδομένα ενδιαφέροντος. |
Ναι |
FROM |
Λίστες τους πίνακες που περιέχουν τα πεδία που παρατίθενται στον όρο SELECT. |
Ναι |
WHERE |
Καθορίζει τα κριτήρια πεδίου που πρέπει να πληρούνται από κάθε εγγραφή που θα συμπεριληφθεί στα αποτελέσματα. |
Όχι |
ORDER BY |
Καθορίζει τον τρόπο ταξινόμησης των αποτελεσμάτων. |
Όχι |
GROUP BY |
Σε μια πρόταση SQL που περιέχει συναρτήσεις συγκεντρωτικών αποτελεσμάτων, παραθέτει πεδία που δεν συνοψίζονται στον όρο SELECT. |
Μόνο εάν υπάρχουν τέτοια πεδία |
HAVING |
Σε μια πρόταση SQL που περιέχει συναρτήσεις συγκεντρωτικών αποτελεσμάτων, καθορίζει τις συνθήκες που ισχύουν για τα πεδία που συνοψίζονται στην πρόταση SELECT. |
Όχι |
Όροι SQL
Κάθε όρος SQL αποτελείται από όρους — συγκρίσιμους με τα μέρη του λόγου. Ο παρακάτω πίνακας παραθέτει τύπους όρων SQL.
Όρος SQL |
Συγκρίσιμο μέρος της ομιλίας |
Ορισμός |
Παράδειγμα |
Αναγνωριστικό |
Ουσιαστικό |
Ένα όνομα που χρησιμοποιείτε για να προσδιορίσετε ένα αντικείμενο βάσης δεδομένων, όπως το όνομα ενός πεδίου. |
Τους πελάτες. [Αριθμός τηλεφώνου] |
τελεστής |
ρήμα ή ρήμα |
Μια λέξη-κλειδί που αντιπροσωπεύει μια ενέργεια ή τροποποιεί μια ενέργεια. |
AS |
σταθερά |
Ουσιαστικό |
Μια τιμή που δεν αλλάζει, όπως αριθμός ή NULL. |
42 |
παράσταση |
Επίθετο |
Ένας συνδυασμός αναγνωριστικών, τελεστών, σταθερών και συναρτήσεων που επιστρέφει μία τιμή. |
>= Προϊόντα. [Τιμή μονάδας] |
Βασικοί όροι SQL: SELECT, FROM και WHERE
Μια πρόταση SQL έχει τη γενική μορφή:
SELECT field_1
FROM table_1 WHERE criterion_1 ;
Σημειώσεις:
-
Η Access παραβλέπει αλλαγές γραμμής σε μια πρόταση SQL. Ωστόσο, εξετάστε το ενδεχόμενο να χρησιμοποιήσετε μια γραμμή για κάθε όρο για να βελτιώσετε την αναγνωσιμότητα των προτάσεων SQL για εσάς και τους άλλους.
-
Κάθε πρόταση SELECT τελειώνει σε ελληνικό ερωτηματικό (;). Το ελληνικό ερωτηματικό μπορεί να εμφανιστεί στο τέλος του τελευταίου όρου ή σε μια γραμμή μόνο του στο τέλος της πρότασης SQL.
Παράδειγμα στην Access
Παρακάτω παρουσιάζεται η εμφάνιση μιας πρότασης SQL για ένα απλό ερώτημα επιλογής στην Access:
1. Όρος SELECT
2. Όρος FROM
3. Όρος WHERE
Αυτό το παράδειγμα πρότασης SQL αναφέρει ότι "Επιλέξτε τα δεδομένα που είναι αποθηκευμένα στα πεδία που ονομάζονται Διεύθυνση ηλεκτρονικού ταχυδρομείου και Εταιρεία από τον πίνακα με το όνομα Επαφές, συγκεκριμένα τις εγγραφές στις οποίες η τιμή του πεδίου "Πόλη" είναι "Αθήνα".
Ας δούμε το παράδειγμα, έναν όρο κάθε φορά, για να δούμε πώς λειτουργεί η σύνταξη SQL.
Ο όρος SELECT
SELECT [E-mail Address], Company
Αυτός είναι ο όρος SELECT. Αποτελείται από έναν τελεστή (SELECT) ακολουθούμενο από δύο αναγνωριστικά ([Διεύθυνση ηλεκτρονικού ταχυδρομείου] και Εταιρεία).
Εάν ένα αναγνωριστικό περιέχει κενά διαστήματα ή ειδικούς χαρακτήρες (όπως "Διεύθυνση ηλεκτρονικού ταχυδρομείου"), πρέπει να περικλείεται σε αγκύλες.
Ένας όρος SELECT δεν χρειάζεται να αναφέρει ποιοι πίνακες περιέχουν τα πεδία και δεν μπορεί να καθορίσει οποιεσδήποτε συνθήκες που πρέπει να πληρούνται από τα δεδομένα που θα συμπεριληφθούν.
Ο όρος SELECT εμφανίζεται πάντα μπροστά από τον όρο FROM σε μια πρόταση SELECT.
Ο όρος FROM
FROM Contacts
Αυτός είναι ο όρος FROM. Αποτελείται από έναν τελεστή (FROM) ακολουθούμενο από ένα αναγνωριστικό (Επαφές).
Ο όρος FROM δεν παραθέτει τα πεδία που θα επιλεγούν.
Ο όρος WHERE
WHERE City="Seattle"
Αυτός είναι ο όρος WHERE. Αποτελείται από έναν τελεστή (WHERE) ακολουθούμενο από μια παράσταση (City="Seattle").
Σημείωση: Σε αντίθεση με τους όρους SELECT και FROM, ο όρος WHERE δεν είναι απαραίτητο στοιχείο μιας πρότασης SELECT.
Μπορείτε να πραγματοποιήσετε πολλές από τις ενέργειες που σας επιτρέπει η SQL, χρησιμοποιώντας τους όρους SELECT, FROM και WHERE. Περισσότερες πληροφορίες σχετικά με τον τρόπο με τον οποίο χρησιμοποιείτε αυτούς τους όρους παρουσιάζονται σε αυτά τα πρόσθετα άρθρα:
Ταξινόμηση των αποτελεσμάτων: ORDER BY
Όπως και στο Microsoft Excel, η Access σάς επιτρέπει να ταξινομείτε τα αποτελέσματα ενός ερωτήματος σε ένα φύλλο δεδομένων. Μπορείτε επίσης να καθορίσετε στο ερώτημα πώς θέλετε να ταξινομούνται τα αποτελέσματα κατά την εκτέλεση του ερωτήματος, χρησιμοποιώντας έναν όρο ORDER BY. Εάν χρησιμοποιείτε έναν όρο ORDER BY, είναι ο τελευταίος όρος στην πρόταση SQL.
Ο όρος ORDER BY περιέχει μια λίστα με τα πεδία που θέλετε να χρησιμοποιήσετε για την ταξινόμηση, με την ίδια σειρά που θέλετε να εφαρμόσετε τις λειτουργίες ταξινόμησης.
Για παράδειγμα, ας υποθέσουμε ότι θέλετε τα αποτελέσματά σας να ταξινομηθούν πρώτα με βάση την τιμή του πεδίου Εταιρεία σε φθίνουσα σειρά και , εάν υπάρχουν εγγραφές με την ίδια τιμή για την Εταιρεία — ταξινομημένες στη συνέχεια κατά τις τιμές στο πεδίο Διεύθυνση ηλεκτρονικού ταχυδρομείου σε αύξουσα σειρά. Ο όρος ORDER BY θα μοιάζει με τον ακόλουθο:
ORDER BY Company DESC, [E-mail Address]
Σημείωση: Από προεπιλογή, η Access ταξινομεί τις τιμές με αύξουσα σειρά (Α-Ω, από τη μικρότερη προς τη μεγαλύτερη). Χρησιμοποιήστε τη λέξη-κλειδί DESC για να ταξινομήσετε τις τιμές με φθίνουσα σειρά.
Για περισσότερες πληροφορίες σχετικά με τον όρο ORDER BY, ανατρέξτε στο θέμα Όρος ORDER BY.
Εργασία με συνοπτικά δεδομένα: GROUP BY και HAVING
Μερικές φορές θέλετε να εργαστείτε με συνοπτικά δεδομένα, όπως τις συνολικές πωλήσεις σε ένα μήνα ή τα πιο ακριβά στοιχεία σε ένα απόθεμα. Για να το κάνετε αυτό, εφαρμόστε ένα συνάρτηση συγκεντρωτικών αποτελεσμάτων σε ένα πεδίο στον όρο SELECT. Για παράδειγμα, εάν θέλετε το ερώτημά σας να εμφανίζει το πλήθος των διευθύνσεων ηλεκτρονικού ταχυδρομείου που παρατίθενται για κάθε εταιρεία, ο όρος SELECT μπορεί να μοιάζει με το εξής:
SELECT COUNT([E-mail Address]), Company
Οι συναρτήσεις συγκεντρωτικών αποτελεσμάτων που μπορείτε να χρησιμοποιήσετε εξαρτώνται από τον τύπο των δεδομένων που βρίσκονται στο πεδίο ή την παράσταση που θέλετε να χρησιμοποιήσετε. Για περισσότερες πληροφορίες σχετικά με τις διαθέσιμες συναρτήσεις συγκεντρωτικών αποτελεσμάτων, ανατρέξτε στο άρθρο Συναρτήσεις συγκεντρωτικών αποτελεσμάτων SQL.
Καθορισμός πεδίων που δεν χρησιμοποιούνται σε μια συνάρτηση συγκεντρωτικών αποτελεσμάτων: Ο όρος GROUP BY
Όταν χρησιμοποιείτε συναρτήσεις συγκεντρωτικών αποτελεσμάτων, συνήθως πρέπει επίσης να δημιουργήσετε έναν όρο GROUP BY. Ένας όρος GROUP BY παραθέτει σε λίστα όλα τα πεδία στα οποία δεν εφαρμόζετε μια συνάρτηση συγκεντρωτικών αποτελεσμάτων. Εάν εφαρμόσετε συναρτήσεις συγκεντρωτικών αποτελεσμάτων σε όλα τα πεδία ενός ερωτήματος, δεν χρειάζεται να δημιουργήσετε τον όρο GROUP BY.
Ένας όρος GROUP BY ακολουθεί αμέσως τον όρο WHERE ή τον όρο FROM, εάν δεν υπάρχει όρος WHERE. Ένας όρος GROUP BY παραθέτει τα πεδία όπως εμφανίζονται στον όρο SELECT.
Για παράδειγμα, συνεχίζοντας το προηγούμενο παράδειγμα, εάν ο όρος SELECT εφαρμόζει μια συνάρτηση συγκεντρωτικών αποτελεσμάτων στην τιμή [Διεύθυνση ηλεκτρονικού ταχυδρομείου] αλλά όχι στην Εταιρεία, ο όρος GROUP BY θα μοιάζει με τον ακόλουθο:
GROUP BY Company
Για περισσότερες πληροφορίες σχετικά με τον όρο GROUP BY, ανατρέξτε στο θέμα Όρος GROUP BY.
Περιορισμός συγκεντρωτικών τιμών με χρήση κριτηρίων ομάδας: ο όρος HAVING
Εάν θέλετε να χρησιμοποιήσετε κριτήρια για να περιορίσετε τα αποτελέσματά σας, αλλά το πεδίο στο οποίο θέλετε να εφαρμόσετε κριτήρια χρησιμοποιείται σε μια συνάρτηση συγκεντρωτικών αποτελεσμάτων, δεν μπορείτε να χρησιμοποιήσετε έναν όρο WHERE. Αντί για αυτό, μπορείτε να χρησιμοποιήσετε έναν όρο HAVING. Ένας όρος HAVING λειτουργεί ως όρος WHERE, αλλά χρησιμοποιείται για συγκεντρωτικά δεδομένα.
Για παράδειγμα, ας υποθέσουμε ότι χρησιμοποιείτε τη συνάρτηση AVG (η οποία υπολογίζει μια μέση τιμή) με το πρώτο πεδίο στον όρο SELECT:
SELECT COUNT([E-mail Address]), Company
Εάν θέλετε το ερώτημα να περιορίζει τα αποτελέσματα με βάση την τιμή αυτής της συνάρτησης COUNT, δεν μπορείτε να χρησιμοποιήσετε κριτήρια για αυτό το πεδίο στον όρο WHERE. Αντί για αυτό, μπορείτε να τοποθετήσετε τα κριτήρια σε έναν όρο HAVING. Για παράδειγμα, εάν θέλετε το ερώτημα να επιστρέφει γραμμές μόνο εάν υπάρχουν περισσότερες από μία διευθύνσεις ηλεκτρονικού ταχυδρομείου που σχετίζονται με την εταιρεία, ο όρος HAVING μπορεί να μοιάζει με το εξής:
HAVING COUNT([E-mail Address])>1
Σημείωση: Ένα ερώτημα μπορεί να έχει έναν όρο WHERE και έναν όρο HAVING — κριτήρια για πεδία που δεν χρησιμοποιούνται σε μια συνάρτηση συγκεντρωτικών αποτελεσμάτων πηγαίνουν στον όρο WHERE και τα κριτήρια για πεδία που χρησιμοποιούνται με συναρτήσεις συγκεντρωτικών αποτελεσμάτων πηγαίνουν στον όρο HAVING.
Για περισσότερες πληροφορίες σχετικά με τον όρο HAVING, ανατρέξτε στο θέμα Όρος HAVING.
Συνδυασμός αποτελεσμάτων ερωτήματος: UNION
Όταν θέλετε να εξετάσετε όλα τα δεδομένα που επιστρέφονται από πολλά παρόμοια ερωτήματα επιλογής μαζί, ως συνδυασμένο σύνολο, χρησιμοποιείτε τον τελεστή UNION.
Ο τελεστής UNION σάς επιτρέπει να συνδυάσετε δύο προτάσεις SELECT σε μία. Οι προτάσεις SELECT που συνδυάζετε πρέπει να έχουν τον ίδιο αριθμό πεδίων εξόδου, με την ίδια σειρά και με τον ίδιο ή συμβατό τύπο δεδομένων. Όταν εκτελείτε το ερώτημα, τα δεδομένα από κάθε σύνολο αντίστοιχων πεδίων συνδυάζονται σε ένα πεδίο εξόδου, έτσι ώστε το αποτέλεσμα του ερωτήματος να έχει τον ίδιο αριθμό πεδίων με κάθε μία από τις προτάσεις επιλογής.
Σημείωση: Για τους σκοπούς ενός ερωτήματος συνένωσης, οι τύποι δεδομένων "Αριθμός" και "Κείμενο" είναι συμβατοί.
Όταν χρησιμοποιείτε τον τελεστή UNION, μπορείτε επίσης να καθορίσετε εάν τα αποτελέσματα του ερωτήματος θα πρέπει να περιλαμβάνουν διπλότυπες γραμμές, εάν υπάρχουν, χρησιμοποιώντας τη λέξη-κλειδί ALL.
Η βασική σύνταξη SQL για ένα ερώτημα συνένωσης που συνδυάζει δύο προτάσεις SELECT είναι η εξής:
SELECT field_1
FROM table_1 UNION [ALL] SELECT field_a FROM table_a ;
Για παράδειγμα, ας υποθέσουμε ότι έχετε έναν πίνακα με το όνομα Products και έναν άλλο πίνακα με το όνομα Services. Και οι δύο πίνακες έχουν πεδία που περιέχουν το όνομα του προϊόντος ή της υπηρεσίας, την τιμή, την εγγύηση ή τη διαθεσιμότητα, καθώς και αν προσφέρετε αποκλειστικά το προϊόν ή την υπηρεσία. Παρόλο που ο πίνακας Προϊόντα αποθηκεύει πληροφορίες εγγύησης και ο πίνακας Υπηρεσίες αποθηκεύει πληροφορίες εγγύησης, οι βασικές πληροφορίες είναι οι ίδιες (είτε ένα συγκεκριμένο προϊόν είτε μια υπηρεσία περιλαμβάνει υπόσχεση ποιότητας). Μπορείτε να χρησιμοποιήσετε ένα ερώτημα συνένωσης, όπως το ακόλουθο, για να συνδυάσετε τα τέσσερα πεδία από τους δύο πίνακες:
SELECT name, price, warranty_available, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee_available, exclusive_offer FROM Services ;
Για περισσότερες πληροφορίες σχετικά με τον τρόπο συνδυασμού των προτάσεων SELECT χρησιμοποιώντας τον τελεστή UNION, ανατρέξτε στο θέμα Συνδυασμός των αποτελεσμάτων πολλών ερωτημάτων επιλογής με χρήση ενός ερωτήματος συνένωσης.