Δειγματοληψία δεδομένων στη βάση δεδομένων της Access χρησιμοποιώντας ερωτήματα sql. Εικονογραφημένο σεμινάριο για την SQL για αρχάριους Ερώτηση σε γλώσσα sql στην πρόσβαση

06.04.2023

Καθένας από εμάς συναντά και χρησιμοποιεί τακτικά διάφορες βάσεις δεδομένων. Όταν επιλέγουμε μια διεύθυνση email, εργαζόμαστε με μια βάση δεδομένων. Οι βάσεις δεδομένων χρησιμοποιούν υπηρεσίες αναζήτησης, οι τράπεζες για την αποθήκευση δεδομένων πελατών και ούτω καθεξής.

Όμως, παρά τη συνεχή χρήση βάσεων δεδομένων, ακόμη και για πολλούς προγραμματιστές συστημάτων λογισμικού υπάρχουν πολλά "λευκά σημεία" λόγω διαφορετικών ερμηνειών των ίδιων όρων. Θα δώσουμε έναν σύντομο ορισμό των βασικών όρων της βάσης δεδομένων πριν εξετάσουμε τη γλώσσα SQL. Ετσι.

Βάση δεδομένων - ένα αρχείο ή ένα σύνολο αρχείων για την αποθήκευση ταξινομημένων δομών δεδομένων και των σχέσεών τους. Πολύ συχνά, μια βάση δεδομένων ονομάζεται σύστημα διαχείρισης - είναι μόνο μια αποθήκη πληροφοριών σε μια συγκεκριμένη μορφή και μπορεί να λειτουργήσει με διάφορα DBMS.

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

Τύπος δεδομένων - το είδος των πληροφοριών που επιτρέπεται να αποθηκευτούν σε μια συγκεκριμένη στήλη ή σειρά. Μπορεί να είναι αριθμοί ή κείμενο συγκεκριμένης μορφής.

Στήλη και σειρά- Όλοι έχουμε δουλέψει με υπολογιστικά φύλλα που έχουν επίσης γραμμές και στήλες. Οποιαδήποτε σχεσιακή βάση δεδομένων λειτουργεί με πίνακες με τον ίδιο τρόπο. Οι σειρές μερικές φορές ονομάζονται εγγραφές.

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

Τι είναι η SQL;

SQL(Αγγλικά - δομημένη γλώσσα ερωτημάτων) αναπτύχθηκε μόνο για εργασία με βάσεις δεδομένων και είναι επί του παρόντος το πρότυπο για όλα τα δημοφιλή DBMS. Η σύνταξη της γλώσσας αποτελείται από μικρό αριθμό τελεστών και είναι εύκολη στην εκμάθηση. Όμως, παρά την εξωτερική απλότητα, επιτρέπει δημιουργία sqlερωτήματα για πολύπλοκες λειτουργίες με βάση δεδομένων οποιουδήποτε μεγέθους.

Από το 1992 υπάρχει ένα γενικά αποδεκτό πρότυπο που ονομάζεται ANSI SQL. Καθορίζει τη βασική σύνταξη και τις λειτουργίες των τελεστών και υποστηρίζεται από όλους τους ηγέτες της αγοράς DBMS, όπως η ORACLE. Είναι αδύνατο να καλύψουμε όλες τις δυνατότητες της γλώσσας σε ένα μικρό άρθρο, επομένως θα εξετάσουμε εν συντομία μόνο βασικά ερωτήματα SQL. Τα παραδείγματα δείχνουν ξεκάθαρα την απλότητα και τις δυνατότητες της γλώσσας:

  • δημιουργία βάσεων δεδομένων και πινάκων.
  • δειγματοληψία δεδομένων·
  • προσθήκη εγγραφών.
  • τροποποίηση και διαγραφή πληροφοριών.

Τύποι δεδομένων SQL

Όλες οι στήλες σε έναν πίνακα βάσης δεδομένων αποθηκεύουν τον ίδιο τύπο δεδομένων. Οι τύποι δεδομένων στην SQL είναι οι ίδιοι όπως σε άλλες γλώσσες προγραμματισμού.

Δημιουργία πινάκων και βάσεων δεδομένων

Υπάρχουν δύο τρόποι για να δημιουργήσετε νέες βάσεις δεδομένων, πίνακες και άλλα ερωτήματα στην SQL:

  • μέσω της κονσόλας DBMS
  • Χρησιμοποιώντας τα διαδραστικά εργαλεία διαχείρισης που περιλαμβάνονται στον διακομιστή βάσης δεδομένων.

Μια νέα βάση δεδομένων δημιουργείται από τον χειριστή ΔΗΜΙΟΥΡΓΙΑ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ<наименование базы данных>; . Όπως μπορείτε να δείτε, η σύνταξη είναι απλή και συνοπτική.

Δημιουργούμε πίνακες μέσα στη βάση δεδομένων χρησιμοποιώντας την πρόταση 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

Είναι δυνατό να ληφθεί η τιμή όλων των στηλών μιας γραμμής ως αποτέλεσμα ερωτήματος. Για αυτό, χρησιμοποιείται το σύμβολο "*":

ΕΠΙΛΟΓΗ * ΑΠΟ εμπόρευμα

  • Επιπλέον, το SELECT υποστηρίζει:
  • Ταξινόμηση δεδομένων (ORDER BY statement)
  • Επιλέξτε σύμφωνα με τις συνθήκες (ΠΟΥ)
  • Όρος ομαδοποίησης (GROUP BY)

Προσθήκη γραμμής

Για να προσθέσετε μια σειρά σε έναν πίνακα, χρησιμοποιούνται ερωτήματα 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 στη Microsoft Access

Συνήθως χρησιμοποιείται διαδραστικά για τη δημιουργία πινάκων, βάσεων δεδομένων, για τη διαχείριση, την τροποποίηση, την ανάλυση δεδομένων στη βάση δεδομένων και την υλοποίηση ερωτημάτων SQL Access μέσω ενός βολικού διαδραστικού σχεδιαστή ερωτημάτων (Query Designer), χρησιμοποιώντας τον οποίο μπορείτε να δημιουργήσετε και να εκτελέσετε αμέσως δηλώσεις SQL οποιασδήποτε πολυπλοκότητας.

Υποστηρίζεται επίσης η λειτουργία πρόσβασης διακομιστή, στην οποία το Access DBMS μπορεί να χρησιμοποιηθεί ως γεννήτρια ερωτημάτων SQL σε οποιαδήποτε πηγή δεδομένων ODBC. Αυτή η δυνατότητα επιτρέπει στις εφαρμογές της Access να αλληλεπιδρούν με οποιαδήποτε μορφή.

Επεκτάσεις SQL

Δεδομένου ότι τα ερωτήματα SQL δεν διαθέτουν όλα τα χαρακτηριστικά των διαδικαστικών γλωσσών προγραμματισμού, όπως βρόχους, διακλαδώσεις κ.λπ., οι προμηθευτές DBMS αναπτύσσουν τη δική τους έκδοση της SQL με προηγμένες δυνατότητες. Πρώτα απ 'όλα, αυτή είναι υποστήριξη για αποθηκευμένες διαδικασίες και τυπικούς χειριστές διαδικαστικών γλωσσών.

Οι πιο κοινές διάλεκτοι της γλώσσας:

  • Oracle Database - PL/SQL
  • Interbase, Firebird - PSQL
  • Microsoft SQL Server - Transact-SQL
  • PostgreSQL - PL/pgSQL.

SQL στον Ιστό

Το MySQL DBMS διανέμεται υπό τη Γενική Δημόσια Άδεια GNU. Υπάρχει εμπορική άδεια με δυνατότητα ανάπτυξης προσαρμοσμένων μονάδων. Ως αναπόσπαστο μέρος, περιλαμβάνεται στις πιο δημοφιλείς συγκροτήσεις διακομιστών Internet, όπως XAMPP, WAMP και LAMP, και είναι το πιο δημοφιλές DBMS για την ανάπτυξη εφαρμογών στο Διαδίκτυο.

Αναπτύχθηκε από την Sun Microsystems και επί του παρόντος συντηρείται από την Oracle Corporation. Υποστηρίζει βάσεις δεδομένων έως 64 terabyte, πρότυπο σύνταξης SQL:2003, αναπαραγωγή βάσεων δεδομένων και υπηρεσίες cloud.

Ένα ερώτημα SQL είναι ένα ερώτημα που δημιουργείται χρησιμοποιώντας δηλώσεις SQL. Η SQL (Structured Query Language) χρησιμοποιείται για τη δημιουργία ερωτημάτων και την ενημέρωση και διαχείριση σχεσιακών βάσεων δεδομένων, όπως οι βάσεις δεδομένων της Microsoft Access.

Όταν ένας χρήστης δημιουργεί ένα ερώτημα σε προβολή σχεδίασης ερωτήματος, η Microsoft Access δημιουργεί αυτόματα μια ισοδύναμη δήλωση SQL. Υπάρχει ένας αριθμός ερωτημάτων που μπορούν να γίνουν μόνο σε λειτουργία SQL. Οι έμπειροι προγραμματιστές συχνά βρίσκουν ευκολότερο να γράψουν αμέσως μια έκφραση σε SQL παρά να σχηματίσουν ένα ερώτημα.

