Πίνακας περιεχομένων:
Βίντεο: Access Tips Δημιουργία πίνακα σε προβολή σχεδίασης 2024
Μερικές φορές θέλετε να ανακτήσετε συγκεκριμένες πληροφορίες από τον πίνακα CUSTOMER στο SQL. Δεν θέλετε να δείτε όλα - μόνο συγκεκριμένες στήλες και σειρές. Αυτό που χρειάζεστε είναι μια άποψη.
Μια προβολή είναι ένας εικονικός πίνακας. Στις περισσότερες εφαρμογές, μια άποψη δεν έχει ανεξάρτητη φυσική ύπαρξη. Ο ορισμός της προβολής υπάρχει μόνο στα μεταδεδομένα της βάσης δεδομένων, αλλά τα δεδομένα προέρχονται από τον πίνακα ή τους πίνακες από τους οποίους εξάγετε την προβολή. Τα δεδομένα της προβολής δεν αναπαράγονται φυσικά.
Προβολή σε ένα τραπέζι
Εάν οι πληροφορίες που θέλετε υπάρχουν σε ένα μόνο πίνακα, μπορείτε να δημιουργήσετε μια προβολή ενός τραπεζιού των δεδομένων. Για παράδειγμα, ας υποθέσουμε ότι θέλετε να δείτε τα ονόματα και τους αριθμούς τηλεφώνου όλων των πελατών που ζουν στην πολιτεία του New Hampshire. Μπορείτε να δημιουργήσετε μια προβολή από τον πίνακα CUSTOMER που περιέχει μόνο τα δεδομένα που θέλετε. Η ακόλουθη πρόταση SQL δημιουργεί αυτήν την προβολή:
CREATE VIEW NH_CUST ΩΣ ΕΠΙΛΟΓΗ ΠΕΛΑΤΗ. Όνομα, ΠΕΛΑΤΗΣ. LastName, CUSTOMER. Τηλέφωνο ΑΠΟ ΠΕΛΑΤΗ ΠΟΥ ΠΕΛΑΤΗΣΕΙ. Κράτος = 'NH'.
Μπορείτε να ολοκληρώσετε την ίδια εργασία με λιγότερη πληκτρολόγηση εάν η εφαρμογή SQL σας υποθέτει ότι όλες οι αναφορές πίνακα είναι οι ίδιες με εκείνες της ρήτρα FROM. Εάν το σύστημά σας κάνει αυτή την εύλογη υπόθεση προεπιλογής, μπορείτε να μειώσετε τη δήλωση στις ακόλουθες γραμμές:
CREATE VIEW NH_CUST ΣΕ ΕΠΙΛΟΓΗ Όνομα, Επώνυμο, Τηλέφωνο ΑΠΟ ΠΕΛΑΤΗ ΠΟΥ ΚΡΑΤΗΣΕΙ = 'NH';
Αν και η δεύτερη έκδοση είναι πιο εύκολη στην εγγραφή και την ανάγνωση, είναι πιο ευάλωτη σε διαταραχές από τις εντολές ALTER TABLE. Αυτή η διαταραχή δεν αποτελεί πρόβλημα για αυτήν την απλή περίπτωση, η οποία δεν έχει JOIN, αλλά οι προβολές με JOINs είναι πιο ισχυρές όταν χρησιμοποιούν πλήρως πιστοποιημένα ονόματα.
Πολλαπλή προβολή
Τις περισσότερες φορές, πρέπει να τραβήξετε δεδομένα από δύο ή περισσότερους πίνακες για να απαντήσετε στην ερώτησή σας. Ας υποθέσουμε, για παράδειγμα, ότι εργάζεστε για ένα κατάστημα αθλητικών ειδών και θέλετε να στείλετε ένα διαφημιστικό ταχυδρομείο σε όλους τους πελάτες που αγόρασαν εξοπλισμό σκι από τότε που το κατάστημα άνοιξε πέρυσι.
Χρειάζεστε πληροφορίες από τον πίνακα CUSTOMER, τον πίνακα PRODUCT, τον πίνακα INVOICE και τον πίνακα INVOICE_LINE. Μπορείτε να δημιουργήσετε μια πολυδιάστατη προβολή που να δείχνει τα δεδομένα που χρειάζεστε. Κάθε φορά που χρησιμοποιείτε την προβολή, αντικατοπτρίζει τυχόν αλλαγές που εμφανίστηκαν στους υποκείμενους πίνακες από την τελευταία φορά που χρησιμοποιήσατε την προβολή.
Η βάση δεδομένων για αυτό το κατάστημα αθλητικών ειδών περιέχει τέσσερις πίνακες: ΠΕΛΑΤΗ, ΠΡΟΪΟΝ, ΤΙΜΟΛΟΓΙΟ και INVOICE_LINE.
Πίνακας | Στήλη | Τύπος δεδομένων | Περιορισμός |
---|---|---|---|
CUSTOMER | Κωδικός πελάτη | INTEGER | CHAR (9)> CHAR (2) |
CHAR (9)> CHAR (2) | > | ||
CHAR (25) | Περιγραφή | ||
CHAR (9) > CHAR (30) | |||
Κατηγορία | CHAR (9) | ||
VendorID | INTEGER | ||
VendorName | (9, 2) | ||
TotalRemitted | NUMERIC (9, 2) | ||
FormOfPayment | ΜΟΝΑΔΙΚΟ | Κωδικός πελάτη | INTEGER |
InvoiceDate | > CHAR (10) | ||
INVOICE_LINE | Γραμμή | ||
INTEGER | ΔΕΝ NULL | ||
InvoiceNumber | INTEGER | ||
INTEGER | |||
SalePrice | NUMERIC (9, 2) | Παρατηρήστε ότι ορισμένες στήλες περιέχουν τον περιορισμό NOT NULL.Αυτές οι στήλες είναι είτε τα πρωτεύοντα κλειδιά των αντίστοιχων πινάκων είτε οι στήλες που αποφασίζετε ότι | πρέπει να περιέχουν |
μια τιμή. Το πρωτεύον κλειδί ενός πίνακα πρέπει να αναγνωρίζει με μοναδικό τρόπο κάθε σειρά. Για να γίνει αυτό, το πρωτεύον κλειδί πρέπει να περιέχει μη μηδενική τιμή σε κάθε σειρά. | Οι πίνακες σχετίζονται μεταξύ τους μέσω των στηλών που έχουν κοινό. Η ακόλουθη λίστα περιγράφει αυτές τις σχέσεις: | ||
Ο πίνακας CUSTOMER φέρει μια σχέση | one-to-many | ||
στον πίνακα INVOICE. Ένας πελάτης μπορεί να κάνει πολλαπλές αγορές, δημιουργώντας πολλαπλά τιμολόγια. Κάθε τιμολόγιο, ωστόσο, αφορά έναν μόνο πελάτη. | Ο πίνακας INVOICE φέρει μία σχέση προς τον πίνακα INVOICE_LINE. Ένα τιμολόγιο μπορεί να έχει πολλές γραμμές, αλλά κάθε γραμμή εμφανίζεται σε ένα και μόνο ένα τιμολόγιο. | ||
Ο πίνακας PRODUCT φέρει επίσης μία σχέση προς τον πίνακα INVOICE_LINE. Ένα προϊόν μπορεί να εμφανίζεται σε περισσότερες από μία γραμμές σε ένα ή περισσότερα τιμολόγια. Κάθε γραμμή, ωστόσο, ασχολείται με ένα και μόνο ένα προϊόν. | Ο πίνακας CUSTOMER συνδέεται στον πίνακα INVOICE με την κοινή στήλη CustomerID. Ο πίνακας INVOICE συνδέεται στον πίνακα INVOICE_LINE με την κοινή στήλη InvoiceNumber. Ο πίνακας PRODUCT συνδέεται στον πίνακα INVOICE_LINE με την κοινή στήλη ProductID. Αυτοί οι σύνδεσμοι είναι αυτό που κάνει αυτή τη βάση δεδομένων μια | ||
σχεσιακή | βάση δεδομένων. | ||
Για να έχετε πρόσβαση στις πληροφορίες σχετικά με τους πελάτες που αγόρασαν εξοπλισμό σκι, χρειάζεστε FirstName, LastName, Street, City, State και Zipcode από τον πίνακα CUSTOMER. Κατηγορία από τον πίνακα PRODUCT. Τιμολόγιο από τον πίνακα INVOICE. και LineNumber από τον πίνακα INVOICE_LINE. Μπορείτε να δημιουργήσετε την προβολή που θέλετε στα στάδια χρησιμοποιώντας τις ακόλουθες δηλώσεις: | CREATE VIEW SKI_CUST1 AS SELECT Όνομα, Επώνυμο, Οδός, Πόλη, Κράτος, Τ.Κ., Αριθμός Τιμολογίου ΑΠΟ ΤΟ ΤΙΜΟΛΟΓΙΟ ΣΥΝΔΕΔΕΜΕΝΟ ΤΑΥΤΟΤΗΤΑΣ ΧΡΗΣΗΣ (CustomerID); CREATE VIEW SKI_CUST2 AS ΕΠΙΛΕΞΤΕ Όνομα, Επώνυμο, Οδός, Πόλη, Κράτος, Τ.Κ., ΠροϊόνID ΑΠΟ SKI_CUST1 ΣΥΝΔΕΣΗ INVOICE_LINE ΧΡΗΣΗ (InvoiceNumber); CREATE VIEW SKI_CUST3 AS SELECT Όνομα, Επώνυμο, Οδός, Πόλη, Κράτος, Τ.Κ., Κατηγορία ΑΠΟ SKI_CUST2 ΣΥΝΔΕΣΗ ΠΡΟΪΟΝΤΩΝ ΧΡΗΣΗΣ (ProductID); CREATE VIEW SKI_CUST ΩΣ ΕΠΙΛΟΓΗ ΔΙΑΚΡΙΣΗΣ Όνομα, Επώνυμο, Οδός, Πόλη, Κράτος, Τ.Κ. από SKI_CUST3 WHERE CATEGORY = 'Ski'; | Αυτές οι δηλώσεις CREATE VIEW συνδυάζουν δεδομένα από πολλούς πίνακες χρησιμοποιώντας τον χειριστή JOIN. | Ακολουθεί μια ανασκόπηση των τεσσάρων δηλώσεων CREATE VIEW: |
Η πρώτη δήλωση συνδυάζει τις στήλες από τον πίνακα CUSTOMER με μια στήλη του πίνακα INVOICE για να δημιουργήσει την προβολή SKI_CUST1. | Η δεύτερη δήλωση συνδυάζει το SKI_CUST1 με μια στήλη από τον πίνακα INVOICE_LINE για να δημιουργήσει την προβολή SKI_CUST2. | Η τρίτη δήλωση συνδυάζει το SKI_CUST2 με μια στήλη από τον πίνακα PRODUCT για να δημιουργήσει την προβολή SKI_CUST3. | |
Η τέταρτη εντολή φιλτράρει όλες τις σειρές που δεν έχουν κατηγορία σκι. Το αποτέλεσμα είναι μια προβολή (SKI_CUST) που περιέχει τα ονόματα και τις διευθύνσεις όλων των πελατών που αγόρασαν τουλάχιστον ένα προϊόν στην κατηγορία Ski. | Η λέξη κλειδί DISTINCT στην τέταρτη ρήτρα επιλογής CREATE VIEW SELECT εξασφαλίζει ότι έχετε μόνο μία καταχώρηση για κάθε πελάτη, ακόμη και αν ορισμένοι πελάτες πραγματοποίησαν πολλαπλές αγορές αντικειμένων σκι. |