Καθένας από εμάς συναντά και χρησιμοποιεί τακτικά διάφορες βάσεις δεδομένων. Όταν επιλέγουμε μια διεύθυνση email, εργαζόμαστε με μια βάση δεδομένων. Οι βάσεις δεδομένων χρησιμοποιούν υπηρεσίες αναζήτησης, οι τράπεζες για την αποθήκευση δεδομένων πελατών και ούτω καθεξής.
Όμως, παρά τη συνεχή χρήση βάσεων δεδομένων, ακόμη και για πολλούς προγραμματιστές συστήματα λογισμικούυπάρχουν πολλά "κενά σημεία" λόγω διαφορετικών ερμηνειών των ίδιων όρων. Θα δώσουμε έναν σύντομο ορισμό των βασικών όρων της βάσης δεδομένων πριν εξετάσουμε τη γλώσσα SQL. Ετσι.
Βάση δεδομένων - ένα αρχείο ή ένα σύνολο αρχείων για την αποθήκευση ταξινομημένων δομών δεδομένων και των σχέσεών τους. Πολύ συχνά, μια βάση δεδομένων ονομάζεται σύστημα διαχείρισης - είναι μόνο μια αποθήκη πληροφοριών σε μια συγκεκριμένη μορφή και μπορεί να λειτουργήσει με διάφορα DBMS.
Τραπέζι - Ας φανταστούμε έναν φάκελο που αποθηκεύει έγγραφα ομαδοποιημένα σύμφωνα με ένα συγκεκριμένο χαρακτηριστικό, για παράδειγμα, μια λίστα παραγγελιών για τον τελευταίο μήνα. Αυτός είναι ο πίνακας στον υπολογιστή. Ένας ξεχωριστός πίνακας έχει το δικό του μοναδικό όνομα.
Τύπος δεδομένων - το είδος των πληροφοριών που επιτρέπεται να αποθηκευτούν σε μια συγκεκριμένη στήλη ή σειρά. Μπορεί να είναι αριθμοί ή κείμενο συγκεκριμένης μορφής.
Στήλη και σειρά- Όλοι έχουμε δουλέψει με υπολογιστικά φύλλα που έχουν επίσης γραμμές και στήλες. Οποιαδήποτε σχεσιακή βάση δεδομένων λειτουργεί με πίνακες με τον ίδιο τρόπο. Οι σειρές μερικές φορές ονομάζονται εγγραφές.
πρωτεύων κλειδί- κάθε γραμμή πίνακα μπορεί να έχει μία ή περισσότερες στήλες για να την προσδιορίζει μοναδικά. Χωρίς πρωτεύον κλειδί, είναι πολύ δύσκολο να ενημερώσετε, να τροποποιήσετε και να διαγράψετε τις επιθυμητές σειρές.
SQL(Αγγλικά - δομημένη γλώσσα ερωτημάτων) αναπτύχθηκε μόνο για εργασία με βάσεις δεδομένων και είναι επί του παρόντος το πρότυπο για όλα τα δημοφιλή DBMS. Η σύνταξη της γλώσσας αποτελείται από μικρό αριθμό τελεστών και είναι εύκολη στην εκμάθηση. Όμως, παρά την εξωτερική απλότητα, επιτρέπει δημιουργία sqlερωτήματα για πολύπλοκες λειτουργίες με βάση δεδομένων οποιουδήποτε μεγέθους.
Από το 1992 υπάρχει ένα γενικά αποδεκτό πρότυπο που ονομάζεται ANSI SQL. Καθορίζει τη βασική σύνταξη και τις λειτουργίες των τελεστών και υποστηρίζεται από όλους τους ηγέτες της αγοράς DBMS, όπως η ORACLE. Είναι αδύνατο να καλύψουμε όλες τις δυνατότητες της γλώσσας σε ένα μικρό άρθρο, επομένως θα εξετάσουμε εν συντομία μόνο βασικά ερωτήματα SQL. Τα παραδείγματα δείχνουν ξεκάθαρα την απλότητα και τις δυνατότητες της γλώσσας:
Όλες οι στήλες σε έναν πίνακα βάσης δεδομένων αποθηκεύουν τον ίδιο τύπο δεδομένων. Οι τύποι δεδομένων στην SQL είναι οι ίδιοι όπως σε άλλες γλώσσες προγραμματισμού.
Υπάρχουν δύο τρόποι για να δημιουργήσετε νέες βάσεις δεδομένων, πίνακες και άλλα ερωτήματα στην SQL:
Μια νέα βάση δεδομένων δημιουργείται από τον χειριστή ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ<наименование базы данных>; . Όπως μπορείτε να δείτε, η σύνταξη είναι απλή και συνοπτική.
Δημιουργούμε πίνακες μέσα στη βάση δεδομένων χρησιμοποιώντας την πρόταση CREATE TABLE με τις ακόλουθες παραμέτρους:
Για παράδειγμα, ας δημιουργήσουμε έναν πίνακα εμπορευμάτων με τις ακόλουθες στήλες:
Δημιουργούμε έναν πίνακα:
ΔΗΜΙΟΥΡΓΙΑ ΤΡΑΠΕΖΙΟΥ Εμπορεύματος
(commodity_id CHAR(15) NOT NULL,
vendor_id CHAR(15) NOT NULL,
commodity_name CHAR(254) NULL,
commodity_price DECIMAL(8,2) NULL,
commodity_desc VARCHAR(1000) NULL);
Ο πίνακας έχει πέντε στήλες. Μετά το όνομα ακολουθεί ο τύπος δεδομένων, οι στήλες χωρίζονται με κόμμα. Η τιμή μιας στήλης μπορεί να είναι κενή (NULL) ή πρέπει να συμπληρωθεί (NOT NULL), και αυτό καθορίζεται όταν δημιουργείται ο πίνακας.
Ο τελεστής επιλογής δεδομένων είναι το πιο συχνά χρησιμοποιούμενο ερώτημα SQL. Για να λάβετε πληροφορίες, πρέπει να καθορίσετε τι θέλουμε να επιλέξουμε από έναν τέτοιο πίνακα. Πρώτα ένα απλό παράδειγμα:
ΕΠΙΛΟΓΗ_όνομα_εμπόρευμα ΑΠΟ εμπόρευμα
Μετά την πρόταση SELECT, καθορίζουμε το όνομα της στήλης για τη λήψη πληροφοριών και το FROM ορίζει τον πίνακα.
Το αποτέλεσμα της εκτέλεσης του ερωτήματος θα είναι όλες οι σειρές του πίνακα με τιμές Commodity_name με τη σειρά με την οποία εισήχθησαν στη βάση δεδομένων, δηλ. χωρίς καμία ταξινόμηση. Μια πρόσθετη ρήτρα ORDER BY χρησιμοποιείται για την παραγγελία του αποτελέσματος.
Για να κάνετε ερώτημα σε πολλά πεδία, παραθέστε τα διαχωρισμένα με κόμμα, όπως στο ακόλουθο παράδειγμα:
SELECT commodity_id, commodity_name, commodity_price FROM Commodity
Είναι δυνατό να ληφθεί η τιμή όλων των στηλών μιας γραμμής ως αποτέλεσμα ερωτήματος. Για αυτό, χρησιμοποιείται το σύμβολο "*":
ΕΠΙΛΟΓΗ * ΑΠΟ εμπόρευμα
Για να προσθέσετε μια σειρά σε έναν πίνακα, χρησιμοποιούνται ερωτήματα SQL με την πρόταση INSERT. Η προσθήκη μπορεί να γίνει με τρεις τρόπους:
Για να προσθέσετε μια πλήρη σειρά, πρέπει να καθορίσετε το όνομα του πίνακα και τις τιμές των στηλών (πεδίων) της νέας σειράς. Εδώ είναι ένα παράδειγμα:
INSERT INTO Commodity VALUES("106", "50", "Coca-Cola", "1.68", "Χωρίς αλκοόλ ,)
Το παράδειγμα προσθέτει ένα νέο προϊόν στον πίνακα. Οι τιμές καθορίζονται μετά τις VALUES για κάθε στήλη. Εάν δεν υπάρχει αντίστοιχη τιμή για τη στήλη, τότε πρέπει να καθοριστεί NULL. Οι στήλες συμπληρώνονται με τιμές με τη σειρά που καθορίστηκε κατά τη δημιουργία του πίνακα.
Εάν προσθέσετε μόνο μέρος μιας σειράς, πρέπει να καθορίσετε ρητά τα ονόματα των στηλών, όπως στο παράδειγμα:
INSERT INTO Commodity (commodity_id, vendor_id, commodity_name)
VALUES ("106 ", '50", "Coca Cola")
Εισαγάγαμε μόνο τα αναγνωριστικά του προϊόντος, τον προμηθευτή και το όνομά του και αφήσαμε τα υπόλοιπα πεδία κενά.
Το INSERT χρησιμοποιείται κυρίως για την προσθήκη σειρών, αλλά μπορεί επίσης να χρησιμοποιηθεί για την προσθήκη των αποτελεσμάτων μιας πρότασης SELECT.
Για να αλλάξετε πληροφορίες στα πεδία ενός πίνακα βάσης δεδομένων, πρέπει να χρησιμοποιήσετε τη δήλωση UPDATE. Ο χειριστής μπορεί να χρησιμοποιηθεί με δύο τρόπους:
Το UPDATE αποτελείται από τρία κύρια στοιχεία:
Εξετάστε ένα παράδειγμα. Ας υποθέσουμε ότι η τιμή ενός προϊόντος με ID=106 έχει αλλάξει, επομένως αυτή η σειρά πρέπει να ενημερωθεί. Γράφουμε τον παρακάτω τελεστή:
ΕΝΗΜΕΡΩΣΗ ΣΕΤ Εμπορευμάτων commodity_price = "3.2" WHERE commodity_id = "106"
Καθορίσαμε το όνομα του πίνακα, στην περίπτωσή μας Commodity, όπου θα γίνει η ενημέρωση, μετά το SET - τη νέα τιμή της στήλης και βρήκαμε την επιθυμητή εγγραφή ορίζοντας την επιθυμητή τιμή ID στο WHERE.
Για να αλλάξετε πολλές στήλες, καθορίστε πολλά ζεύγη στήλης-τιμής διαχωρισμένα με κόμμα μετά την πρόταση SET. Ας δούμε ένα παράδειγμα στο οποίο ενημερώνεται το όνομα και η τιμή του προϊόντος:
ΕΝΗΜΕΡΩΣΗ ΣΕΤ Εμπορευμάτων commodity_name='Fanta', commodity_price = "3.2" WHERE commodity_id = "106"
Για να διαγράψετε πληροφορίες σε μια στήλη, μπορείτε να τις ορίσετε σε NULL εάν το επιτρέπει η δομή του πίνακα. Πρέπει να θυμόμαστε ότι το NULL είναι ακριβώς η τιμή "όχι" και όχι το μηδέν με τη μορφή κειμένου ή αριθμού. Κατάργηση περιγραφής προϊόντος:
ΕΝΗΜΕΡΩΣΗ ΣΕΤ Εμπορευμάτων commodity_desc = NULL WHERE commodity_id = "106"
Τα ερωτήματα SQL για τη διαγραφή σειρών σε έναν πίνακα εκτελούνται με την πρόταση DELETE. Υπάρχουν δύο περιπτώσεις χρήσης:
Ένα παράδειγμα διαγραφής μιας γραμμής από έναν πίνακα:
DELETE FROM Commodity WHERE commodity_id = "106"
Μετά το DELETE FROM καθορίζουμε το όνομα του πίνακα στον οποίο θα διαγραφούν οι σειρές. Ο όρος WHERE περιέχει μια συνθήκη βάσει της οποίας οι σειρές θα επιλέγονται για διαγραφή. Στο παράδειγμα, διαγράφουμε τη σειρά προϊόντων με ID=106. Το να προσδιορίσετε το WHERE είναι πολύ σημαντικό. Η παράλειψη αυτής της δήλωσης θα διαγράψει όλες τις σειρές στον πίνακα. Αυτό ισχύει και για την αλλαγή της τιμής των πεδίων.
Η δήλωση DELETE δεν προσδιορίζει ονόματα στηλών ή μεταχαρακτήρες. Καταργεί πλήρως τις γραμμές, αλλά δεν μπορεί να αφαιρέσει ούτε μία στήλη.
Συνήθως χρησιμοποιείται διαδραστικά για τη δημιουργία πινάκων, βάσεων δεδομένων, διαχείρισης, τροποποίησης, ανάλυσης δεδομένων στη βάση δεδομένων και για την υλοποίηση ερωτημάτων SQL Access μέσω ενός βολικού διαδραστικού σχεδιαστή ερωτημάτων (Query Designer), χρησιμοποιώντας τον οποίο μπορείτε να δημιουργήσετε και να εκτελέσετε αμέσως δηλώσεις SQL οποιασδήποτε πολυπλοκότητας.
Υποστηρίζεται επίσης η λειτουργία πρόσβασης διακομιστή, στην οποία το Access DBMS μπορεί να χρησιμοποιηθεί ως γεννήτρια ερωτημάτων SQL σε οποιαδήποτε πηγή δεδομένων ODBC. Αυτή η δυνατότητα επιτρέπει στις εφαρμογές της Access να αλληλεπιδρούν με οποιαδήποτε μορφή.
Δεδομένου ότι τα ερωτήματα SQL δεν διαθέτουν όλα τα χαρακτηριστικά των διαδικαστικών γλωσσών προγραμματισμού, όπως βρόχους, διακλαδώσεις κ.λπ., οι προμηθευτές DBMS αναπτύσσουν τη δική τους έκδοση της SQL με προηγμένες δυνατότητες. Πρώτα απ 'όλα, αυτή είναι υποστήριξη για αποθηκευμένες διαδικασίες και τυπικούς χειριστές διαδικαστικών γλωσσών.
Οι πιο κοινές διάλεκτοι της γλώσσας:
Το MySQL DBMS διανέμεται υπό τη Γενική Δημόσια Άδεια GNU. Υπάρχει εμπορική άδεια με δυνατότητα ανάπτυξης προσαρμοσμένων μονάδων. Ως αναπόσπαστο μέρος, περιλαμβάνεται στις πιο δημοφιλείς συγκροτήσεις διακομιστών Internet, όπως XAMPP, WAMP και LAMP, και είναι το πιο δημοφιλές DBMS για την ανάπτυξη εφαρμογών στο Διαδίκτυο.
Αναπτύχθηκε από την Sun Microsystems και επί του παρόντος συντηρείται από την Oracle Corporation. Υποστηρίζει βάσεις δεδομένων έως 64 terabyte, πρότυπο σύνταξης SQL:2003, αναπαραγωγή βάσεων δεδομένων και υπηρεσίες cloud.
Τα ερωτήματα στην Access είναι το κύριο εργαλείο για την επιλογή, την ενημέρωση και την επεξεργασία δεδομένων σε πίνακες βάσεων δεδομένων. Η Access, σύμφωνα με την έννοια των σχεσιακών βάσεων δεδομένων, χρησιμοποιεί τη δομημένη γλώσσα ερωτημάτων (SQL) για την εκτέλεση ερωτημάτων. Με τη βοήθεια εντολών SQL, υλοποιείται οποιοδήποτε ερώτημα στην Access.
Ο κύριος τύπος αιτήματος είναι μια επιλογή επιλογής. Το αποτέλεσμα αυτού του ερωτήματος είναι ένας νέος πίνακας που υπάρχει μέχρι να κλείσει το ερώτημα. Οι εγγραφές σχηματίζονται συνδυάζοντας τις εγγραφές των πινάκων στους οποίους είναι χτισμένο το ερώτημα. Η μέθοδος συνδυασμού εγγραφών πίνακα καθορίζεται κατά τον καθορισμό της σχέσης τους στο σχήμα δεδομένων ή κατά τη δημιουργία ενός ερωτήματος. Οι συνθήκες επιλογής που διατυπώνονται στο ερώτημα σάς επιτρέπουν να φιλτράρετε τις εγγραφές που αποτελούν το αποτέλεσμα της ένωσης πινάκων.
Μπορούν να δημιουργηθούν διάφοροι τύποι ερωτημάτων στην Access:
Τα ερωτήματα στην Access σε λειτουργία σχεδίασης περιέχουν ένα σχήμα δεδομένων που εμφανίζει τους πίνακες που χρησιμοποιούνται και μια φόρμα ερωτήματος στην οποία κατασκευάζονται η δομή του πίνακα ερωτημάτων και οι συνθήκες για την επιλογή εγγραφών (Εικ. 4.1).
Χρησιμοποιώντας ένα ερώτημα, μπορείτε να εκτελέσετε τους ακόλουθους τύπους επεξεργασίας δεδομένων:
Τα ερωτήματα στην Access χρησιμεύουν ως πηγές εγγραφής για άλλα ερωτήματα, φόρμες, αναφορές. Χρησιμοποιώντας ένα ερώτημα, μπορείτε να συλλέξετε πλήρεις πληροφορίες για να σχηματίσετε ένα έγγραφο συγκεκριμένης θεματικής περιοχής από πολλούς πίνακες και στη συνέχεια να το χρησιμοποιήσετε για να δημιουργήσετε μια φόρμα - μια ηλεκτρονική αναπαράσταση αυτού του εγγράφου. Εάν μια φόρμα ή μια αναφορά δημιουργηθεί από τον οδηγό με βάση πολλούς σχετικούς πίνακες, τότε δημιουργείται αυτόματα ένα ερώτημα για αυτούς ως πηγή εγγραφής.
Για επιδιόρθωση, παρακολουθήστε το εκπαιδευτικό βίντεο.
Η SQL χρησιμοποιείται για την ανάκτηση δεδομένων από τη βάση δεδομένων. Η SQL είναι μια γλώσσα προγραμματισμού που μοιάζει πολύ με την αγγλική αλλά προορίζεται για προγράμματα διαχείρισης βάσεων δεδομένων. Η SQL χρησιμοποιείται σε κάθε ερώτημα στην Access.
Η κατανόηση του τρόπου λειτουργίας της SQL σάς βοηθά να δημιουργείτε πιο ακριβή ερωτήματα και διευκολύνει την επιδιόρθωση ερωτημάτων που επιστρέφουν εσφαλμένα αποτελέσματα.
Αυτό το άρθρο είναι μέρος της σειράς άρθρων SQL for Access. Περιγράφει τα βασικά της χρήσης SQL για την ανάκτηση δεδομένων και παρέχει παραδείγματα σύνταξης SQL.
Η SQL είναι μια γλώσσα προγραμματισμού που έχει σχεδιαστεί για να λειτουργεί με σύνολα γεγονότων και τις σχέσεις μεταξύ τους. Προγράμματα σχεσιακής βάσης δεδομένων όπως το Microsoft Office Access χρησιμοποιούν SQL για να χειριστούν δεδομένα. Σε αντίθεση με πολλές γλώσσες προγραμματισμού, η SQL είναι εύκολη στην ανάγνωση και κατανόηση ακόμη και για αρχάριους. Όπως πολλές γλώσσες προγραμματισμού, η SQL είναι ένα διεθνές πρότυπο που αναγνωρίζεται από επιτροπές προτύπων όπως το ISO και το ANSI.
Τα σύνολα δεδομένων περιγράφονται στην SQL για να βοηθήσουν στην απάντηση ερωτήσεων. Όταν χρησιμοποιείτε SQL, πρέπει να χρησιμοποιείται η σωστή σύνταξη. Η σύνταξη είναι ένα σύνολο κανόνων που επιτρέπουν τον σωστό συνδυασμό των στοιχείων μιας γλώσσας. Σύνταξη SQLβασίζεται στην αγγλική σύνταξη και μοιράζεται πολλά στοιχεία με τη σύνταξη της γλώσσας της Visual Basic for Applications (VBA).
Για παράδειγμα, μια απλή πρόταση SQL που ανακτά μια λίστα με τα επώνυμα των επαφών με το όνομα Mary μπορεί να μοιάζει με αυτό:
ΕΠΙΛΟΓΗ Επώνυμου
ΑΠΟ Επαφές
WHERE First_Name = "Mary";
Σημείωση: Γλώσσα SQLχρησιμοποιείται όχι μόνο για την εκτέλεση εργασιών σε δεδομένα, αλλά και για τη δημιουργία και τροποποίηση της δομής των αντικειμένων της βάσης δεδομένων, όπως πίνακες. Το τμήμα της SQL που χρησιμοποιείται για τη δημιουργία και την τροποποίηση αντικειμένων βάσης δεδομένων ονομάζεται DDL. Το DDL δεν καλύπτεται σε αυτό το άρθρο. Επιπλέον πληροφορίεςανατρέξτε στην ενότητα Δημιουργία και τροποποίηση πινάκων ή ευρετηρίων με ένα ερώτημα ορισμού δεδομένων.
Η πρόταση SELECT χρησιμοποιείται για να περιγράψει ένα σύνολο δεδομένων στην SQL. Περιέχει μια πλήρη περιγραφή του συνόλου δεδομένων που πρόκειται να ανακτηθούν από τη βάση δεδομένων, συμπεριλαμβανομένων των εξής:
πίνακες που περιέχουν δεδομένα·
συνδέσεις μεταξύ δεδομένων από διαφορετικές πηγές·
πεδία ή υπολογισμοί βάσει των οποίων επιλέγονται τα δεδομένα·
προϋποθέσεις επιλογής που πρέπει να πληρούνται από τα δεδομένα που περιλαμβάνονται στο αποτέλεσμα του ερωτήματος·
ανάγκη και τρόπος διαλογής.
Μια δήλωση SQL αποτελείται από πολλά μέρη που ονομάζονται ρήτρες. Κάθε πρόταση σε μια πρόταση SQL έχει έναν σκοπό. Ορισμένες προσφορές είναι υποχρεωτικές. Ο παρακάτω πίνακας παραθέτει τις πιο συχνά χρησιμοποιούμενες εντολές SQL.
ρήτρα SQL | Περιγραφή | Επιτακτικός |
---|---|---|
Καθορίζει τα πεδία που περιέχουν τα επιθυμητά δεδομένα. |
||
Καθορίζει τους πίνακες που περιέχουν τα πεδία που καθορίζονται στον όρο SELECT. |
||
Καθορίζει τα κριτήρια επιλογής πεδίου που πρέπει να πληρούν όλες οι εγγραφές που περιλαμβάνονται στα αποτελέσματα. |
||
Καθορίζει τη σειρά ταξινόμησης για τα αποτελέσματα. |
||
Σε μια πρόταση SQL που περιέχει συγκεντρωτικές συναρτήσεις, καθορίζει τα πεδία για τα οποία δεν υπολογίζεται συνοπτική τιμή στον όρο SELECT. |
Μόνο αν υπάρχουν τέτοια πεδία |
|
Σε μια πρόταση SQL που περιέχει συγκεντρωτικές συναρτήσεις, ορίζει τις συνθήκες που εφαρμόζονται στα πεδία για τα οποία υπολογίζεται η συνοπτική τιμή στον όρο SELECT. |
Κάθε πρόταση SQL αποτελείται από όρους που μπορούν να συγκριθούν με μέρη του λόγου. Ο παρακάτω πίνακας παραθέτει τους τύπους όρων SQL.
Όρος SQL | Συγκρίσιμο μέρος του λόγου | Ορισμός | Παράδειγμα |
---|---|---|---|
αναγνωριστικό |
ουσιαστικό |
Ένα όνομα που χρησιμοποιείται για την αναγνώριση ενός αντικειμένου βάσης δεδομένων, όπως ένα όνομα πεδίου. |
Πελάτες.[PhoneNumber] |
χειριστής |
ρήμα ή επίρρημα |
Μια λέξη-κλειδί που αντιπροσωπεύει ή τροποποιεί μια ενέργεια. |
|
συνεχής |
ουσιαστικό |
Μια τιμή που δεν αλλάζει, όπως ένας αριθμός ή NULL. |
|
έκφραση |
επίθετο |
Ένας συνδυασμός αναγνωριστικών, τελεστών, σταθερών και συναρτήσεων που αξιολογείται σε μία μόνο τιμή. |
>> Αγαθά.[Τιμή] |
Η γενική μορφή των δηλώσεων SQL είναι:
ΕΠΙΛΟΓΗ πεδίου_1
ΑΠΟ πίνακα_1
WHERE κριτήριο_1
;
Σημειώσεις:
Η Access δεν σέβεται τις αλλαγές γραμμής στη δήλωση SQL. Παρόλα αυτά, συνιστάται να ξεκινάτε κάθε πρόταση σε μια νέα γραμμή, έτσι ώστε η πρόταση SQL να είναι ευανάγνωστη τόσο για το άτομο που την έγραψε όσο και για όλους τους άλλους.
Κάθε πρόταση SELECT τελειώνει με ένα ερωτηματικό (;). Το ερωτηματικό μπορεί να βρίσκεται είτε στο τέλος της τελευταίας πρότασης είτε σε ξεχωριστή γραμμή στο τέλος της πρότασης SQL.
Το ακόλουθο παράδειγμα δείχνει πώς μπορεί να μοιάζει μια πρόταση SQL στην Access για ένα απλό ερώτημα επιλογής.
1. ρήτρα SELECT
2. Ρήτρα ΑΠΟ
3. Ρήτρα WHERE
Ας αναλύσουμε το παράδειγμα με προτάσεις για να κατανοήσουμε πώς λειτουργεί η σύνταξη SQL.
SELECT , Εταιρεία
Αυτή είναι μια ρήτρα SELECT. Περιέχει μια δήλωση (SELECT) ακολουθούμενη από δύο αναγνωριστικά ("[Διεύθυνση Email]" και "Εταιρεία").
Εάν το αναγνωριστικό περιέχει κενά ή ειδικές πινακίδες(για παράδειγμα, "Διεύθυνση ηλεκτρονικού ταχυδρομείου"), πρέπει να περικλείεται σε αγκύλες.
Στον όρο SELECT, δεν χρειάζεται να καθορίσετε τους πίνακες που περιέχουν τα πεδία και δεν μπορείτε να καθορίσετε τις συνθήκες επιλογής που πρέπει να πληρούνται από τα δεδομένα που θα συμπεριληφθούν στα αποτελέσματα.
Σε μια πρόταση SELECT, η ρήτρα SELECT βρίσκεται πάντα πριν από την πρόταση FROM.
ΑΠΟ Επαφές
Αυτή είναι η ρήτρα FROM. Περιέχει μια δήλωση (FROM) ακολουθούμενη από ένα αναγνωριστικό (Επαφές).
Η πρόταση FROM δεν καθορίζει τα πεδία προς επιλογή.
WHERE City="Σιάτλ"
Αυτή είναι η ρήτρα WHERE. Περιέχει έναν τελεστή (WHERE) ακολουθούμενο από μια έκφραση (City="Rostov").
Μπορείτε να κάνετε πολλά πράγματα με τις ρήτρες SELECT, FROM και WHERE. Για περισσότερες πληροφορίες σχετικά με τον τρόπο χρήσης αυτών των προσφορών, ανατρέξτε στα ακόλουθα άρθρα:
Όπως το Microsoft Excel, η Access σάς επιτρέπει να ταξινομήσετε τα αποτελέσματα ενός ερωτήματος σε έναν πίνακα. Χρησιμοποιώντας τον όρο ORDER BY, μπορείτε επίσης να καθορίσετε πώς θα ταξινομηθούν τα αποτελέσματα κατά την εκτέλεση του ερωτήματος. Εάν χρησιμοποιείται ρήτρα ORDER BY, πρέπει να βρίσκεται στο τέλος της πρότασης SQL.
Η ρήτρα ORDER BY περιέχει μια λίστα πεδίων προς ταξινόμηση, με την ίδια σειρά με την οποία θα εφαρμοστεί η ταξινόμηση.
Ας υποθέσουμε, για παράδειγμα, ότι θέλετε να ταξινομήσετε τα αποτελέσματα πρώτα κατά το πεδίο "Εταιρεία" με φθίνουσα σειρά και, στη συνέχεια, εάν υπάρχουν εγγραφές με την ίδια τιμή στο πεδίο "Εταιρεία", ταξινομήστε τα κατά τη διεύθυνση "E-mail " πεδίο με αύξουσα σειρά. Η ρήτρα ORDER BY θα μοιάζει με αυτό:
ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ ΕΤΑΙΡΕΙΑ DESC,
Σημείωση:Από προεπιλογή, η Access ταξινομεί τις τιμές με αύξουσα σειρά (Α έως Ω, από μικρότερη προς μεγαλύτερη). Για να ταξινομήσετε τις τιμές με φθίνουσα σειρά, πρέπει να καθορίσετε λέξη-κλειδί DESC.
Για περισσότερες πληροφορίες σχετικά με την ρήτρα ORDER BY, ανατρέξτε στην ενότητα ORDER BY clause.
Μερικές φορές χρειάζεται να εργαστείτε με συνοπτικά δεδομένα, όπως οι συνολικές μηνιαίες πωλήσεις ή τα πιο ακριβά είδη σε απόθεμα. Για να γίνει αυτό, η ρήτρα SELECT εφαρμόζει μια συγκεντρωτική συνάρτηση στο πεδίο. Για παράδειγμα, εάν το αποτέλεσμα ενός ερωτήματος είναι να επιστρέψει τον αριθμό των διευθύνσεων ηλεκτρονικού ταχυδρομείου για κάθε εταιρεία, η ρήτρα SELECT μπορεί να μοιάζει με αυτό:
Δυνατότητα χρήσης του ενός ή του άλλου αθροιστική συνάρτησηεξαρτάται από τον τύπο των δεδομένων στο πεδίο και την επιθυμητή έκφραση. Για περισσότερες πληροφορίες σχετικά με τις διαθέσιμες συναρτήσεις συγκεντρωτικών στοιχείων, ανατρέξτε στο άρθρο Συναρτήσεις συγκεντρωτικών στοιχείων SQL.
Όταν χρησιμοποιείτε συγκεντρωτικές συναρτήσεις, συνήθως χρειάζεται να δημιουργήσετε μια ρήτρα GROUP BY. Ο όρος GROUP BY καθορίζει όλα τα πεδία στα οποία δεν εφαρμόζεται η συγκεντρωτική συνάρτηση. Εάν οι συγκεντρωτικές συναρτήσεις ισχύουν σε όλα τα πεδία ενός ερωτήματος, δεν χρειάζεται να δημιουργήσετε μια πρόταση GROUP BY.
Η ρήτρα GROUP BY πρέπει να ακολουθεί αμέσως την ρήτρα WHERE ή FROM εάν δεν υπάρχει ρήτρα WHERE. Στην ρήτρα GROUP BY, τα πεδία καθορίζονται με την ίδια σειρά όπως στον όρο SELECT.
Ας συνεχίσουμε το προηγούμενο παράδειγμα. Εάν ο όρος SELECT εφαρμόζει τη συνάρτηση συγκεντρωτικών μόνο στο πεδίο [Διεύθυνση Email], τότε ο όρος GROUP BY θα μοιάζει με αυτό:
ΟΜΑΔΑ ΑΝΑ Εταιρία
Για περισσότερες πληροφορίες σχετικά με την ρήτρα GROUP BY, ανατρέξτε στην ενότητα GROUP BY ρήτρα.
Εάν θέλετε να καθορίσετε συνθήκες για τον περιορισμό των αποτελεσμάτων, αλλά το πεδίο στο οποίο θέλετε να τις εφαρμόσετε χρησιμοποιείται σε μια συγκεντρωτική συνάρτηση, δεν μπορείτε να χρησιμοποιήσετε μια ρήτρα WHERE. Αντ' αυτού θα πρέπει να χρησιμοποιηθεί η ρήτρα HAVING. Ο όρος HAVING λειτουργεί το ίδιο με τον όρο WHERE, αλλά χρησιμοποιείται για συγκεντρωτικά δεδομένα.
Ας υποθέσουμε, για παράδειγμα, ότι η συνάρτηση AVG (η οποία υπολογίζει τη μέση τιμή) εφαρμόζεται στο πρώτο πεδίο στον όρο SELECT:
SELECT COUNT(), Εταιρεία
Εάν θέλετε να περιορίσετε τα αποτελέσματα ερωτημάτων με βάση την τιμή της συνάρτησης COUNT, δεν μπορείτε να εφαρμόσετε μια συνθήκη φίλτρου σε αυτό το πεδίο στον όρο WHERE. Αντίθετα, η συνθήκη θα πρέπει να τοποθετηθεί σε μια ρήτρα HAVING. Για παράδειγμα, εάν θέλετε το ερώτημα να επιστρέφει σειρές μόνο εάν η εταιρεία έχει πολλές διευθύνσεις ηλεκτρονικού ταχυδρομείου, μπορείτε να χρησιμοποιήσετε την ακόλουθη ρήτρα HAVING:
HAVING COUNT()>1
Σημείωση:Ένα ερώτημα μπορεί να περιλαμβάνει και έναν όρο WHERE και έναν όρο HAVING, με τις προϋποθέσεις για τα πεδία που δεν χρησιμοποιούνται στις συγκεντρωτικές συναρτήσεις που καθορίζονται στον όρο WHERE και οι συνθήκες για τα πεδία που χρησιμοποιούνται στις συναρτήσεις συγκεντρωτικών καθορίζονται στον όρο HAVING .
Για περισσότερες πληροφορίες σχετικά με την ρήτρα HAVING, δείτε την ρήτρα HAVING.
Ο τελεστής UNION χρησιμοποιείται για την ταυτόχρονη προβολή όλων των δεδομένων που επιστρέφονται από πολλαπλά παρόμοια επιλεγμένα ερωτήματα ως συνδυασμένο σύνολο.
Ο τελεστής UNION σάς επιτρέπει να συνδυάσετε δύο δηλώσεις SELECT σε μία. Οι συνδυασμένες δηλώσεις SELECT πρέπει να έχουν τον ίδιο αριθμό και τη σειρά των πεδίων εξόδου με τους ίδιους ή συμβατούς τύπους δεδομένων. Όταν εκτελείται ένα ερώτημα, τα δεδομένα από κάθε σύνολο πεδίων που ταιριάζουν συνδυάζονται σε ένα ενιαίο πεδίο εξόδου, επομένως η έξοδος ερωτήματος έχει τόσα πεδία όσα κάθε πρόταση SELECT ξεχωριστά.
Σημείωση:Σε ερωτήματα ένωσης, οι αριθμητικοί τύποι δεδομένων και οι τύποι δεδομένων κειμένου είναι συμβατοί.
Χρησιμοποιώντας τον τελεστή UNION, μπορείτε να καθορίσετε εάν διπλότυπες σειρές, εάν υπάρχουν, θα πρέπει να περιλαμβάνονται στα αποτελέσματα του ερωτήματος. Για να το κάνετε αυτό, χρησιμοποιήστε τη λέξη-κλειδί ALL.
Ένα ερώτημα για τη σύνδεση δύο εντολών SELECT έχει την ακόλουθη βασική σύνταξη:
ΕΠΙΛΟΓΗ πεδίου_1
ΑΠΟ πίνακα_1
ΕΝΩΣΗ
ΕΠΙΛΟΓΗ πεδίου_α
ΑΠΟ πίνακα_α
;
Ας υποθέσουμε, για παράδειγμα, ότι υπάρχουν δύο πίνακες που ονομάζονται «Προϊόντα» και «Υπηρεσίες». Και οι δύο πίνακες περιέχουν πεδία με το όνομα του προϊόντος ή της υπηρεσίας, πληροφορίες σχετικά με την τιμή και την εγγύηση, καθώς και ένα πεδίο που υποδεικνύει την αποκλειστικότητα του προσφερόμενου προϊόντος ή υπηρεσίας. Παρά το γεγονός ότι οι πίνακες «Προϊόντα» και «Υπηρεσίες» παρέχουν ΔΙΑΦΟΡΕΤΙΚΟΙ ΤΥΠΟΙεγγυήσεις, οι βασικές πληροφορίες είναι οι ίδιες (είτε παρέχεται εγγύηση ποιότητας για μεμονωμένα προϊόντα ή υπηρεσίες). Για να ενώσετε τέσσερα πεδία από δύο πίνακες, μπορείτε να χρησιμοποιήσετε το ακόλουθο ερώτημα σύνδεσης:
ΕΠΙΛΕΞΤΕ όνομα, τιμή, εγγύηση_διαθέσιμη, αποκλειστική_προσφορά
ΑΠΟ Προϊόντα
ΕΝΩΣΗ ΟΛΩΝ
ΕΠΙΛΕΞΤΕ όνομα, τιμή, εγγύηση_διαθέσιμη, αποκλειστική_προσφορά
ΑΠΟ Υπηρεσίες
;
Για περισσότερες πληροφορίες σχετικά με το συνδυασμό εντολών SELECT χρησιμοποιώντας τον τελεστή UNION, ανατρέξτε στο άρθρο
Περιγραφή του εκπαιδευτικού έργου "Κατάστημα"Σχέδιο σύνδεσης πίνακα
Περιγραφή πινάκων
m_category - κατηγορίες προϊόντων
m_income - παραλαβή εμπορευμάτων
m_outcome - κατανάλωση αγαθών
m_product - κατάλογος, περιγραφή προϊόντος
m_supplier - κατάλογος; πληροφορίες προμηθευτή
m_unit - κατάλογος; μονάδες
Για να δοκιμάσετε πρακτικά τα παραδείγματα που δίνονται σε αυτό το σεμινάριο, πρέπει να έχετε διαθέσιμο το ακόλουθο λογισμικό:
Microsoft Access 2003 ή μεταγενέστερη έκδοση.
Για να μεταβείτε στη λειτουργία επεξεργασίας πεδίων πίνακα, επιλέξτε Λειτουργία σχεδίασης στον επάνω πίνακα:
Για να εμφανίσετε το αποτέλεσμα ενός ερωτήματος SQL, κάντε διπλό κλικ στο όνομα του ερωτήματος στο αριστερό παράθυρο:
Για να μεταβείτε στη λειτουργία επεξεργασίας ερωτημάτων SQL, επιλέξτε τη λειτουργία SQL στον επάνω πίνακα:
Ερώτημα SQL Q001.Ένα παράδειγμα ερωτήματος SQL για τη λήψη μόνο των απαιτούμενων πεδίων στην επιθυμητή ακολουθία:
SELECT dt, product_id, ποσό
Ερώτημα SQL Q002.Σε αυτό το παράδειγμα ερωτήματος SQL, ο χαρακτήρας αστερίσκου (*) χρησιμοποιείται για την εμφάνιση όλων των στηλών του πίνακα m_product, με άλλα λόγια, για να ληφθούν όλα τα πεδία της σχέσης m_product:
ΕΠΙΛΕΓΩ*
ΑΠΟ m_product;
ΑίτησηSQLQ003.Η δήλωση DISTINCT χρησιμοποιείται για την εξάλειψη των διπλότυπων εγγραφών και τη λήψη πολλών μοναδικών εγγραφών:
ΕΠΙΛΕΞΤΕ ΞΕΧΩΡΙΣΤΟ αναγνωριστικό προϊόντος
Ερώτημα SQL Q004.Η πρόταση ORDER BY χρησιμοποιείται για την ταξινόμηση (παραγγελίας) εγγραφών με βάση τις τιμές ενός συγκεκριμένου πεδίου. Το όνομα του πεδίου ακολουθεί την ρήτρα ORDER BY:
ΕΠΙΛΕΓΩ*
ΑΠΟ m_income
Ερώτημα SQL Q005.Η πρόταση ASC χρησιμοποιείται επιπλέον της πρότασης ORDER BY και χρησιμοποιείται για να ορίσει μια αύξουσα ταξινόμηση. Η πρόταση DESC χρησιμοποιείται επιπλέον της πρότασης ORDER BY και χρησιμοποιείται για να ορίσει μια φθίνουσα ταξινόμηση. Στην περίπτωση που δεν καθορίζονται ούτε ASC ούτε DESC, η παρουσία ASC (προεπιλογή) θεωρείται:
ΕΠΙΛΕΓΩ*
ΑΠΟ m_income
Ερώτημα SQL Q006.Για να επιλέξετε τις απαραίτητες εγγραφές από τον πίνακα, χρησιμοποιούνται διάφορες λογικές εκφράσεις που εκφράζουν τη συνθήκη επιλογής. Η δυαδική έκφραση έρχεται μετά την πρόταση WHERE. Ένα παράδειγμα λήψης από τον πίνακα m_income όλων των εγγραφών για τις οποίες η τιμή του ποσού είναι μεγαλύτερη από 200:
ΕΠΙΛΕΓΩ*
ΑΠΟ m_income
Ερώτημα SQL Q007.Για να εκφράσετε σύνθετες συνθήκες, χρησιμοποιήστε λογικές πράξειςΚΑΙ (σύνδεση), Ή (διάσπαση) και ΟΧΙ (λογική άρνηση). Ένα παράδειγμα λήψης από τον πίνακα m_outcome όλων των εγγραφών για τις οποίες η τιμή του ποσού είναι 20 και η τιμή τιμής είναι μεγαλύτερη ή ίση με 10:
τιμή
Ερώτημα SQL Q008.Για να ενώσετε δεδομένα από δύο ή περισσότερους πίνακες, χρησιμοποιήστε τις δηλώσεις ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ, ΑΡΙΣΤΕΡΑ ΣΥΝΔΕΣΗ, ΔΕΞΙΑ ΣΥΝΔΕΣΗ. Το ακόλουθο παράδειγμα ανακτά τα πεδία dt, product_id, ποσό, τιμή από τον πίνακα m_income και το πεδίο τίτλος από τον πίνακα m_product. Η εγγραφή του πίνακα m_income συνδέεται με την εγγραφή του πίνακα m_product όταν η τιμή του m_income.product_id είναι ίση με την τιμή του m_product.id:
Ερώτημα SQL Q009.Υπάρχουν δύο πράγματα στα οποία πρέπει να προσέξετε σε αυτό το ερώτημα SQL: 1) το κείμενο αναζήτησης περικλείεται σε μονά εισαγωγικά (")· 2) η ημερομηνία είναι σε μορφή #Month/Day/Year#, η οποία είναι σωστή για την MS Πρόσβαση. Σε άλλα συστήματα, η μορφή ημερομηνίας μπορεί να είναι διαφορετική. Ένα παράδειγμα εμφάνισης πληροφοριών σχετικά με την παραλαβή γάλακτος στις 12 Ιουνίου 2011. Δώστε προσοχή στη μορφή ημερομηνίας #6/12/2011#:
SELECT dt, product_id, τίτλος, ποσό, τιμή
Ερώτημα SQL Q010.Η εντολή BETWEEN χρησιμοποιείται για να ελέγξει εάν ένα εύρος τιμών ανήκει σε αυτήν. Ένα παράδειγμα ερωτήματος SQL που εμφανίζει πληροφορίες σχετικά με αγαθά που παραλήφθηκαν από την 1η Ιουνίου έως τις 30 Ιουνίου 2011:
ΕΠΙΛΕΓΩ*
ΑΠΟ m_income INNER JOIN m_product
Αίτημα Q011.Εμφανίζει πληροφορίες για προϊόντα από τον πίνακα m_product, οι κωδικοί του οποίου βρίσκονται επίσης στον πίνακα m_income:
ΕΠΙΛΕΓΩ*
ΑΠΟ m_product
Αίτημα Q012.Εμφανίζεται μια λίστα προϊόντων από τον πίνακα m_product, οι κωδικοί των οποίων δεν βρίσκονται στον πίνακα m_outcome:
ΕΠΙΛΕΓΩ*
ΑΠΟ m_product
Αίτημα Q013.Αυτό το ερώτημα SQL επιστρέφει μια μοναδική λίστα κωδικών και ονομάτων προϊόντων που έχουν κωδικούς στον πίνακα m_income αλλά όχι στον πίνακα m_outcome:
ΕΠΙΛΟΓΗ DISTINCT product_id, τίτλος
Αίτημα Q014.Μια μοναδική λίστα κατηγοριών εμφανίζεται από τον πίνακα m_category, τα ονόματα των οποίων ξεκινούν με το γράμμα M:
ΕΠΙΛΟΓΗ ΔΙΑΚΡΙΤΟΥ τίτλου
Αίτημα Q015.Ένα παράδειγμα εκτέλεσης αριθμητικών πράξεων σε πεδία σε ένα ερώτημα και μετονομασία πεδίων σε ένα ερώτημα (ψευδώνυμο). Αυτό το παράδειγμα υπολογίζει έξοδο = ποσότητα*τιμή και περιθώριο κέρδους για κάθε εγγραφή κατανάλωσης προϊόντος, υποθέτοντας ότι το κέρδος είναι 7 τοις εκατό των πωλήσεων:
Αίτημα Q016.Αναλύοντας και απλοποιώντας αριθμητικές πράξεις, μπορείτε να αυξήσετε την ταχύτητα εκτέλεσης ερωτήματος:
SELECT dt, product_id, ποσό, τιμή, ποσό*τιμή AS outcome_sum,
Αίτημα Q017.Χρησιμοποιώντας τη δήλωση ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ, μπορείτε να συνδυάσετε δεδομένα από πολλούς πίνακες. Στο παρακάτω παράδειγμα, ανάλογα με την τιμή του ctgry_id, κάθε καταχώρηση στον πίνακα m_income αντιστοιχίζεται με το όνομα της κατηγορίας από τον πίνακα m_category στον οποίο ανήκει το προϊόν:
ΕΠΙΛΟΓΗ γ.τίτλος, β.τίτλος, dt, ποσό, τιμή, ποσό*τιμή AS εισόδημα_άθροισμα
Αίτημα Q018.Συναρτήσεις όπως SUM - άθροισμα, COUNT - ποσότητα, AVG - αριθμητικός μέσος όρος, MAX - μέγιστη τιμή, MIN - ελάχιστη τιμή ονομάζονται συναρτήσεις συγκεντρωτικών. Παίρνουν πολλαπλές τιμές και επιστρέφουν μία μόνο τιμή όταν υποβάλλονται σε επεξεργασία. Ένα παράδειγμα υπολογισμού του αθροίσματος του γινόμενου των πεδίων ποσό και τιμή χρησιμοποιώντας τη συνάρτηση συγκεντρωτικού SUM:
ΕΠΙΛΕΞΤΕ ΠΟΣΟ (ποσό*τιμή) AS Total_Sum
Αίτημα Q019.Ένα παράδειγμα χρήσης πολλαπλών αθροιστικών συναρτήσεων:
SELECT Sum(amount) AS Amount_Sum, AVG(amount) AS Amount_AVG,
Αίτημα Q020.Σε αυτό το παράδειγμα, υπολογίζεται το άθροισμα όλων των στοιχείων με κωδικό 1 που ελήφθησαν τον Ιούνιο του 2011:
ΕΠΙΛΕΞΤΕ Άθροισμα(ποσό*τιμή) ΩΣ εισόδημα_άθροισμα
Αίτημα Q021.Το ακόλουθο ερώτημα SQL υπολογίζει πόσο πουλήθηκαν τα αγαθά με τον κωδικό 4 ή 6:
ΕΠΙΛΕΞΤΕ Άθροισμα (ποσό*τιμή) ως άθροισμα_αποτέλεσης
Αίτημα Q022.Υπολογίζεται για το ποσό που πωλήθηκε στις 12 Ιουνίου 2011 αγαθών με κωδικό 4 ή 6:
ΕΠΙΛΕΞΤΕ Άθροισμα(ποσό*τιμή) ΩΣ άθροισμα_αποτέλεσης
Αίτημα Q023.Το καθήκον είναι αυτό. Υπολογίστε το συνολικό ποσό για το οποίο πιστώθηκαν τα αγαθά της κατηγορίας «Ψητά προϊόντα».
Για να λύσετε αυτό το πρόβλημα, πρέπει να λειτουργήσετε σε τρεις πίνακες: m_income, m_product και m_category, επειδή:
Για να λύσουμε αυτό το πρόβλημα, χρησιμοποιούμε τον ακόλουθο αλγόριθμο:
Αίτημα Q024.Το πρόβλημα του υπολογισμού του συνολικού ποσού των πιστωθέντων αγαθών της κατηγορίας "Αρτοποιημένα προϊόντα" θα λυθεί με τον ακόλουθο αλγόριθμο:
- κάθε εγγραφή του πίνακα m_income, ανάλογα με την τιμή του product_id του, από τον πίνακα m_category, ταιριάζει με το όνομα της κατηγορίας.
- επιλέξτε εγγραφές για τις οποίες η κατηγορία είναι ίση με "Ψητά προϊόντα".
- υπολογίστε το ποσό του εισοδήματος = ποσότητα * τιμή.
FROM (m_product AS INNER JOIN m_income AS b ON a.id=b.product_id)
WHERE c.title="(!ΓΛΩΣΣΑ: Αρτοσκευάσματα";
!}
Αίτημα Q025.Αυτό το παράδειγμα υπολογίζει πόσα είδη καταναλώθηκαν:
SELECT COUNT(product_id) AS product_cnt
Αίτημα Q026.Ο όρος GROUP BY χρησιμοποιείται για την ομαδοποίηση εγγραφών. Συνήθως, οι εγγραφές ομαδοποιούνται με βάση την τιμή ενός ή περισσότερων πεδίων και εφαρμόζεται μια συγκεντρωτική λειτουργία σε κάθε ομάδα. Για παράδειγμα, το ακόλουθο ερώτημα δημιουργεί μια αναφορά σχετικά με την πώληση αγαθών. Δηλαδή, δημιουργείται ένας πίνακας που θα περιέχει τα ονόματα των αγαθών και το ποσό για το οποίο πωλούνται:
ΕΠΙΛΟΓΗ τίτλου, SUM(ποσό*τιμή) AS outcome_sum
Αίτημα Q027.Αναφορά πωλήσεων ανά κατηγορία. Δηλαδή, δημιουργείται ένας πίνακας που θα περιέχει τα ονόματα των κατηγοριών προϊόντων, το συνολικό ποσό για το οποίο πωλούνται τα αγαθά αυτών των κατηγοριών και το μέσο ποσό πωλήσεων. Η συνάρτηση ROUND χρησιμοποιείται για να στρογγυλοποιήσει τη μέση τιμή στο πλησιέστερο εκατοστό (το δεύτερο δεκαδικό ψηφίο μετά το δεκαδικό διαχωριστικό):
SELECT c.title, SUM(amount*price) AS outcome_sum,
Αίτημα Q028.Για κάθε προϊόν, υπολογίζεται ο συνολικός και ο μέσος αριθμός των παραλαβών του και εμφανίζει πληροφορίες για τα εμπορεύματα, ο συνολικός αριθμός των οποίων είναι τουλάχιστον 500:
SELECT product_id, SUM(amount) AS ποσό_sum,
Αίτημα Q029.Αυτό το ερώτημα υπολογίζει για κάθε είδος το άθροισμα και τον μέσο όρο των εισπράξεών του το δεύτερο τρίμηνο του 2011. Εάν το συνολικό ποσό παραλαβής των αγαθών δεν είναι μικρότερο από 1000, τότε εμφανίζονται πληροφορίες σχετικά με αυτό το προϊόν:
ΕΠΙΛΟΓΗ τίτλου, ΠΟΣΟ(ποσό*τιμή) ΩΣ εισόδημα_άθροισμα
Αίτημα Q030.Σε ορισμένες περιπτώσεις είναι απαραίτητο να αντιστοιχίσετε κάθε εγγραφή κάποιου πίνακα με κάθε εγγραφή άλλου πίνακα. αυτό που ονομάζεται καρτεσιανό προϊόν. Ο πίνακας που προκύπτει από μια τέτοια ένωση ονομάζεται πίνακας Descartes. Για παράδειγμα, εάν κάποιος πίνακας Α έχει 100 εγγραφές και ο πίνακας Β έχει 15 εγγραφές, τότε ο καρτεσιανός πίνακας του θα αποτελείται από 100*15=150 εγγραφές. Το ακόλουθο ερώτημα ενώνει κάθε καταχώρηση στον πίνακα m_income με κάθε καταχώρηση στον πίνακα m_outcome:
ΑΠΟ m_income, m_outcome;
Αίτημα Q031.Ένα παράδειγμα ομαδοποίησης εγγραφών κατά δύο πεδία. Το ακόλουθο ερώτημα SQL υπολογίζει για κάθε προμηθευτή την ποσότητα και την ποσότητα των αγαθών που έλαβε από αυτόν:
Αίτημα Q032.Ένα παράδειγμα ομαδοποίησης εγγραφών κατά δύο πεδία. Το ακόλουθο ερώτημα υπολογίζει, για κάθε προμηθευτή, την ποσότητα και την ποσότητα των προϊόντων του που πωλούνται από εμάς:
SELECT προμηθευτής_αναγνωριστικό, αναγνωριστικό_προϊόντος, SUM(ποσό) AS ποσό_άθροισμα,
Αίτημα Q033.Σε αυτό το παράδειγμα, τα δύο παραπάνω ερωτήματα (q031 και q032) χρησιμοποιούνται ως δευτερεύοντα ερωτήματα. Τα αποτελέσματα αυτών των ερωτημάτων συγχωνεύονται σε μία αναφορά χρησιμοποιώντας τη μέθοδο LEFT JOIN. Το ακόλουθο ερώτημα εμφανίζει μια αναφορά σχετικά με τον αριθμό και την ποσότητα των προϊόντων που λαμβάνονται και πωλούνται για κάθε προμηθευτή. Θα πρέπει να δώσετε προσοχή στο γεγονός ότι εάν κάποιο προϊόν έχει ήδη φτάσει, αλλά δεν έχει πουληθεί ακόμα, τότε το κελί outcome_sum για αυτήν την εγγραφή θα είναι κενό. ότι αυτό το ερώτημα είναι μόνο ένα παράδειγμα χρήσης σχετικά σύνθετα ερωτήματαως υποερώτημα. Εκτέλεση δεδομένο αίτημαΗ SQL με μεγάλο όγκο δεδομένων είναι αμφισβητήσιμη:
ΕΠΙΛΕΓΩ*
ΑΠΟ
Αίτημα Q034.Σε αυτό το παράδειγμα, τα δύο παραπάνω ερωτήματα (q031 και q032) χρησιμοποιούνται ως δευτερεύοντα ερωτήματα. Τα αποτελέσματα αυτών των ερωτημάτων συνδυάζονται σε μία αναφορά χρησιμοποιώντας τη μέθοδο RIGTH JOIN. Το ακόλουθο ερώτημα εκτυπώνει μια αναφορά σχετικά με το ποσό των πληρωμών κάθε πελάτη για τα συστήματα πληρωμών που χρησιμοποίησε και το ποσό των επενδύσεων που πραγματοποίησε. Το ακόλουθο ερώτημα εμφανίζει μια αναφορά σχετικά με τον αριθμό και την ποσότητα των προϊόντων που λαμβάνονται και πωλούνται για κάθε προμηθευτή. Σημειώστε ότι εάν ένα προϊόν έχει ήδη πουληθεί αλλά δεν έχει ληφθεί ακόμη, τότε το κελί εισοδήματος_άθροισμα για αυτήν την καταχώρηση θα είναι κενό. Η παρουσία τέτοιων κενών κελιών αποτελεί ένδειξη σφάλματος στη λογιστική των πωλήσεων, καθώς πριν από την πώληση, είναι απαραίτητο πρώτα να φτάσει το αντίστοιχο προϊόν:
ΕΠΙΛΕΓΩ*
ΑΠΟ
Αίτημα Q035.Εμφανίζεται μια αναφορά για το ποσό των εσόδων και εξόδων ανά προϊόν. Για να γίνει αυτό, δημιουργείται μια λίστα προϊόντων σύμφωνα με τους πίνακες m_income και m_outcome και, στη συνέχεια, για κάθε προϊόν από αυτήν τη λίστα, υπολογίζεται το άθροισμα των εσόδων του σύμφωνα με τον πίνακα m_income και το άθροισμα των εξόδων του σύμφωνα με τον πίνακα m_outcome:
SELECT product_id, SUM(in_amount) AS έσοδα_amount,
Αίτημα Q036.Η συνάρτηση EXISTS επιστρέφει TRUE εάν το σύνολο που της έχει μεταβιβαστεί περιέχει στοιχεία. Η συνάρτηση ΥΠΑΡΧΕΙ επιστρέφει FALSE εάν το σύνολο που της μεταβιβάστηκε είναι κενό, δηλαδή δεν έχει στοιχεία. Το ακόλουθο ερώτημα επιστρέφει τους κωδικούς προϊόντων που περιέχονται στον πίνακα m_income και στον πίνακα m_outcome:
ΕΠΙΛΕΞΤΕ ΞΕΧΩΡΙΣΤΟ αναγνωριστικό προϊόντος
Αίτημα Q037.Εμφανίζονται κωδικοί προϊόντων που περιέχονται τόσο στον πίνακα m_income όσο και στον πίνακα m_outcome:
ΕΠΙΛΕΞΤΕ ΞΕΧΩΡΙΣΤΟ αναγνωριστικό προϊόντος
Αίτημα Q038.Εμφανίζονται κωδικοί προϊόντων που περιέχονται όπως στον πίνακα m_income, αλλά δεν περιλαμβάνονται στον πίνακα m_outcome:
ΕΠΙΛΕΞΤΕ ΞΕΧΩΡΙΣΤΟ αναγνωριστικό προϊόντος
Αίτημα Q039.Εμφανίζεται μια λίστα προϊόντων με το υψηλότερο ποσό πωλήσεων. Ο αλγόριθμος είναι αυτός. Για κάθε προϊόν υπολογίζεται το άθροισμα των πωλήσεών του. Στη συνέχεια, καθορίζεται το μέγιστο αυτών των ποσών. Στη συνέχεια, για κάθε προϊόν, υπολογίζεται και πάλι το άθροισμα των πωλήσεών του και εμφανίζεται ο κωδικός και το άθροισμα των πωλήσεων των αγαθών, το άθροισμα των πωλήσεων των οποίων είναι ίσο με το μέγιστο:
SELECT product_id, SUM(amount*price) AS ποσό_άθροισμα
Αίτημα Q040.Η δεσμευμένη λέξη IIF (τελεστής υπό όρους) χρησιμοποιείται για την αξιολόγηση μιας λογικής έκφρασης και την εκτέλεση μιας ενέργειας ανάλογα με το αποτέλεσμα (TRUE ή FALSE). Στο παρακάτω παράδειγμα, η παράδοση ενός είδους θεωρείται «μικρή» εάν η ποσότητα είναι μικρότερη από 500. Διαφορετικά, δηλαδή, η ποσότητα παραλαβής είναι μεγαλύτερη ή ίση με 500, η παράδοση θεωρείται «μεγάλη»:
SELECT dt, product_id, ποσό,
Ερώτημα SQL Q041.Στην περίπτωση που η δήλωση IIF χρησιμοποιείται περισσότερες από μία φορές, είναι πιο βολικό να την αντικαταστήσετε με την πρόταση SWITCH. Ο τελεστής SWITCH (τελεστής πολλαπλών επιλογών) χρησιμοποιείται για την αξιολόγηση μιας λογικής έκφρασης και την εκτέλεση μιας ενέργειας ανάλογα με το αποτέλεσμα. Στο παρακάτω παράδειγμα, η παρτίδα που παραδόθηκε θεωρείται "μικρή" εάν η ποσότητα των εμπορευμάτων στην παρτίδα είναι μικρότερη από 500. Διαφορετικά, εάν δηλαδή η ποσότητα των αγαθών είναι μεγαλύτερη ή ίση με 500, η παρτίδα θεωρείται "μεγάλη ":
SELECT dt, product_id, ποσό,
Αίτημα Q042.Στην επόμενη ερώτηση, εάν η ποσότητα των εμπορευμάτων στην εισερχόμενη παρτίδα είναι μικρότερη από 300, τότε η παρτίδα θεωρείται "μικρή". Διαφορετικά, δηλ. εάν το ποσό συνθήκης SELECT dt, product_id, ποσό,
IIF(ποσό IIF(ποσό FROM m_income;
Ερώτημα SQL Q043.Στην επόμενη ερώτηση, εάν η ποσότητα των εμπορευμάτων στην εισερχόμενη παρτίδα είναι μικρότερη από 300, τότε η παρτίδα θεωρείται "μικρή". Διαφορετικά, δηλ. εάν το ποσό συνθήκης SELECT dt, product_id, ποσό,
SWITCH (ποσό ποσού>=1000"μεγάλο") AS mark
ΑΠΟ m_income;
Ερώτημα SQL Q044.Στο παρακάτω ερώτημα, οι πωλήσεις χωρίζονται σε τρεις ομάδες: μικρές (έως 150), μεσαίες (από 150 έως 300), μεγάλες (300 και περισσότερες). Στη συνέχεια, για κάθε ομάδα, υπολογίζεται το συνολικό ποσό:
SELECT Κατηγορία, SUM(outcome_sum) AS Ctgry_Total
Ερώτημα SQL Q045.Η συνάρτηση DateAdd χρησιμοποιείται για την προσθήκη ημερών, μηνών ή ετών σε μια δεδομένη ημερομηνία και τη λήψη νέας ημερομηνίας. Επόμενο αίτημα:
1) προσθέστε 30 ημέρες στην ημερομηνία από το πεδίο dt και εμφανίστε νέα ημερομηνίαστο πεδίο dt_plus_30d;
2) προσθέστε 1 μήνα στην ημερομηνία από το πεδίο dt και εμφανίστε τη νέα ημερομηνία στο πεδίο dt_plus_1m:
SELECT dt, dateadd("d",30,dt) AS dt_plus_30d, dateadd("m",1,dt) AS dt_plus_1m
Ερώτημα SQL Q046.Η συνάρτηση DateDiff έχει σχεδιαστεί για να υπολογίζει τη διαφορά μεταξύ δύο ημερομηνιών σε διαφορετικές μονάδες (ημέρες, μήνες ή έτη). Το ακόλουθο ερώτημα υπολογίζει τη διαφορά μεταξύ της ημερομηνίας στο πεδίο dt και της τρέχουσας ημερομηνίας σε ημέρες, μήνες και έτη:
SELECT dt, DateDiff("d",dt,Date()) AS last_day,
Ερώτημα SQL Q047.Ο αριθμός των ημερών από την ημερομηνία παραλαβής των αγαθών (πίνακας m_income) έως την τρέχουσα ημερομηνία υπολογίζεται χρησιμοποιώντας τη συνάρτηση DateDiff και συγκρίνεται η ημερομηνία λήξης (πίνακας m_product):
Ερώτημα SQL Q048.Υπολογίζεται ο αριθμός των ημερών από την ημερομηνία παραλαβής των εμπορευμάτων έως την τρέχουσα ημερομηνία και, στη συνέχεια, ελέγχεται εάν αυτός ο αριθμός υπερβαίνει την ημερομηνία λήξης:
SELECT a.id, product_id, dt, lifedays,
Ερώτημα SQL Q049.Υπολογίζεται ο αριθμός των μηνών από την ημερομηνία παραλαβής των εμπορευμάτων μέχρι την τρέχουσα ημερομηνία. Η στήλη month_last1 υπολογίζει τον απόλυτο αριθμό μηνών, η στήλη month_last2 υπολογίζει τον αριθμό των πλήρων μηνών:
SELECT dt, DateDiff("m",dt,Date()) AS month_last1,
Ερώτημα SQL Q050.Εμφανίζεται τριμηνιαία έκθεση για την ποσότητα και την ποσότητα των εμπορευμάτων που παραλήφθηκαν για το 2011:
SELECT kvartal, SUM(outcome_sum) AS Σύνολο
Αίτημα Q051.Το ακόλουθο ερώτημα βοηθά να μάθετε εάν οι χρήστες κατάφεραν να εισαγάγουν στο σύστημα πληροφορίες σχετικά με την κατανάλωση αγαθών για ποσό μεγαλύτερο από το ποσό παραλαβής των αγαθών:
SELECT product_id, SUM(in_sum) AS έσοδα_sum, SUM(out_sum) AS outcome_sum
SELECT COUNT(*) ως N, b.id, b.product_id, b.amount, b.price
Αίτημα Q053.Εμφανίζονται οι πέντε πρώτες μεταξύ των προϊόντων με βάση το ποσό των πωλήσεων. Η έξοδος των πέντε πρώτων εγγραφών πραγματοποιείται χρησιμοποιώντας την εντολή TOP:
ΕΠΙΛΕΞΤΕ ΚΟΡΥΦΑΙΑ 5, αναγνωριστικό_προϊόντος, άθροισμα(ποσό*τιμή) ΩΣ άθροισμα
Αίτημα Q054.Εμφανίζονται οι πέντε κορυφαίες μεταξύ των προϊόντων κατά το ποσό των πωλήσεων και οι γραμμές αριθμούνται ως αποτέλεσμα:
SELECT COUNT(*) AS N, b.product_id, b.summa
Αίτημα Q055.Το ακόλουθο ερώτημα SQL δείχνει τη χρήση των μαθηματικών συναρτήσεων COS, SIN, TAN, SQRT, ^ και ABS στο MS Access SQL:
SELECT (επιλέξτε πλήθος(*) από m_income) ως N, 3.1415926 ως pi, k,
ΕΝΗΜΕΡΩΣΗ m_income SET τιμή = τιμή*1.1
Αίτημα U002.Το ακόλουθο ερώτημα ενημέρωσης SQL αυξάνει την ποσότητα όλων των προϊόντων στον πίνακα m_income κατά 22 μονάδες των οποίων τα ονόματα ξεκινούν με τη λέξη "Βούτυρο":
ΕΝΗΜΕΡΩΣΗ m_income SET ποσό = ποσό+22
Αίτημα U003.Το ακόλουθο ερώτημα αλλαγής SQL στον πίνακα m_outcome μειώνει τις τιμές όλων των προϊόντων που παράγονται από την OOO Sladkoe κατά 2 τοις εκατό:
ΕΝΗΜΕΡΩΣΗ m_outcome SET τιμή = τιμή*0,98
Ένα ερώτημα SQL είναι ένα ερώτημα που δημιουργείται χρησιμοποιώντας δηλώσεις SQL. Η SQL (Structured Query Language) χρησιμοποιείται για τη δημιουργία ερωτημάτων και την ενημέρωση και διαχείριση σχεσιακών βάσεων δεδομένων, όπως οι βάσεις δεδομένων της Microsoft Access.
Όταν ένας χρήστης δημιουργεί ένα ερώτημα σε προβολή σχεδίασης ερωτήματος, η Microsoft Access δημιουργεί αυτόματα μια ισοδύναμη δήλωση SQL. Υπάρχει ένας αριθμός ερωτημάτων που μπορούν να γίνουν μόνο σε λειτουργία SQL. Οι έμπειροι προγραμματιστές συχνά βρίσκουν ευκολότερο να γράψουν αμέσως μια έκφραση σε SQL παρά να σχηματίσουν ένα ερώτημα.
Τύπος αιτήματος στον κατασκευαστή:
Με πολύπλοκους υπολογισμούς, πρέπει να κάνετε διαδοχικά πολλά αιτήματα για να λάβετε το αποτέλεσμα. Είναι σαφές ότι αυτές οι ενέργειες πρέπει να εκτελούνται αυτόματα χωρίς παρέμβαση του χρήστη.
Για αυτό, χρησιμοποιούνται μακροεντολές, που αποτελούνται από πολλές διαδοχικά εκτελούμενες εντολές.
Υπολογισμοί σε ερωτήματα, δυνατότητα δημιουργίας και επεξεργασίας τύπων.
Για πεδία από τους πίνακες που καθορίζονται στο σχήμα ερωτήματος, μπορείτε να καθορίσετε τυχόν υπολογισμούς.
Για να εκτελέσετε υπολογισμούς, πρέπει να προσθέσετε επιπλέον υπολογισμένα πεδία στο ερώτημα, οι τιμές των οποίων υπολογίζονται με βάση τις τιμές άλλων πεδίων ερωτήματος.
Τελικά ερωτήματα, ομαδοποίηση, τελικές συναρτήσεις.
Το τελικό ερώτημα δημιουργείται χρησιμοποιώντας τη λειτουργία - Ερώτημα περίληψης.
Μπορούν να χρησιμοποιηθούν τρεις πίνακες, συμπεριλαμβανομένου ενός πίνακα συνδέσμων.
Σε αυτήν την περίπτωση, μπορείτε να καλέσετε το μενού περιβάλλοντος από οπουδήποτε στο ερώτημα (δεξί κουμπί του ποντικιού) και να επιλέξετε το χαρακτηριστικό "ομαδικές λειτουργίες".
Θα εμφανιστεί η φόρμα αιτήματος νέα γραμμήΟμαδοποίηση.
Σύνολο συναρτήσεων: στο πεδίο για το οποίο θέλουμε να υπολογίσουμε τα σύνολα, επιλέξτε τη συνάρτηση "Άθροισμα" από τη λίστα για να αθροιστούν όλες οι τιμές των επιλεγμένων πεδίων. Η συνάρτηση Count θα μετρήσει τον αριθμό των τιμών των πεδίων. επεξεργασία πληροφοριών microsoft
Ένα ερώτημα είναι μια κλήση προς το DBMS για την εκτέλεση οποιωνδήποτε λειτουργιών δεδομένων: επιλογή μέρους δεδομένων από τον συνολικό όγκο, προσθήκη υπολογισμένων πεδίων, μαζική αλλαγή δεδομένων κ.λπ.
Σε ένα αίτημα, μπορείτε:
Τύποι αιτημάτων:
Τα ερωτήματα χρησιμοποιούνται ως πηγές εγγραφής για φόρμες και αναφορές. Ως επί το πλείστον, τόσο σε έντυπα όσο και σε αναφορές, πριν από την έκδοση, πρέπει να επιλέξετε μέρος των δεδομένων σύμφωνα με ορισμένες συνθήκες και να ταξινομήσετε τα δεδομένα. Αυτό γίνεται με αιτήματα. Το αίτημα μπορεί να αποθηκευτεί χωριστά ή να συνδεθεί με μια φόρμα ή αναφορά.
Υπάρχουν διάφοροι τύποι ερωτημάτων στη Microsoft Access.