Τύπος αιτήματος στον κατασκευαστή:

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

Για αυτό, χρησιμοποιούνται μακροεντολές, που αποτελούνται από πολλές διαδοχικά εκτελούμενες εντολές.

Υπολογισμοί σε ερωτήματα, δυνατότητα δημιουργίας και επεξεργασίας τύπων.

Για πεδία από τους πίνακες που καθορίζονται στο σχήμα ερωτήματος, μπορείτε να καθορίσετε τυχόν υπολογισμούς.

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

Τελικά ερωτήματα, ομαδοποίηση, τελικές συναρτήσεις.

Το τελικό ερώτημα δημιουργείται χρησιμοποιώντας τη λειτουργία - Ερώτημα περίληψης.

Μπορούν να χρησιμοποιηθούν τρεις πίνακες, συμπεριλαμβανομένου ενός πίνακα συνδέσμων.

Σε αυτήν την περίπτωση, μπορείτε να καλέσετε το μενού περιβάλλοντος από οπουδήποτε στο ερώτημα (δεξί κουμπί του ποντικιού) και να επιλέξετε τη λειτουργία "ομαδικές λειτουργίες".

Θα εμφανιστεί η φόρμα αιτήματος νέα γραμμήΟμαδοποίηση.

Σύνολο συναρτήσεων: στο πεδίο για το οποίο θέλουμε να υπολογίσουμε τα σύνολα, επιλέξτε τη συνάρτηση «Άθροισμα» από τη λίστα για να αθροιστούν όλες οι τιμές των επιλεγμένων πεδίων. Η συνάρτηση Count θα μετρήσει τον αριθμό των τιμών των πεδίων. επεξεργασία πληροφοριών microsoft

Ένα ερώτημα είναι μια κλήση προς το DBMS για την εκτέλεση οποιωνδήποτε λειτουργιών δεδομένων: επιλογή μέρους δεδομένων από τον συνολικό όγκο, προσθήκη υπολογισμένων πεδίων, μαζική αλλαγή δεδομένων κ.λπ.

Σε ένα αίτημα, μπορείτε:

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

Τύποι αιτημάτων:

  • - δειγματοληψία;
  • - δημιουργία πίνακα.
  • - ενημέρωση (αλλαγή δεδομένων).
  • - προσθήκη εγγραφών.
  • - διαγραφή καταχωρήσεων.

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

Υπάρχουν διάφοροι τύποι ερωτημάτων στη Microsoft Access.

Πρόσβαση στο DBMS

Η Microsoft Access είναι ένας σχεσιακός τύπος DBMS που εξισορροπεί εύλογα όλα τα εργαλεία και τις δυνατότητες που χαρακτηρίζουν τα σύγχρονα συστήματα διαχείρισης βάσεων δεδομένων. Μια σχεσιακή βάση δεδομένων διευκολύνει την εύρεση, ανάλυση, διατήρηση και προστασία δεδομένων επειδή αποθηκεύονται σε ένα μέρος. Πρόσβαση σε μετάφραση από τα αγγλικά σημαίνει "πρόσβαση". Το MS Access είναι ένα από τα πιο ισχυρά, ευέλικτα και εύχρηστα DBMS. Μπορείτε να δημιουργήσετε τις περισσότερες εφαρμογές σε αυτό χωρίς να γράψετε ούτε μία γραμμή του προγράμματος, αλλά εάν πρέπει να δημιουργήσετε κάτι πολύ περίπλοκο, τότε για αυτήν την περίπτωση το MS Access παρέχει μια ισχυρή γλώσσα προγραμματισμού - την εφαρμογή Visual Basic.

Η δημοτικότητα του Microsoft Access DBMS οφείλεται στους ακόλουθους λόγους:

Η προσβασιμότητα στη μελέτη και η κατανόηση επιτρέπουν στην Access να είναι ένα από τα τα καλύτερα συστήματαταχεία δημιουργία εφαρμογών διαχείρισης βάσεων δεδομένων.

Δυνατότητα χρήσης τεχνολογίας OLE.

Ενοποίηση με το πακέτο του Microsoft Office.

Πλήρης υποστήριξη για τεχνολογίες Ιστού.

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

Η παρουσία ενός μεγάλου συνόλου «βασιλέων» για την ανάπτυξη αντικειμένων.

Οι κύριοι τύποι αντικειμένων με τους οποίους λειτουργεί το πρόγραμμα είναι: πίνακας, ερώτημα, φόρμα, αναφορά, σελίδα, μακροεντολή, ενότητα.

Ένας πίνακας είναι ένα αντικείμενο που χρησιμοποιείται για την αποθήκευση δεδομένων. Κάθε πίνακας περιλαμβάνει πληροφορίες για ένα αντικείμενο ορισμένου τύπου. Ο πίνακας περιέχει πεδία (στήλες) που αποθηκεύουν διάφορα είδη δεδομένων και εγγραφές (γραμμές). Για κάθε πίνακα, πρέπει να οριστεί ένα πρωτεύον κλειδί (ένα πεδίο που έχει για κάθε εγγραφή μοναδική αξίαή πολλά πεδία, η αθροιστική τιμή των οποίων είναι μοναδική για κάθε εγγραφή), που είναι ένα μοναδικό αναγνωριστικό για κάθε εγγραφή πίνακα.

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

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

Μια φόρμα είναι ένα αντικείμενο κυρίως για την εισαγωγή δεδομένων, την εμφάνισή τους στην οθόνη ή τον έλεγχο της λειτουργίας μιας εφαρμογής.

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

βάση προγραμματισμού οπτικής ανάπτυξης

Σελίδα - Χρησιμοποιείται για πρόσβαση σε δεδομένα στην τρέχουσα βάση δεδομένων της Access.

Μια μακροεντολή είναι ένα αντικείμενο που είναι μια δομημένη περιγραφή μιας ή περισσότερων ενεργειών που πρέπει να εκτελέσει η Access ως απόκριση σε ένα συγκεκριμένο συμβάν.

Μια λειτουργική μονάδα είναι ένα αντικείμενο που περιέχει προγράμματα της Microsoft Visual Basic που σας επιτρέπουν να αναλύσετε μια διαδικασία σε μικρότερα βήματα και να εντοπίσετε εκείνα τα σφάλματα που δεν ήταν δυνατό να εντοπιστούν χρησιμοποιώντας μακροεντολές.

Το DBMS εκκινείται από το Start - Programs - Microsoft Access. Εκτελέστε την εντολή Αρχείο - Νέο.

Η διεπαφή για την εργασία με αντικείμενα βάσης δεδομένων είναι ενοποιημένη. Για καθένα από αυτά, υπάρχουν τυπικοί τρόποι λειτουργίας: Δημιουργία (δημιουργία της δομής των αντικειμένων). Κατασκευαστής (αλλαγή της δομής των αντικειμένων). Άνοιγμα (Προβολή, Εκτέλεση - σχεδιασμένο για εργασία με αντικείμενα βάσης δεδομένων).

Γλώσσα ερωτημάτων SQL

SQL (Structured Query Language - δομημένη γλώσσα ερωτημάτων) από το 1986. είναι η τυπική γλώσσα σχεσιακής βάσης δεδομένων. Συγκεκριμένα, χρησιμοποιείται σε εφαρμογές Access και Excel.

Η SQL είναι μια πληροφοριακή-λογική γλώσσα σχεδιασμένη για να περιγράφει αποθηκευμένα δεδομένα, να εξάγει αποθηκευμένα δεδομένα και να τροποποιεί δεδομένα. Αρχικά, η SQL ήταν ο κύριος τρόπος με τον οποίο ο χρήστης εργαζόταν με τη βάση δεδομένων και ήταν ένα μικρό σύνολο εντολών (τελεστών) που επέτρεπαν τη δημιουργία πινάκων, την προσθήκη νέων εγγραφών σε πίνακες, την εξαγωγή εγγραφών από πίνακες, τη διαγραφή εγγραφών και την αλλαγή δομών πινάκων. Λόγω της αυξανόμενης πολυπλοκότητας, η γλώσσα SQL έχει γίνει μια πιο εφαρμοσμένη γλώσσα προγραμματισμού και οι χρήστες μπόρεσαν να χρησιμοποιήσουν οπτικά προγράμματα δημιουργίας ερωτημάτων.

Η γλώσσα SQL είναι ένα σύνολο τελεστών:

τελεστές ορισμού δεδομένων (Data Definition Language, DDL).

χειριστές χειρισμού δεδομένων (Γλώσσα χειρισμού δεδομένων, DML).

τελεστές ορισμού πρόσβασης δεδομένων (Γλώσσα ελέγχου δεδομένων, DCL).

Δηλώσεις γλώσσας ελέγχου συναλλαγών (TCL).

