Δειγματοληψία δεδομένων στη βάση δεδομένων της Access χρησιμοποιώντας ερωτήματα sql. Μεταφορά βάσης δεδομένων Microsoft Office Access στον Microsoft SQL Server Γράψτε ερωτήματα 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Διακομιστής - Transact-SQL
  • PostgreSQL - PL/pgSQL.

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;

Η 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.

ρήτρα SQL

Περιγραφή

Επιτακτικός

Καθορίζει τα πεδία που περιέχουν τα επιθυμητά δεδομένα.

Καθορίζει τους πίνακες που περιέχουν τα πεδία που καθορίζονται στον όρο SELECT.

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

Καθορίζει τη σειρά ταξινόμησης για τα αποτελέσματα.

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

Μόνο αν υπάρχουν τέτοια πεδία

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

Όροι SQL

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

Όρος SQL

Συγκρίσιμο μέρος του λόγου

Ορισμός

Παράδειγμα

αναγνωριστικό

ουσιαστικό

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

Πελάτες.[PhoneNumber]

χειριστής

ρήμα ή επίρρημα

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

συνεχής

ουσιαστικό

Μια τιμή που δεν αλλάζει, όπως ένας αριθμός ή NULL.

έκφραση

επίθετο

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

>> Αγαθά.[Τιμή]

Βασικοί όροι SQL: SELECT, FROM και WHERE

Η γενική μορφή των δηλώσεων SQL είναι:

ΕΠΙΛΟΓΗ πεδίου_1
ΑΠΟ πίνακα_1
WHERE κριτήριο_1
;

Σημειώσεις:

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

    Κάθε πρόταση SELECT τελειώνει με ένα ερωτηματικό (;). Το ερωτηματικό μπορεί να βρίσκεται είτε στο τέλος της τελευταίας πρότασης είτε σε ξεχωριστή γραμμή στο τέλος της πρότασης SQL.

Παράδειγμα στην Access

Το ακόλουθο παράδειγμα δείχνει πώς μπορεί να μοιάζει μια πρόταση SQL στην Access για ένα απλό ερώτημα επιλογής.

1. ρήτρα SELECT

2. Ρήτρα ΑΠΟ

3. Ρήτρα WHERE

Ας αναλύσουμε το παράδειγμα με προτάσεις για να κατανοήσουμε πώς λειτουργεί η σύνταξη SQL.

ρήτρα SELECT

SELECT , Εταιρεία

Αυτή είναι μια ρήτρα SELECT. Περιέχει μια δήλωση (SELECT) ακολουθούμενη από δύο αναγνωριστικά ("[Διεύθυνση Email]" και "Εταιρεία").

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

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

Σε μια πρόταση SELECT, η ρήτρα SELECT βρίσκεται πάντα πριν από την πρόταση FROM.

Ρήτρα ΑΠΟ

ΑΠΟ Επαφές

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

Η πρόταση FROM δεν καθορίζει τα πεδία προς επιλογή.

ρήτρα WHERE

WHERE City="Σιάτλ"

Αυτή είναι η ρήτρα WHERE. Περιέχει έναν τελεστή (WHERE) ακολουθούμενο από μια έκφραση (City="Rostov").

Μπορείτε να κάνετε πολλά πράγματα με τις ρήτρες SELECT, FROM και WHERE. Για περισσότερες πληροφορίες σχετικά με τον τρόπο χρήσης αυτών των προσφορών, ανατρέξτε στα ακόλουθα άρθρα:

Ταξινόμηση αποτελεσμάτων: ORDER BY

Όπως το Microsoft Excel, η Access σάς επιτρέπει να ταξινομήσετε τα αποτελέσματα ενός ερωτήματος σε έναν πίνακα. Χρησιμοποιώντας τον όρο ORDER BY, μπορείτε επίσης να καθορίσετε πώς θα ταξινομηθούν τα αποτελέσματα κατά την εκτέλεση του ερωτήματος. Εάν χρησιμοποιείται ρήτρα ORDER BY, πρέπει να βρίσκεται στο τέλος της πρότασης SQL.

Η ρήτρα ORDER BY περιέχει μια λίστα πεδίων προς ταξινόμηση, με την ίδια σειρά με την οποία θα εφαρμοστεί η ταξινόμηση.

Ας υποθέσουμε, για παράδειγμα, ότι θέλετε να ταξινομήσετε τα αποτελέσματα πρώτα κατά το πεδίο "Εταιρεία" με φθίνουσα σειρά και, στη συνέχεια, εάν υπάρχουν εγγραφές με την ίδια τιμή στο πεδίο "Εταιρεία", ταξινομήστε τα κατά τη διεύθυνση "E-mail " πεδίο με αύξουσα σειρά. Η ρήτρα ORDER BY θα μοιάζει με αυτό:

ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ ΕΤΑΙΡΕΙΑ DESC,

