Όταν θέλετε να ανακτήσετε δεδομένα από μια βάση δεδομένων, ζητάτε τα δεδομένα χρησιμοποιώντας Structured Query Language ή SQL. Η SQL είναι μια γλώσσα υπολογιστή που μοιάζει πολύ με τα Αγγλικά, αλλά που τα προγράμματα βάσεων δεδομένων καταλαβαίνουν. Κάθε ερώτημα που εκτελείτε χρησιμοποιεί SQL στο παρασκήνιο.
Η κατανόηση του τρόπου λειτουργίας της SQL μπορεί να σας βοηθήσει να δημιουργήσετε καλύτερα ερωτήματα και μπορεί να σας διευκολύνει να κατανοήσετε πώς μπορείτε να διορθώσετε ένα ερώτημα που δεν επιστρέφει τα αποτελέσματα που θέλετε.
Αυτό είναι ένα σύνολο άρθρων σχετικά με την SQL της Access. Αυτό το άρθρο περιγράφει τη βασική χρήση της SQL για την επιλογή δεδομένων και χρησιμοποιεί παραδείγματα για την απεικόνιση της σύνταξης SQL.
Σε αυτό το άρθρο
- Τι είναι η SQL;
- Βασικοί όροι SQL: SELECT, FROM και WHERE
- Ταξινόμηση των αποτελεσμάτων: ΚΑΤΆΤΑΞΗ ΚΑΤΆ
- Εργασία με δεδομένα που έχουν συνοψιστεί: GROUP BY και HAVING
- Συνδυασμός αποτελεσμάτων ερωτήματος: UNION
Τι είναι η 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 | Καθορίζει τα κριτήρια πεδίου που πρέπει να πληροί κάθε εγγραφή που πρόκειται να συμπεριληφθεί στα αποτελέσματα. | Όχι |
| ΚΑΤΆΤΑΞΗ ΚΑΤΆ | Καθορίζει τον τρόπο ταξινόμησης των αποτελεσμάτων. | Όχι |
| 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. Περισσότερες πληροφορίες σχετικά με τον τρόπο χρήσης αυτών των όρων παρουσιάζονται σε αυτά τα πρόσθετα άρθρα:
Ταξινόμηση των αποτελεσμάτων: ΚΑΤΆΤΑΞΗ ΚΑΤΆ
Όπως το 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 που συνδυάζετε πρέπει να έχουν τον ίδιο αριθμό πεδίων εξόδου, με την ίδια σειρά και με τους ίδιους ή συμβατούς τύπους δεδομένων. Όταν εκτελείτε το ερώτημα, τα δεδομένα από κάθε σύνολο αντίστοιχων πεδίων συνδυάζονται σε ένα πεδίο εξόδου, έτσι ώστε το αποτέλεσμα του ερωτήματος να έχει τον ίδιο αριθμό πεδίων με κάθε μία από τις προτάσεις SELECT.
Σημείωση
Για τους σκοπούς ενός ερωτήματος συνένωσης, οι τύποι δεδομένων "Αριθμός" και "Κείμενο" είναι συμβατοί.
Όταν χρησιμοποιείτε τον τελεστή UNION, μπορείτε επίσης να καθορίσετε εάν τα αποτελέσματα του ερωτήματος θα περιλαμβάνουν διπλότυπες γραμμές, εάν υπάρχουν, χρησιμοποιώντας τη λέξη-κλειδί ALL.
Η βασική σύνταξη SQL για ένα ερώτημα συνένωσης που συνδυάζει δύο προτάσεις SELECT είναι η εξής:
SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;
Για παράδειγμα, ας υποθέσουμε ότι έχετε έναν πίνακα με το όνομα "Προϊόντα" και έναν άλλο πίνακα με το όνομα "Υπηρεσίες". Και οι δύο πίνακες έχουν πεδία που περιέχουν το όνομα του προϊόντος ή της υπηρεσίας, την τιμή, την εγγύηση ή τη διαθεσιμότητα της εγγύησης, καθώς και το εάν προσφέρετε το προϊόν ή την υπηρεσία αποκλειστικά. Παρόλο που ο πίνακας "Προϊόντα" αποθηκεύει πληροφορίες σχετικά με την εγγύηση και ο πίνακας "Υπηρεσίες" αποθηκεύει πληροφορίες σχετικά με τις εγγυήσεις, οι βασικές πληροφορίες είναι οι ίδιες (ανεξάρτητα αν ένα συγκεκριμένο προϊόν ή υπηρεσία περιλαμβάνει μια υπόσχεση ποιότητας). Μπορείτε να χρησιμοποιήσετε ένα ερώτημα συνένωσης, όπως το παρακάτω, για να συνδυάσετε τα τέσσερα πεδία από τους δύο πίνακες:
SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;
Για περισσότερες πληροφορίες σχετικά με τον τρόπο συνδυασμού προτάσεων SELECT χρησιμοποιώντας τον τελεστή UNION, ανατρέξτε στο θέμα Συνδυασμός των αποτελεσμάτων πολλών ερωτημάτων επιλογής με χρήση ενός ερωτήματος συνένωσης.