Τα ερωτήματα στο MS Access αποθηκεύονται και υλοποιούνται χρησιμοποιώντας τη γλώσσα SQL. Αν και τα περισσότερα ερωτήματα μπορούν να δημιουργηθούν χρησιμοποιώντας γραφικά εργαλεία (ερωτήματα προτύπων), αποθηκεύονται ως δηλώσεις SQL. Σε ορισμένες περιπτώσεις (για παράδειγμα, σε υποερωτήματα), μπορεί να χρησιμοποιηθεί μόνο η SQL.

Η SQL είναι μια μη διαδικαστική γλώσσα. Απλώς δηλώνει τι πρέπει να γίνει και η εκτέλεση ανατίθεται στο DBMS (σύστημα διαχείρισης βάσεων δεδομένων).

Η SQL χρησιμοποιεί λογική τριών τιμών. Μαζί με τα παραδοσιακά booleans TRUE και FALSE, χρησιμοποιείται NULL (ΑΓΝΩΣΤΟ ή NO DATA).

Οι λειτουργίες εκτελούνται σε ολόκληρα σύνολα δεδομένων, όχι σε μεμονωμένα στοιχεία, όπως σε άλλες γλώσσες προγραμματισμού.

Ένα ερώτημα SQL αποτελείται από δηλώσεις. Κάθε εντολή μπορεί να περιέχει πολλαπλούς όρους.

Με την πάροδο του χρόνου, η διαδικασία μπορεί να απαιτεί τη μετεγκατάσταση μιας βάσης δεδομένων διακομιστή αρχείων Microsoft Office Access (Access) σε μορφή DBMS πελάτη-διακομιστή. Συνήθως για το σκοπό αυτό χρησιμοποιείται το ODBC. Ωστόσο, για τη μεταφορά στον Microsoft SQL Server (MS SQL), το Access και το MS SQL DBMS διαθέτουν βολικά εξειδικευμένα εργαλεία.

Υπάρχουν τρεις τρόποι μεταφοράς μιας βάσης δεδομένων από την Access στο MS SQL. Εξετάστε τα όλα στο παράδειγμα μιας απλής βάσης δεδομένων που αποτελείται από δύο πίνακες και ένα ερώτημα.

Μεταφορά βάσης δεδομένων χρησιμοποιώνταςΠρόσβαση ("Οδηγός για μετατροπή σε μορφήSQLυπηρέτης")

Για να ξεκινήσετε τη μεταφορά, πρέπει να κάνετε κλικ στο κουμπί "SQL Server" στην περιοχή "Κίνηση δεδομένων" της καρτέλας "Εργασία με βάσεις δεδομένων".

Στο παράθυρο που ανοίγει, πρέπει να επιλέξετε πού θα μεταφερθούν τα δεδομένα.

Υπάρχουν δύο επιλογές:

  1. Εξαγωγή σε μια υπάρχουσα βάση δεδομένων MS SQL.
  2. Δημιουργήστε μια νέα βάση δεδομένων (προεπιλογή).

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

Για να επιλέξετε έναν πίνακα, χρησιμοποιήστε το κουμπί ">" και για να επιλέξετε όλους τους πίνακες, χρησιμοποιήστε το κουμπί ">>". Για να αρνηθείτε τη μεταφορά, τα κουμπιά "<» и «<<» соответственно.

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

  • Δημιουργήστε μια νέα εφαρμογή πελάτη-διακομιστή με διεπαφή χρήστη της Access.
  • Συμπερίληψη μεταφερθέντων πινάκων στη βάση δεδομένων πηγής ως εξωτερικοί (προεπιλογή).
  • Μην κάνετε τίποτα με τη βάση δεδομένων πηγής.

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

Η πρόοδος της διαδικασίας μεταφοράς εμφανίζεται καθαρά σε ειδικό παράθυρο.

Μόλις ολοκληρωθεί η μετεγκατάσταση, μπορείτε να ανοίξετε το SQL Server Management Studio και να δείτε το αποτέλεσμα.

Αυτή η μέθοδος είναι η πιο απλή και βολική, αλλά, δυστυχώς, σας επιτρέπει να μεταφέρετε μόνο πίνακες και τα συνοδευτικά στοιχεία τους (ευρετήρια, σχέσεις κ.λπ.).

Εισαγωγή βάσης δεδομένωνΜέσα πρόσβασηςMicrosoftSQLυπηρέτης

Το MS SQL μπορεί να εισάγει δεδομένα από μια μεγάλη ποικιλία πηγών. Αλλά η απευθείας εισαγωγή από την Access είναι δυνατή μόνο για βάσεις δεδομένων της παλιάς μορφής (.mdb).

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

Η εισαγωγή βάσεων δεδομένων νέων μορφών (2007 και άνω) είναι πολύ πιο δύσκολη.

Υπάρχουν δύο τρόποι για να λυθεί αυτό το πρόβλημα:

  • Πρώτα εξάγετε τη βάση δεδομένων της Access στην παλιά μορφή.
    Σε αυτήν την περίπτωση, μπορείτε εύκολα να χρησιμοποιήσετε τις οδηγίες που δίνονται στον παραπάνω σύνδεσμο.
  • Χρήση ODBC.
    Δημιουργία μιας πηγής δεδομένων για μια βάση δεδομένων της Access με επακόλουθη σύνδεση μέσω αυτής από τον MS SQL Server.

Δυστυχώς, η προσέγγιση ODBC είναι μάλλον περίπλοκη στις εκδόσεις 64-bit των Windows.

Ο λόγος είναι ότι οι εκδόσεις 64-bit του MS SQL συνοδεύονται από εκδόσεις 32-bit του SQL Server Management Studio. Αυτή η περίσταση σημαίνει ότι οι βάσεις δεδομένων της Access για τις οποίες δημιουργήθηκαν πηγές δεδομένων με βάση προγράμματα οδήγησης 64-bit δεν μπορούν να εισαχθούν χρησιμοποιώντας αυτό το πρόγραμμα.

Υπάρχουν και πάλι δύο τρόποι εξόδου (που σημαίνει μόνο μεθόδους που χρησιμοποιούν γραφική διεπαφή):

  • Χρησιμοποιήστε εκδόσεις 32-bit των Windows, MS SQL, Office.
  • Χρησιμοποιήστε μόνο Access 32-bit και διαμορφώστε την προέλευση δεδομένων χρησιμοποιώντας έναν διαχειριστή ODBC 32-bit (συνήθως C:\Windows\SysWOW64\odbcad32.exe).
  • Χρησιμοποιήστε εναλλακτικό λογισμικό για εργασία με MS SQL.

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

Κατά την εισαγωγή μεταφέρονται μόνο οι ίδιοι οι πίνακες και τα περιεχόμενά τους και τίποτα άλλο (συγκρίνετε με τις δυνατότητες της προηγούμενης μεθόδου).

Θα πρέπει επίσης να σημειωθεί ότι με την απευθείας εισαγωγή από την Access, το πρόβλημα με την εξαγωγή ερωτημάτων λύνεται εν μέρει (δεν υπάρχει πρόσβαση σε ερωτήματα μέσω ODBC). Όμως, από προεπιλογή, τα ερωτήματα εισάγονται στη βάση δεδομένων MS SQL με τη μορφή κανονικών πινάκων.

Ευτυχώς, είναι δυνατό να ρυθμίσετε με ακρίβεια τις παραμέτρους εισαγωγής και μπορείτε να αντικαταστήσετε με μη αυτόματο τρόπο το ερώτημα SQL για να δημιουργήσετε έναν πίνακα με ένα ερώτημα για τη δημιουργία μιας προβολής.

Για να το κάνετε αυτό, στο παράθυρο στο παραπάνω στιγμιότυπο οθόνης για το επιλεγμένο ερώτημα Access, κάντε κλικ στο κουμπί "Αλλαγή".

Στο παράθυρο που ανοίγει, κάντε κλικ στο κουμπί "Αλλαγή SQL ...".

Θα ανοίξει ένα παράθυρο επεξεργασίας ερωτήματος SQL, στο οποίο, στην πραγματικότητα, πρέπει να αντικαταστήσετε το ερώτημα που δημιουργείται αυτόματα

με το δικό σου.

Ως αποτέλεσμα, το ερώτημα από την Access θα μεταφερθεί σωστά στη βάση δεδομένων MS SQL, ως προβολή και όχι ως πίνακας.

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

Επομένως, αυτή η μέθοδος μεταφοράς βάσεων δεδομένων της Access στο MS SQL είναι πιο κατάλληλη για ειδικευμένους ειδικούς και στα δύο DBMS.

Το παρακάτω είναι ένα παράδειγμα εισαγωγής μιας βάσης δεδομένων της Access χρησιμοποιώντας ODBC σε μια έκδοση 32-bit των Windows. Σε μια έκδοση 64-bit των Windows, όταν χρησιμοποιείται μια έκδοση 32-bit της Access, η εισαγωγή είναι παρόμοια, αλλά η προέλευση δεδομένων δημιουργείται στον διαχειριστή ODBC 32-bit.