Σημείωση:Από προεπιλογή, η Access ταξινομεί τις τιμές με αύξουσα σειρά (Α έως Ω, από μικρότερη προς μεγαλύτερη). Για να ταξινομήσετε τις τιμές με φθίνουσα σειρά, πρέπει να καθορίσετε λέξη-κλειδί DESC.

Για περισσότερες πληροφορίες σχετικά με την ρήτρα ORDER BY, ανατρέξτε στην ενότητα ORDER BY clause.

Εργασία με συνοπτικά δεδομένα: ρήτρες GROUP BY και HAVING

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

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

Καθορισμός πεδίων που δεν χρησιμοποιούνται σε μια συγκεντρωτική συνάρτηση: όρος GROUP BY

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

Η ρήτρα GROUP BY πρέπει να ακολουθεί αμέσως την ρήτρα WHERE ή FROM εάν δεν υπάρχει ρήτρα WHERE. Στην ρήτρα GROUP BY, τα πεδία καθορίζονται με την ίδια σειρά όπως στον όρο SELECT.

Ας συνεχίσουμε το προηγούμενο παράδειγμα. Εάν ο όρος SELECT εφαρμόζει τη συνάρτηση συγκεντρωτικών μόνο στο πεδίο [Διεύθυνση Email], τότε ο όρος GROUP BY θα μοιάζει με αυτό:

ΟΜΑΔΑ ΑΝΑ Εταιρία

Για περισσότερες πληροφορίες σχετικά με την ρήτρα GROUP BY, ανατρέξτε στην ενότητα GROUP BY ρήτρα.

Περιορισμός συγκεντρωτικών τιμών με συνθήκες ομαδοποίησης: η ρήτρα HAVING

Εάν θέλετε να καθορίσετε συνθήκες για τον περιορισμό των αποτελεσμάτων, αλλά το πεδίο στο οποίο θέλετε να τις εφαρμόσετε χρησιμοποιείται σε μια συγκεντρωτική συνάρτηση, δεν μπορείτε να χρησιμοποιήσετε μια ρήτρα WHERE. Αντ' αυτού θα πρέπει να χρησιμοποιηθεί η ρήτρα HAVING. Ο όρος HAVING λειτουργεί το ίδιο με τον όρο WHERE, αλλά χρησιμοποιείται για συγκεντρωτικά δεδομένα.

Ας υποθέσουμε, για παράδειγμα, ότι η συνάρτηση AVG (η οποία υπολογίζει τη μέση τιμή) εφαρμόζεται στο πρώτο πεδίο στον όρο SELECT:

SELECT COUNT(), Εταιρεία

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

HAVING COUNT()>1

Σημείωση:Ένα ερώτημα μπορεί να περιλαμβάνει και έναν όρο WHERE και έναν όρο HAVING, με τις προϋποθέσεις για τα πεδία που δεν χρησιμοποιούνται στις συγκεντρωτικές συναρτήσεις που καθορίζονται στον όρο WHERE και οι συνθήκες για τα πεδία που χρησιμοποιούνται στις συναρτήσεις συγκεντρωτικών καθορίζονται στον όρο HAVING .

Για περισσότερες πληροφορίες σχετικά με την ρήτρα HAVING, δείτε την ρήτρα HAVING.

Συνδυασμός αποτελεσμάτων ερωτήματος: Ο χειριστής UNION

Ο τελεστής 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 στο 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.Για να εκφράσετε σύνθετες συνθήκες, χρησιμοποιήστε λογικές πράξειςΚΑΙ (σύνδεση), Ή (διάσπαση) και ΟΧΙ (λογική άρνηση). Ένα παράδειγμα λήψης από τον πίνακα 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 - ελάχιστη τιμή ονομάζονται συναρτήσεις συγκεντρωτικών. Παίρνουν πολλαπλές τιμές και επιστρέφουν μία μόνο τιμή όταν υποβάλλονται σε επεξεργασία. Ένα παράδειγμα υπολογισμού του αθροίσματος του γινόμενου των πεδίων ποσό και τιμή χρησιμοποιώντας τη συνάρτηση συγκεντρωτικού SUM:

ΕΠΙΛΕΞΤΕ ΠΟΣΟ (ποσό*τιμή) 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 (τελεστής υπό όρους) χρησιμοποιείται για την αξιολόγηση μιας λογικής έκφρασης και την εκτέλεση μιας ενέργειας ανάλογα με το αποτέλεσμα (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_income) έως την τρέχουσα ημερομηνία υπολογίζεται χρησιμοποιώντας τη συνάρτηση 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"Сладкое"");. !}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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