Δημιουργούμε μια πηγή δεδομένων.

Στο παράθυρο που ανοίγει, πληκτρολογήστε το όνομά του.

Στη συνέχεια, κάντε κλικ στο κουμπί "Επιλογή" και υποδείξτε σε ποια βάση δεδομένων της Access θέλετε να συνδεθείτε.

Όταν καθοριστεί το όνομα προέλευσης και το αρχείο βάσης δεδομένων, μένει να κάνετε κλικ στο κουμπί "Ok" και η πηγή δεδομένων για την επιθυμητή βάση δεδομένων της Access είναι έτοιμη.

Τώρα μπορείτε να προχωρήσετε απευθείας στην εισαγωγή της βάσης δεδομένων στο MS SQL.

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

Θα ανοίξει ο "Οδηγός εισαγωγής και εξαγωγής δεδομένων".

Στην αναπτυσσόμενη λίστα "Πηγή δεδομένων", πρέπει να επιλέξετε ".Net Framework Data Provider for Odbc" (αν δεν έχει επιλεγεί από προεπιλογή) και στη σειρά Dsn στον πίνακα να καθορίσετε το όνομα της προέλευσης δεδομένων που δημιουργήθηκε παραπάνω για την Access βάση δεδομένων. Η συμβολοσειρά σύνδεσης ("Συμβολοσειρά σύνδεσης") θα δημιουργηθεί αυτόματα.

Στη συνέχεια, πρέπει να καθορίσετε ποια βάση δεδομένων, ποια παρουσία της εισαγωγής MS SQL. Για να το κάνετε αυτό, αφού κάνετε κλικ στο κουμπί "Επόμενο", επιλέξτε στην αναπτυσσόμενη λίστα "Προορισμός" είτε "Microsoft SQL Server Native Client" (όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης) ή "Microsoft OLE DB Provider για SQL Server", καθορίστε το επιθυμητό όνομα χρήστη και κωδικός πρόσβασης βάσης δεδομένων για τις συνδέσεις.

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

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

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

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

Για να ολοκληρώσετε τον οδηγό, απλώς κάντε κλικ στο κουμπί "Κλείσιμο".

Το αποτέλεσμα μπορεί να δει το SQL Server Management Studio.

Μεταφορά της βάσης δεδομένων από το πλάι με μέσαODBC

Αυτή η μέθοδος είναι καθολική για την εξαγωγή δεδομένων από την Access σε οποιοδήποτε άλλο DBMS. Αρκεί να υποστηρίζει την εργασία με ODBC.

Ένα παράδειγμα τέτοιας εξαγωγής έχει ήδη συζητηθεί στο άρθρο ""

ΓιαΚυρίαΗ SQL έδωσε τη θέση της στη μετεγκατάσταση της βάσης δεδομένων απόΔεν απαιτείται πρόσβαση, καθώς εξάγονται μόνο πίνακες με δεδομένα και τα ερωτήματα εξάγονται μόνο ως κανονικοί πίνακες.

Ωστόσο, αυτή η φορητότητα εξακολουθεί να είναι διαθέσιμη (η έκδοση 2014 δεν αποτέλεσε εξαίρεση). Ας ρίξουμε λοιπόν μια ματιά και σε αυτό.

Αρχικά, ας δημιουργήσουμε μια πηγή δεδομένων για εργασία με MS SQL (ας είναι ένα προσαρμοσμένο DSN).

Καθορίστε το πρόγραμμα οδήγησης για την πηγή.

Μετά από αυτό, θα ξεκινήσει η διαδικασία δημιουργίας και διαμόρφωσής του.

Ορίστε το όνομα της προέλευσης δεδομένων και καθορίστε το όνομα της παρουσίας MS SQL στην οποία θέλετε να συνδεθείτε.

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

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

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

Εάν όλα γίνονται σωστά, θα εμφανιστεί ένα μήνυμα σχετικά με την επιτυχή επαλήθευση.

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

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

Σε αυτήν την περίπτωση, η αρχική τιμή παραμένει.

Αφού κάνετε κλικ στο κουμπί "Ok", πρέπει να επιλέξετε την πηγή δεδομένων που δημιουργήθηκε.

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

Αφού πατήσετε το κουμπί "Ok", θα πραγματοποιηθεί η εξαγωγή.

Ωστόσο, όπως αναφέρθηκε παραπάνω, το αποτέλεσμα εξαγωγής σε περίπτωση ερωτήματος δεν είναι σωστό.

Αντί για την προβολή "Αίτημα επαφών", δημιουργήθηκε ένας πίνακας με το ίδιο όνομα στη βάση δεδομένων MS SQL.

Επίσης, ακόμα κι αν εξάγετε μόνο πίνακες, υπάρχουν πολλά επιπλέον βήματα που πρέπει να γίνουν μετά την εξαγωγή (αναδημιουργία συνδέσμων κ.λπ.). Επομένως, η περιγραφόμενη μέθοδος μεταφοράς βάσεων δεδομένων από την Access στο MS SQL δεν χρησιμοποιείται πλέον πρακτικά.

Περιγραφή του εκπαιδευτικού έργου "Κατάστημα"

Σχέδιο σύνδεσης πίνακα

Περιγραφή πινάκων

m_category - κατηγορίες προϊόντων

m_income - παραλαβή εμπορευμάτων

m_outcome - κατανάλωση αγαθών

m_product - κατάλογος, περιγραφή προϊόντος

m_supplier - κατάλογος; πληροφορίες προμηθευτή

m_unit - κατάλογος; μονάδες

Για να δοκιμάσετε πρακτικά τα παραδείγματα που δίνονται σε αυτό το σεμινάριο, πρέπει να έχετε διαθέσιμο το ακόλουθο λογισμικό:

Microsoft Access 2003 ή μεταγενέστερη έκδοση.

Ερώτημα SQL στο MS Access. Αρχή

Για να δείτε τα περιεχόμενα ενός πίνακα, κάντε διπλό κλικ στο όνομα του πίνακα στο αριστερό παράθυρο:

Για να μεταβείτε στη λειτουργία επεξεργασίας πεδίων πίνακα, επιλέξτε Λειτουργία σχεδίασης στον επάνω πίνακα:

Για να εμφανίσετε το αποτέλεσμα ενός ερωτήματος SQL, κάντε διπλό κλικ στο όνομα του ερωτήματος στο αριστερό παράθυρο:

Για να μεταβείτε στη λειτουργία επεξεργασίας ερωτημάτων SQL, επιλέξτε τη λειτουργία SQL στον επάνω πίνακα:

Ερώτημα SQL. Παραδείγματα στο MS Access. ΕΠΙΛΟΓΗ: 1-10

Σε ένα ερώτημα SQL, η πρόταση SELECT χρησιμοποιείται για την επιλογή από πίνακες βάσης δεδομένων.

Ερώτημα SQL Q001.Ένα παράδειγμα ερωτήματος SQL για τη λήψη μόνο των απαιτούμενων πεδίων στην επιθυμητή ακολουθία:

SELECT dt, product_id, ποσό


ΑΠΟ m_income;

Ερώτημα SQL Q002.Σε αυτό το παράδειγμα ερωτήματος SQL, ο χαρακτήρας αστερίσκου (*) χρησιμοποιείται για την εμφάνιση όλων των στηλών του πίνακα m_product, με άλλα λόγια, για να ληφθούν όλα τα πεδία της σχέσης m_product:

ΕΠΙΛΟΓΗ *
ΑΠΟ m_product;

ΑίτησηSQLQ003.Η δήλωση DISTINCT χρησιμοποιείται για την εξάλειψη των διπλότυπων εγγραφών και τη λήψη πολλών μοναδικών εγγραφών:

ΕΠΙΛΕΞΤΕ ΞΕΧΩΡΙΣΤΟ αναγνωριστικό προϊόντος


ΑΠΟ m_income;

Ερώτημα SQL Q004.Η πρόταση ORDER BY χρησιμοποιείται για την ταξινόμηση (παραγγελίας) εγγραφών με βάση τις τιμές ενός συγκεκριμένου πεδίου. Το όνομα του πεδίου ακολουθεί την ρήτρα ORDER BY:

ΕΠΙΛΟΓΗ *
ΑΠΟ m_income


ΠΑΡΑΓΓΕΛΙΑ ΚΑΤΑ τιμή?

Ερώτημα SQL Q005.Η πρόταση ASC χρησιμοποιείται επιπλέον της πρότασης ORDER BY και χρησιμοποιείται για να ορίσει μια αύξουσα ταξινόμηση. Η πρόταση DESC χρησιμοποιείται επιπλέον της πρότασης ORDER BY και χρησιμοποιείται για να ορίσει μια φθίνουσα ταξινόμηση. Στην περίπτωση που δεν καθορίζονται ούτε ASC ούτε DESC, η παρουσία ASC (προεπιλογή) θεωρείται:

ΕΠΙΛΟΓΗ *
ΑΠΟ m_income


ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ dt DESC , τιμή;

Ερώτημα SQL Q006.Για να επιλέξετε τις απαραίτητες εγγραφές από τον πίνακα, χρησιμοποιούνται διάφορες λογικές εκφράσεις που εκφράζουν τη συνθήκη επιλογής. Η δυαδική έκφραση έρχεται μετά την πρόταση WHERE. Ένα παράδειγμα λήψης από τον πίνακα m_income όλων των εγγραφών για τις οποίες η τιμή του ποσού είναι μεγαλύτερη από 200:

ΕΠΙΛΟΓΗ *
ΑΠΟ m_income


ΠΟΥ ποσό>200;

Ερώτημα SQL Q007.Για την έκφραση σύνθετων συνθηκών, χρησιμοποιούνται οι λογικές πράξεις AND (σύνδεση), OR (διάζευξη) και NOT (λογική άρνηση). Ένα παράδειγμα λήψης από τον πίνακα m_outcome όλων των εγγραφών για τις οποίες η τιμή του ποσού είναι 20 και η τιμή τιμής είναι μεγαλύτερη ή ίση με 10:

τιμή


ΑΠΟ m_outcome
ΠΟΥ ποσό=20 ΚΑΙ τιμή>=10;

Ερώτημα SQL Q008.Για να ενώσετε δεδομένα από δύο ή περισσότερους πίνακες, χρησιμοποιήστε τις δηλώσεις ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ, ΑΡΙΣΤΕΡΑ ΣΥΝΔΕΣΗ, ΔΕΞΙΑ ΣΥΝΔΕΣΗ. Το ακόλουθο παράδειγμα ανακτά τα πεδία dt, product_id, ποσό, τιμή από τον πίνακα m_income και το πεδίο τίτλος από τον πίνακα m_product. Η εγγραφή του πίνακα m_income συνδέεται με την εγγραφή του πίνακα m_product όταν η τιμή του m_income.product_id είναι ίση με την τιμή του m_product.id:



ON 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, τίτλος, ποσό, τιμή


ΑΠΟ m_income INNER JOIN m_product

WHERE title="(!ΓΛΩΣΣΑ:Γάλα" And dt=#6/12/2011#; !}

Ερώτημα SQL Q010.Η εντολή BETWEEN χρησιμοποιείται για να ελέγξει εάν ένα εύρος τιμών ανήκει σε αυτήν. Ένα παράδειγμα ερωτήματος SQL που εμφανίζει πληροφορίες σχετικά με αγαθά που παραλήφθηκαν από την 1η Ιουνίου έως τις 30 Ιουνίου 2011:

ΕΠΙΛΟΓΗ *
ΑΠΟ m_income INNER JOIN m_product


ON m_income.product_id=m_product.id
ΠΟΥ dt ΜΕΤΑΞΥ #6/1/2011# και #6/30/2011#;

Ερώτημα SQL. Παραδείγματα στο MS Access. ΕΠΙΛΟΓΗ: 11-20

Ένα ερώτημα SQL μπορεί να είναι ένθετο μέσα σε ένα άλλο. Ένα υποερώτημα δεν είναι τίποτα άλλο από ένα ερώτημα μέσα σε ένα ερώτημα. Συνήθως, ένα υποερώτημα χρησιμοποιείται σε έναν όρο WHERE. Υπάρχουν όμως και άλλοι τρόποι χρήσης υποερωτημάτων.

Αίτημα Q011.Εμφανίζει πληροφορίες για προϊόντα από τον πίνακα m_product, οι κωδικοί του οποίου βρίσκονται επίσης στον πίνακα m_income:

ΕΠΙΛΟΓΗ *
ΑΠΟ m_product


WHERE id IN (SELECT product_id FROM m_income);

Αίτημα Q012.Εμφανίζεται μια λίστα προϊόντων από τον πίνακα m_product, οι κωδικοί των οποίων δεν βρίσκονται στον πίνακα m_outcome:

ΕΠΙΛΟΓΗ *
ΑΠΟ m_product


WHERE id NOT IN (SELECT product_id FROM m_outcome);

Αίτημα Q013.Αυτό το ερώτημα SQL επιστρέφει μια μοναδική λίστα κωδικών και ονομάτων προϊόντων που έχουν κωδικούς στον πίνακα m_income αλλά όχι στον πίνακα m_outcome:

ΕΠΙΛΟΓΗ DISTINCT product_id, τίτλος


ΑΠΟ m_income INNER JOIN m_product
ON m_income.product_id=m_product.id
WHERE product_id NOT IN (SELECT product_id FROM m_outcome);

Αίτημα Q014.Μια μοναδική λίστα κατηγοριών εμφανίζεται από τον πίνακα m_category, τα ονόματα των οποίων ξεκινούν με το γράμμα M:

ΕΠΙΛΟΓΗ ΔΙΑΚΡΙΤΟΥ τίτλου


ΑΠΟ m_product
ΟΠΟΥ τίτλος LIKE "M*"?

Αίτημα Q015.Ένα παράδειγμα εκτέλεσης αριθμητικών πράξεων σε πεδία σε ένα ερώτημα και μετονομασία πεδίων σε ένα ερώτημα (ψευδώνυμο). Αυτό το παράδειγμα υπολογίζει έξοδο = ποσότητα*τιμή και κέρδος για κάθε εγγραφή κατανάλωσης προϊόντος, υποθέτοντας ότι το κέρδος είναι 7 τοις εκατό των πωλήσεων:


ποσό*τιμή/100*7 AS κέρδος
ΑΠΟ m_outcome;

Αίτημα Q016.Αναλύοντας και απλοποιώντας αριθμητικές πράξεις, μπορείτε να αυξήσετε την ταχύτητα εκτέλεσης ερωτήματος:

SELECT dt, product_id, ποσό, τιμή, ποσό*τιμή AS outcome_sum,


outcome_sum*0,07 AS κέρδος
ΑΠΟ m_outcome;

Αίτημα Q017.Χρησιμοποιώντας τη δήλωση ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ, μπορείτε να συνδυάσετε δεδομένα από πολλούς πίνακες. Στο παρακάτω παράδειγμα, ανάλογα με την τιμή του ctgry_id, κάθε καταχώρηση στον πίνακα m_income αντιστοιχίζεται με το όνομα της κατηγορίας από τον πίνακα m_category στον οποίο ανήκει το προϊόν:

ΕΠΙΛΟΓΗ γ.τίτλος, β.τίτλος, dt, ποσό, τιμή, ποσό*τιμή AS εισόδημα_άθροισμα


FROM (m_income AS INNER JOIN m_product AS b ON a.product_id=b.id)
ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ m_category AS c ON b.ctgry_id=c.id
ΠΑΡΑΓΓΕΛΙΑ ΚΑΤΑ c.title, b.title;

Αίτημα Q018.Συναρτήσεις όπως SUM - άθροισμα, COUNT - ποσότητα, AVG - αριθμητικός μέσος όρος, MAX - μέγιστη τιμή, MIN - ελάχιστη τιμή ονομάζονται συναρτήσεις συγκεντρωτικών. Παίρνουν πολλαπλές τιμές και επιστρέφουν μία μόνο τιμή όταν υποβάλλονται σε επεξεργασία. Ένα παράδειγμα υπολογισμού του αθροίσματος του γινόμενου των πεδίων ποσό και τιμή χρησιμοποιώντας αθροιστική συνάρτησηΑΘΡΟΙΣΜΑ:

ΕΠΙΛΕΞΤΕ ΠΟΣΟ (ποσό*τιμή) AS Total_Sum


ΑΠΟ m_income;

Αίτημα Q019.Ένα παράδειγμα χρήσης πολλαπλών αθροιστικών συναρτήσεων:

SELECT Sum(amount) AS Amount_Sum, AVG(amount) AS Amount_AVG,


MAX(amount) AS Amount_Max, Min(amount) AS Amount_Min,
Μέτρηση(*) AS Total_Number
ΑΠΟ m_income;

Αίτημα Q020.Σε αυτό το παράδειγμα, υπολογίζεται το άθροισμα όλων των στοιχείων με κωδικό 1 που ελήφθησαν τον Ιούνιο του 2011:

ΕΠΙΛΕΞΤΕ Άθροισμα(ποσό*τιμή) ΩΣ εισόδημα_άθροισμα


ΑΠΟ m_income
WHERE product_id=1 ΚΑΙ dt ΜΕΤΑΞΥ #6/1/2011# ΚΑΙ #6/30/2011#;.

Αίτημα Q021.Το ακόλουθο ερώτημα SQL υπολογίζει πόσο πουλήθηκαν τα αγαθά με κωδικό 4 ή 6:

ΕΠΙΛΕΞΤΕ Άθροισμα (ποσό*τιμή) ως άθροισμα_αποτέλεσης


ΑΠΟ m_outcome
ΠΟΥ product_id=4 Ή product_id=6;

Αίτημα Q022.Υπολογίζεται για το ποσό που πωλήθηκε στις 12 Ιουνίου 2011 αγαθών με κωδικό 4 ή 6:

ΕΠΙΛΕΞΤΕ Άθροισμα(ποσό*τιμή) ΩΣ άθροισμα_αποτέλεσης


ΑΠΟ m_outcome
ΠΟΥ (product_id=4 Ή product_id=6) ΚΑΙ dt=#6/12/2011#;

Αίτημα Q023.Το καθήκον είναι αυτό. Υπολογίστε το συνολικό ποσό για το οποίο πιστώθηκαν τα εμπορεύματα της κατηγορίας «Ψητά προϊόντα».

Για να λύσετε αυτό το πρόβλημα, πρέπει να λειτουργήσετε σε τρεις πίνακες: m_income, m_product και m_category, επειδή:


- η ποσότητα και η τιμή των πιστωμένων αγαθών αποθηκεύονται στον πίνακα m_income.
- ο κωδικός κατηγορίας κάθε προϊόντος αποθηκεύεται στον πίνακα m_product.
- το όνομα του τίτλου της κατηγορίας αποθηκεύεται στον πίνακα m_category.

Για να λύσουμε αυτό το πρόβλημα, χρησιμοποιούμε τον ακόλουθο αλγόριθμο:


- προσδιορισμός του κωδικού κατηγορίας "Προϊόντα αρτοποιίας" από τον πίνακα m_category μέσω υποερώτησης.
- Συμμετοχή στους πίνακες m_income και m_product για τον προσδιορισμό της κατηγορίας κάθε προϊόντος που πιστώνεται.
- υπολογισμός του ποσού απόδειξης (= ποσότητα * τιμή) για εμπορεύματα, του οποίου ο κωδικός κατηγορίας είναι ίσος με τον κωδικό που ορίζεται από το παραπάνω υποερώτημα.
ΕΠΙΛΕΓΩ
ΑΠΟ m_product AS INNER JOIN m_income AS b ON a.id=b.product_id
WHERE ctgry_id = (SELECT id FROM m_category WHERE title="Baked goods"); !}

Αίτημα 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


FROM (ΕΠΙΛΟΓΗ DISTINCT product_id FROM m_outcome) ΩΣ t;

Αίτημα Q026.Ο όρος GROUP BY χρησιμοποιείται για την ομαδοποίηση εγγραφών. Συνήθως, οι εγγραφές ομαδοποιούνται με βάση την τιμή ενός ή περισσότερων πεδίων και εφαρμόζεται μια συγκεντρωτική λειτουργία σε κάθε ομάδα. Για παράδειγμα, το ακόλουθο ερώτημα δημιουργεί μια αναφορά σχετικά με την πώληση αγαθών. Δηλαδή, δημιουργείται ένας πίνακας που θα περιέχει τα ονόματα των αγαθών και το ποσό για το οποίο πωλούνται:

ΕΠΙΛΟΓΗ τίτλου, SUM(ποσό*τιμή) AS outcome_sum


ΑΠΟ m_product ΩΣ ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ m_αποτέλεσμα ΩΣ β
ON a.id=b.product_id
ΟΜΑΔΑ ΑΝΑ Τίτλο.

Αίτημα Q027.Αναφορά πωλήσεων ανά κατηγορία. Δηλαδή, δημιουργείται ένας πίνακας που θα περιέχει τα ονόματα των κατηγοριών προϊόντων, το συνολικό ποσό για το οποίο πωλούνται τα αγαθά αυτών των κατηγοριών και το μέσο ποσό πωλήσεων. Η συνάρτηση ROUND χρησιμοποιείται για να στρογγυλοποιήσει τη μέση τιμή στο πλησιέστερο εκατοστό (το δεύτερο δεκαδικό ψηφίο μετά το δεκαδικό διαχωριστικό):

SELECT c.title, SUM(amount*price) AS outcome_sum,


ROUND(AVG(ποσό*τιμή),2) AS outcome_sum_avg
FROM (m_product AS INNER JOIN m_outcome AS b ON a.id=b.product_id)
ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ m_category AS c ON a.ctgry_id=c.id
ΟΜΑΔΑ ΑΝΑ c.title;

Αίτημα Q028.Για κάθε προϊόν, υπολογίζεται ο συνολικός και ο μέσος αριθμός των παραλαβών του και εμφανίζει πληροφορίες για τα εμπορεύματα, ο συνολικός αριθμός των οποίων είναι τουλάχιστον 500:

SELECT product_id, SUM(amount) AS ποσό_sum,


Round(Avg(amount),2) AS ποσό_μέσο
ΑΠΟ m_income
GROUP BY product_id
ΕΧΟΝΤΑΣ Ποσό(ποσό)>=500;

Αίτημα Q029.Αυτό το ερώτημα υπολογίζει για κάθε είδος το άθροισμα και τον μέσο όρο των εισπράξεών του το δεύτερο τρίμηνο του 2011. Εάν το συνολικό ποσό παραλαβής των αγαθών δεν είναι μικρότερο από 1000, τότε εμφανίζονται πληροφορίες σχετικά με αυτό το προϊόν:

ΕΠΙΛΟΓΗ τίτλου, ΠΟΣΟ(ποσό*τιμή) ΩΣ εισόδημα_άθροισμα


ΑΠΟ m_income a INNER JOIN m_product b ON a.product_id=b.id
ΠΟΥ dt ΜΕΤΑΞΥ #4/1/2011# ΚΑΙ #6/30/2011#
ΟΜΑΔΑ ΑΝΑ Τίτλο
ΕΧΟΝΤΑΣ ΠΟΣΟ(ποσό*τιμή)>=1000;

Αίτημα Q030.Σε ορισμένες περιπτώσεις είναι απαραίτητο να αντιστοιχίσετε κάθε εγγραφή κάποιου πίνακα με κάθε εγγραφή άλλου πίνακα. αυτό που ονομάζεται καρτεσιανό προϊόν. Ο πίνακας που προκύπτει από μια τέτοια ένωση ονομάζεται πίνακας Descartes. Για παράδειγμα, εάν κάποιος πίνακας Α έχει 100 εγγραφές και ο πίνακας Β έχει 15 εγγραφές, τότε ο καρτεσιανός πίνακας του θα αποτελείται από 100*15=150 εγγραφές. Το ακόλουθο ερώτημα ενώνει κάθε καταχώρηση στον πίνακα m_income με κάθε καταχώρηση στον πίνακα m_outcome:
ΑΠΟ m_income, m_outcome;

Αίτημα Q031.Ένα παράδειγμα ομαδοποίησης εγγραφών κατά δύο πεδία. Το ακόλουθο ερώτημα SQL υπολογίζει για κάθε προμηθευτή την ποσότητα και την ποσότητα των αγαθών που έλαβε από αυτόν:


SUM(ποσό*τιμή) AS εισόδημα_άθροισμα

Αίτημα Q032.Ένα παράδειγμα ομαδοποίησης εγγραφών κατά δύο πεδία. Το ακόλουθο ερώτημα υπολογίζει, για κάθε προμηθευτή, την ποσότητα και την ποσότητα των προϊόντων του που πωλούνται από εμάς:

SELECT προμηθευτής_αναγνωριστικό, αναγνωριστικό_προϊόντος, SUM(ποσό) AS ποσό_άθροισμα,




ΟΜΑΔΑ ΚΑΤΑ προμηθευτή_αναγνωριστικό, αναγνωριστικό_προϊόντος;

Αίτημα Q033.Σε αυτό το παράδειγμα, τα δύο παραπάνω ερωτήματα (q031 και q032) χρησιμοποιούνται ως δευτερεύοντα ερωτήματα. Τα αποτελέσματα αυτών των ερωτημάτων συγχωνεύονται σε μία αναφορά χρησιμοποιώντας τη μέθοδο LEFT JOIN. Το ακόλουθο ερώτημα εμφανίζει μια αναφορά σχετικά με τον αριθμό και την ποσότητα των προϊόντων που λαμβάνονται και πωλούνται για κάθε προμηθευτή. Θα πρέπει να δώσετε προσοχή στο γεγονός ότι εάν κάποιο προϊόν έχει ήδη φτάσει, αλλά δεν έχει πουληθεί ακόμη, τότε το κελί outcome_sum για αυτήν την εγγραφή θα είναι κενό. ότι αυτό το ερώτημα είναι μόνο ένα παράδειγμα χρήσης σχετικά σύνθετα ερωτήματαως υποερώτημα. Η απόδοση αυτού του ερωτήματος SQL με μεγάλο όγκο δεδομένων είναι αμφίβολη:

ΕΠΙΛΟΓΗ *
ΑΠΟ



SUM(ποσό*τιμή) AS εισόδημα_άθροισμα

ON a.product_id=b.id ΟΜΑΔΑ ΑΝΑ προμηθευτή_id, product_id) ΩΣ α
ΑΡΙΣΤΕΡΑ ΣΥΜΜΕΤΟΧΗ
(ΕΠΙΛΟΓΗ Αναγνωριστικό_προμηθευτή, Αναγνωριστικό_προϊόντος, SUM(ποσό) AS ποσό_άθροισμα,
SUM(ποσό*τιμή) AS outcome_sum
ΑΠΟ m_outcome AS ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ m_product AS β
ON a.product_id=b.id GROUP BY provider_id, product_id) ΩΣ β
ON (a.product_id=b.product_id) ΚΑΙ (a.supplier_id=b.supplier_id);

Αίτημα Q034.Σε αυτό το παράδειγμα, τα δύο παραπάνω ερωτήματα (q031 και q032) χρησιμοποιούνται ως δευτερεύοντα ερωτήματα. Τα αποτελέσματα αυτών των ερωτημάτων συνδυάζονται σε μία αναφορά χρησιμοποιώντας τη μέθοδο RIGTH JOIN. Το ακόλουθο ερώτημα εκτυπώνει μια αναφορά σχετικά με το ποσό των πληρωμών κάθε πελάτη για τα συστήματα πληρωμών που χρησιμοποίησε και το ποσό των επενδύσεων που πραγματοποίησε. Το ακόλουθο ερώτημα εμφανίζει μια αναφορά σχετικά με τον αριθμό και την ποσότητα των προϊόντων που λαμβάνονται και πωλούνται για κάθε προμηθευτή. Σημειώστε ότι εάν ένα προϊόν έχει ήδη πουληθεί αλλά δεν έχει ληφθεί ακόμη, τότε το κελί εισοδήματος_άθροισμα για αυτήν την καταχώρηση θα είναι κενό. Η παρουσία τέτοιων κενών κελιών αποτελεί ένδειξη σφάλματος στη λογιστική των πωλήσεων, καθώς πριν από την πώληση, είναι απαραίτητο πρώτα να φτάσει το αντίστοιχο προϊόν:

ΕΠΙΛΟΓΗ *
ΑΠΟ


(ΕΠΙΛΟΓΗ Αναγνωριστικό_προμηθευτή, Αναγνωριστικό_προϊόντος, SUM(ποσό) AS ποσό_άθροισμα,
SUM(ποσό*τιμή) AS εισόδημα_άθροισμα
ΑΠΟ m_income AS INNER JOIN m_product AS b ON a.product_id=b.id
ΟΜΑΔΑ ΑΝΑ προμηθευτή_αναγνωριστικό, προϊόν_αναγνωριστικό) ΩΣ α
ΔΕΞΙΑ ΣΥΝΔΕΣΗ
(ΕΠΙΛΟΓΗ Αναγνωριστικό_προμηθευτή, Αναγνωριστικό_προϊόντος, SUM(ποσό) AS ποσό_άθροισμα,
SUM(ποσό*τιμή) AS outcome_sum
FROM m_outcome AS ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ m_product AS b ON a.product_id=b.id
ΟΜΑΔΑ ΑΝΑ προμηθευτή_αναγνωριστικό, προϊόν_αναγνωριστικό) ΩΣ β
ON (a.supplier_id=b.supplier_id) ΚΑΙ (a.product_id=b.product_id);

Αίτημα Q035.Εμφανίζεται μια αναφορά για το ποσό των εσόδων και εξόδων ανά προϊόν. Για να γίνει αυτό, δημιουργείται μια λίστα προϊόντων σύμφωνα με τους πίνακες m_income και m_outcome και, στη συνέχεια, για κάθε προϊόν από αυτήν τη λίστα, υπολογίζεται το άθροισμα των εσόδων του σύμφωνα με τον πίνακα m_income και το άθροισμα των εξόδων του σύμφωνα με τον πίνακα m_outcome:

SELECT product_id, SUM(in_amount) AS έσοδα_amount,


SUM(out_amount) AS outcome_amount
ΑΠΟ
(SELECT product_id, ποσό AS in_amount, 0 AS out_amount
ΑΠΟ m_income
ΕΝΩΣΗ ΟΛΩΝ
SELECT product_id, 0 AS in_amount, ποσό AS out_amount
ΑΠΟ m_αποτέλεσμα) ΩΣ t
GROUP BY product_id;

Αίτημα Q036.Η συνάρτηση EXISTS επιστρέφει TRUE εάν το σύνολο που της έχει μεταβιβαστεί περιέχει στοιχεία. Η συνάρτηση ΥΠΑΡΧΕΙ επιστρέφει FALSE αν το σύνολο που της μεταβιβάστηκε είναι κενό, δηλαδή δεν έχει στοιχεία. Το ακόλουθο ερώτημα επιστρέφει τους κωδικούς προϊόντων που περιέχονται στον πίνακα m_income και στον πίνακα m_outcome:

ΕΠΙΛΕΞΤΕ ΞΕΧΩΡΙΣΤΟ αναγνωριστικό προϊόντος


ΑΠΟ m_income AS α
ΠΟΥ ΥΠΑΡΧΕΙ(ΕΠΙΛΟΓΗ_αναγνωριστικό προϊόντος ΑΠΟ m_αποτέλεσμα ΩΣ β

Αίτημα Q037.Εμφανίζονται κωδικοί προϊόντων που περιέχονται τόσο στον πίνακα m_income όσο και στον πίνακα m_outcome:

ΕΠΙΛΕΞΤΕ ΞΕΧΩΡΙΣΤΟ αναγνωριστικό προϊόντος


ΑΠΟ m_income AS α
WHERE product_id IN (SELECT product_id FROM m_outcome)

Αίτημα Q038.Εμφανίζονται κωδικοί προϊόντων που περιέχονται όπως στον πίνακα m_income, αλλά δεν περιλαμβάνονται στον πίνακα m_outcome:

ΕΠΙΛΕΞΤΕ ΞΕΧΩΡΙΣΤΟ αναγνωριστικό προϊόντος


ΑΠΟ m_income AS α
ΠΟΥ ΔΕΝ ΥΠΑΡΧΕΙ(ΕΠΙΛΟΓΗ_αναγνωριστικό προϊόντος ΑΠΟ m_αποτέλεσμα ΩΣ β
ΠΟΥ b.product_id=a.product_id);

Αίτημα Q039.Εμφανίζεται μια λίστα προϊόντων με το υψηλότερο ποσό πωλήσεων. Ο αλγόριθμος είναι αυτός. Για κάθε προϊόν υπολογίζεται το άθροισμα των πωλήσεών του. Στη συνέχεια, καθορίζεται το μέγιστο αυτών των ποσών. Στη συνέχεια, για κάθε προϊόν, υπολογίζεται και πάλι το άθροισμα των πωλήσεών του και εμφανίζεται ο κωδικός και το άθροισμα των πωλήσεων αγαθών, το άθροισμα των πωλήσεων των οποίων είναι ίσο με το μέγιστο:

SELECT product_id, SUM(amount*price) AS ποσό_άθροισμα


ΑΠΟ m_outcome
GROUP BY product_id
ΕΧΟΝΤΑΣ ΠΟΣΟ (ποσό*τιμή) = (ΕΠΙΛΟΓΗ ΜΕΓ.(s_amount)
FROM (ΕΠΙΛΟΓΗ ΠΟΣΟΣ(ποσό*τιμή) ΩΣ s_amount FROM m_outcome GROUP BY product_id));

Αίτημα Q040.Η δεσμευμένη λέξη IIF (δήλωση υπό όρους) χρησιμοποιείται για την αξιολόγηση boolean έκφρασηκαι εκτελέστε μία ή την άλλη ενέργεια ανάλογα με το αποτέλεσμα (TRUE ή FALSE). Στο παρακάτω παράδειγμα, η παράδοση ενός είδους θεωρείται «μικρή» εάν η ποσότητα είναι μικρότερη από 500. Διαφορετικά, δηλαδή, η ποσότητα παραλαβής είναι μεγαλύτερη ή ίση με 500, η ​​παράδοση θεωρείται «μεγάλη»:

SELECT dt, product_id, ποσό,


IIF(ποσό FROM m_income;

Ερώτημα SQL Q041.Στην περίπτωση που η δήλωση IIF χρησιμοποιείται περισσότερες από μία φορές, είναι πιο βολικό να την αντικαταστήσετε με την πρόταση SWITCH. Ο τελεστής SWITCH (τελεστής πολλαπλών επιλογών) χρησιμοποιείται για την αξιολόγηση μιας λογικής έκφρασης και την εκτέλεση μιας ενέργειας ανάλογα με το αποτέλεσμα. Στο παρακάτω παράδειγμα, η παρτίδα που παραδόθηκε θεωρείται "μικρή" εάν η ποσότητα των εμπορευμάτων στην παρτίδα είναι μικρότερη από 500. Διαφορετικά, εάν δηλαδή η ποσότητα των αγαθών είναι μεγαλύτερη ή ίση με 500, η ​​παρτίδα θεωρείται "μεγάλη ":

SELECT dt, product_id, ποσό,


ΔΙΑΚΟΠΤΗΣ (ποσό =500"μεγάλο") ΩΣ ένδειξη
ΑΠΟ m_income;

Αίτημα 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


FROM (ΕΠΙΛΟΓΗ ποσού*τιμής ΩΣ outcome_sum,
IIf(ποσό*τιμή IIf(ποσό*τιμή ΑΠΟ m_outcome) AS t
ΟΜΑΔΑ ΑΝΑ Κατηγορία;

Ερώτημα 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


ΑΠΟ m_income;

Ερώτημα SQL Q046.Η συνάρτηση DateDiff έχει σχεδιαστεί για να υπολογίζει τη διαφορά μεταξύ δύο ημερομηνιών σε διαφορετικές μονάδες (ημέρες, μήνες ή έτη). Το ακόλουθο ερώτημα υπολογίζει τη διαφορά μεταξύ της ημερομηνίας στο πεδίο dt και της τρέχουσας ημερομηνίας σε ημέρες, μήνες και έτη:

SELECT dt, DateDiff("d",dt,Date()) AS last_day,


DateDiff("m",dt,Date()) ΩΣ last_months,
DateDiff("εεεε",dt,Date()) ΩΣ last_years
ΑΠΟ m_income;

Ερώτημα SQL Q047.Ο αριθμός των ημερών από την ημερομηνία παραλαβής των εμπορευμάτων (πίνακας m_έσοδα) έως σημερινή ημερομηνίαχρησιμοποιώντας τη συνάρτηση DateDiff και συγκρίνεται η ημερομηνία λήξης (πίνακας m_product):


DateDiff("d",dt,Date()) ΩΣ last_days
ΑΠΟ m_income ΩΣ ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ m_product AS β
ON a.product_id=b.id;

Ερώτημα SQL Q048.Υπολογίζεται ο αριθμός των ημερών από την ημερομηνία παραλαβής των εμπορευμάτων έως την τρέχουσα ημερομηνία και, στη συνέχεια, ελέγχεται εάν αυτός ο αριθμός υπερβαίνει την ημερομηνία λήξης:

SELECT a.id, product_id, dt, lifedays,


DateDiff("d",dt,Date()) AS last_days, IIf(last_days>lifedays,"Yes","No") AS date_expire
ΑΠΟ m_income μια ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ m_product β
ON a.product_id=b.id;

Ερώτημα SQL Q049.Υπολογίζεται ο αριθμός των μηνών από την ημερομηνία παραλαβής των εμπορευμάτων μέχρι την τρέχουσα ημερομηνία. Η στήλη month_last1 υπολογίζει τον απόλυτο αριθμό μηνών, η στήλη month_last2 υπολογίζει τον αριθμό των πλήρων μηνών:

SELECT dt, DateDiff("m",dt,Date()) AS month_last1,


DateDiff("m",dt,Date())-iif(day(dt)>day(date()),1,0) AS month_last2
ΑΠΟ m_income;

Ερώτημα SQL Q050.Εμφανίζεται τριμηνιαία έκθεση για την ποσότητα και την ποσότητα των εμπορευμάτων που παραλήφθηκαν για το 2011:

SELECT kvartal, SUM(outcome_sum) AS Σύνολο


FROM (ΕΠΙΛΟΓΗ ποσό*τιμή AS outcome_sum, μήνας(dt) AS m,
ΔΙΑΚΟΠΤΗΣ(m =10,4) ΩΣ kvartal
ΑΠΟ m_income WHERE έτος(dt)=2011) ΩΣ t
ΟΜΑΔΑ ΑΝΑ μπλοκ?

Αίτημα Q051.Το ακόλουθο ερώτημα βοηθά να μάθετε εάν οι χρήστες κατάφεραν να εισαγάγουν στο σύστημα πληροφορίες σχετικά με την κατανάλωση αγαθών για ποσό μεγαλύτερο από το ποσό παραλαβής των αγαθών:

SELECT product_id, SUM(in_sum) AS έσοδα_sum, SUM(out_sum) AS outcome_sum


FROM (SELECT product_id, ποσό*τιμή ως in_sum, 0 ως out_sum
από m_income
ΕΝΩΣΗ ΟΛΩΝ
SELECT product_id, 0 as in_sum, ποσό*τιμή ως out_sum
από m_outcome) AS t
GROUP BY product_id
ΕΧΕΙ ΠΟΣΟ (in_sum)
Αίτημα Q052.Η αρίθμηση των γραμμών που επιστρέφονται από το ερώτημα υλοποιείται με διαφορετικούς τρόπους. Για παράδειγμα, μπορείτε να επαναριθμήσετε τις γραμμές μιας αναφοράς που έχει προετοιμαστεί στο MS Access χρησιμοποιώντας την ίδια την MS Access. Μπορείτε επίσης να επαναριθμήσετε χρησιμοποιώντας γλώσσες προγραμματισμού, για παράδειγμα, VBA ή PHP. Ωστόσο, μερικές φορές χρειάζεται να γίνει στο ίδιο το ερώτημα SQL. Έτσι, το ακόλουθο ερώτημα θα αριθμήσει τις σειρές του πίνακα m_income σύμφωνα με την αύξουσα σειρά των τιμών του πεδίου ID:

SELECT COUNT(*) ως N, b.id, b.product_id, b.amount, b.price


ΑΠΟ m_income a INNER JOIN m_income b ON a.id GROUP BY b.id, b.product_id, b.amount, b.price;

Αίτημα Q053.Εμφανίζονται οι πέντε πρώτες μεταξύ των προϊόντων με βάση το ποσό των πωλήσεων. Η έξοδος των πέντε πρώτων εγγραφών πραγματοποιείται χρησιμοποιώντας την εντολή TOP:

ΕΠΙΛΕΞΤΕ ΚΟΡΥΦΑΙΑ 5, αναγνωριστικό_προϊόντος, άθροισμα(ποσό*τιμή) ΩΣ άθροισμα


ΑΠΟ m_outcome
GROUP BY product_id
ΠΑΡΑΓΓΕΛΙΑ ΚΑΤΑ άθροισμα (ποσό*τιμή) DESC;

Αίτημα Q054.Εμφανίζονται οι πέντε κορυφαίες μεταξύ των προϊόντων κατά το ποσό των πωλήσεων και οι γραμμές αριθμούνται ως αποτέλεσμα:

SELECT COUNT(*) AS N, b.product_id, b.summa


ΑΠΟ


ΑΠΟ m_outcome GROUP BY product_id) ΩΣ α
ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ
(SELECT product_id, άθροισμα(ποσό*τιμή) AS άθροισμα,
summa*10000000+product_id AS id
ΑΠΟ m_αποτέλεσμα ΟΜΑΔΑ ΚΑΤΑ product_id) ΩΣ β
ON a.id>=b.id
ΟΜΑΔΑ ΑΝΑ b.product_id, b.summa
ΕΧΟΝΤΑΣ COUNT(*) ΠΑΡΑΓΓΕΛΙΑ ΚΑΤΑ COUNT(*);

Αίτημα Q055.Το ακόλουθο ερώτημα SQL δείχνει τη χρήση των μαθηματικών συναρτήσεων COS, SIN, TAN, SQRT, ^ και ABS στο MS Access SQL:

SELECT (επιλέξτε πλήθος(*) από m_income) ως N, 3.1415926 ως pi, k,


2*pi*(k-1)/N ως x, COS(x) ως COS_, SIN(x) ως SIN_, TAN(x) ως TAN_,
SQR(x) ως SQRT_, x^3 ως "x^3", ABS(x) ως ABS_
FROM (ΕΠΙΛΟΓΗ COUNT(*) AS k
ΑΠΟ m_income AS INNER JOIN m_income AS b ON a.idGROUP BY b.id) t;

Ερώτημα SQL. Παραδείγματα στο MS Access. ΕΝΗΜΕΡΩΣΗ: 1-10

Αίτημα U001.Το ακόλουθο ερώτημα αλλαγής SQL αυξάνει τις τιμές των ειδών με κωδικό 3 στον πίνακα m_income κατά 10%:

ΕΝΗΜΕΡΩΣΗ m_income SET τιμή = τιμή*1.1


WHERE product_id=3;

Αίτημα U002.Το ακόλουθο ερώτημα ενημέρωσης SQL αυξάνει την ποσότητα όλων των προϊόντων στον πίνακα m_income κατά 22 μονάδες των οποίων τα ονόματα ξεκινούν με τη λέξη "Βούτυρο":

ΕΝΗΜΕΡΩΣΗ m_income SET ποσό = ποσό+22


WHERE product_id IN (SELECT id FROM m_product WHERE τίτλος LIKE "Oil*");

Αίτημα U003.Το ακόλουθο ερώτημα αλλαγής SQL στον πίνακα m_outcome μειώνει τις τιμές όλων των προϊόντων που παράγονται από την OOO Sladkoe κατά 2 τοις εκατό:

ΕΝΗΜΕΡΩΣΗ m_outcome SET τιμή = τιμή*0,98


WHERE product_id IN
(ΕΠΙΛΟΓΗ a.id ΑΠΟ m_product a INNER JOIN m_supplier β
ON a.supplier_id=b.id WHERE b.title="OOO"Сладкое"");. !}