Προβολές MySQL: Τρόπος δημιουργίας προβολής από πίνακες με παραδείγματα

Πίνακας περιεχομένων:

Anonim

Τι είναι οι προβολές στο MySQL;

Οι ΠΡΟΒΟΛΕΣ είναι εικονικοί πίνακες που δεν αποθηκεύουν δικά τους δεδομένα αλλά εμφανίζουν δεδομένα που είναι αποθηκευμένα σε άλλους πίνακες. Με άλλα λόγια, το VIEWS δεν είναι τίποτα άλλο παρά τα ερωτήματα SQL Μια προβολή μπορεί να περιέχει όλες ή μερικές σειρές από έναν πίνακα. Μια προβολή MySQL μπορεί να εμφανίσει δεδομένα από έναν πίνακα ή πολλούς πίνακες.

Σύνταξη προβολών MySQL

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

CREATE VIEW `view_name` AS SELECT statement;

ΠΟΥ

  • Το "CREATE VIEW` view_name` " λέει στον διακομιστή MySQL να δημιουργήσει ένα αντικείμενο προβολής στη βάση δεδομένων με το όνομα" view_name`
  • Το "AS SELECT statement" είναι οι δηλώσεις SQL που θα συσκευάζονται στις προβολές MySQL. Μπορεί να είναι μια δήλωση SELECT που μπορεί να περιέχει δεδομένα από έναν πίνακα ή πολλούς πίνακες.

Πώς να δημιουργήσετε προβολές στη MySQL

Ακολουθεί μια διαδικασία βήμα προς βήμα για τη δημιουργία προβολής στη MySQL:

Ας δημιουργήσουμε τώρα την πρώτη μας προβολή χρησιμοποιώντας το "myflixdb" θα δημιουργήσουμε μια απλή προβολή που περιορίζει τις στήλες που εμφανίζονται στον πίνακα μελών.

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

CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;

Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL έναντι του myflixdb και η επέκταση του κόμβου προβολών στην εξερεύνηση βάσης δεδομένων μας δίνει τα ακόλουθα αποτελέσματα.

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

SELECT * FROM `accounts_v_members`;

Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL έναντι του myflixdb μας δίνει τα ακόλουθα αποτελέσματα που εμφανίζονται παρακάτω.

 
membership_number full_names gender
1 Janet Jones Female
2 Janet Smith Jones Female
3 Robert Phil Male
4 Gloria Williams Female
5 Leonard Hofstadter Male
6 Sheldon Cooper Male
7 Rajesh Koothrappali Male
8 Leslie Winkle Male
9 Howard Wolowitz Male

Έχουν επιστραφεί μόνο οι εξουσιοδοτημένες στήλες για το τμήμα λογαριασμών. Άλλες λεπτομέρειες που βρέθηκαν στον πίνακα μελών έχουν κρυφτεί.

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

ΔΕΙΤΕ ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΒΟΛΗΣ `account_v_members`;

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

Συνδέεται και προβάλλει στη MySQL

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

Θα συσκευάσουμε το JOIN που δημιουργήθηκε με πληροφορίες από τρεις (3) πίνακες, δηλαδή μέλη, ταινίες και ενοικιάσεις ταινιών. Παρακάτω είναι το σενάριο που μας βοηθά να το επιτύχουμε.

CREATE VIEW `general_v_movie_rentals` AS SELECT mb.`membership_number`,mb.`full_names`,mo.`title`,mr.`transaction_date`,mr.`return_date` FROM `movierentals` AS mr INNER JOIN `members` AS mb ON mr.`membership_number` = mb.`membership_number` INNER JOIN `movies` AS mo ON mr.`movie_id` = mo.`movie_id`;

Η εκτέλεση των παραπάνω σεναρίων δημιουργεί την προβολή που ονομάζεται general_v_movie_rentals στο myflixdb μας

Ας επιλέξουμε τώρα όλα τα πεδία από έναν πίνακα που ονομάζεται general_v_movie_rentals.

SELECT * FROM `general_v_movie_rentals`;

Η εκτέλεση του παραπάνω σεναρίου στον πάγκο εργασίας MySQL έναντι του myflixdb μας δίνει τα ακόλουθα αποτελέσματα που εμφανίζονται παρακάτω.

 
membership_number full_names title transaction_date return_date
1 Janet Jones Pirates of the Caribean 4 20-06-2012 28-06-2012
1 Janet Jones Forgetting Sarah Marshal 22-06-2012 25-06-2012
3 Robert Phil Forgetting Sarah Marshal 22-06-2012 25-06-2012
2 Janet Smith Jones Forgetting Sarah Marshal 21-06-2012 24-06-2012
3 Robert Phil X-Men 23-06-2012 28-06-2012

Λάβετε υπόψη ότι δεν χρειάστηκε να γράψουμε το σύνθετο ερώτημα JOIN για να λάβουμε πληροφορίες σχετικά με τα μέλη, τις ταινίες και τις λεπτομέρειες ενοικίασης ταινιών. Χρησιμοποιήσαμε απλώς την προβολή σε μια κανονική δήλωση SELECT όπως οποιονδήποτε άλλο συνηθισμένο πίνακα. Η προβολή μπορεί να κληθεί από οπουδήποτε στο σύστημα εφαρμογών που εκτελείται πάνω από το myflixdb.

Απόρριψη προβολών στη MySQL

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

DROP VIEW ` general_v_movie_rentals `;

Γιατί να χρησιμοποιήσετε προβολές;

Μπορεί να θέλετε να χρησιμοποιήσετε προβολές κυρίως για τους ακόλουθους 3 λόγους

  • Τελικά, θα χρησιμοποιήσετε τις γνώσεις σας SQL, για να δημιουργήσετε εφαρμογές, οι οποίες θα χρησιμοποιούν μια βάση δεδομένων για τις απαιτήσεις δεδομένων. Συνιστάται να χρησιμοποιείτε ΠΡΟΒΟΛΕΣ της αρχικής δομής πίνακα στην εφαρμογή σας αντί να χρησιμοποιείτε τους ίδιους τους πίνακες. Αυτό διασφαλίζει ότι όταν κάνετε refactor το DB σας, ο παλιός κώδικας θα βλέπει το αρχικό σχήμα μέσω της προβολής χωρίς να σπάσει την εφαρμογή.
  • Οι ΠΡΟΒΟΛΕΣ αυξάνουν την επαναχρησιμοποίηση. Δεν θα χρειαστεί να δημιουργήσετε πολύπλοκα ερωτήματα που να περιλαμβάνουν επαναλαμβανόμενες συνδέσεις. Όλη η πολυπλοκότητα μετατρέπεται σε μία γραμμή ερωτήματος με χρήση VIEWS. Ένας τέτοιος συμπυκνωμένος κώδικας θα είναι πιο εύκολο να ενσωματωθεί στην εφαρμογή σας. Αυτό θα εξαλείψει τις πιθανότητες πληκτρολόγησης και ο κωδικός σας θα είναι πιο ευανάγνωστος.
  • Η ΠΡΟΒΟΛΗ βοηθά στην ασφάλεια δεδομένων. Μπορείτε να χρησιμοποιήσετε προβολές για να εμφανίσετε μόνο εξουσιοδοτημένες πληροφορίες στους χρήστες και να αποκρύψετε ευαίσθητα δεδομένα, όπως αριθμούς πιστωτικών καρτών.

Περίληψη

  • Οι προβολές είναι εικονικοί πίνακες. δεν περιέχουν τα δεδομένα που επιστρέφονται. Τα δεδομένα αποθηκεύονται στους πίνακες που αναφέρονται στη δήλωση SELECT.
  • Οι προβολές βελτιώνουν την ασφάλεια της βάσης δεδομένων, εμφανίζοντας μόνο τα προοριζόμενα δεδομένα σε εξουσιοδοτημένους χρήστες. Κρύβουν ευαίσθητα δεδομένα.
  • Οι προβολές διευκολύνουν τη ζωή καθώς δεν έχετε γράψει πολύπλοκα ερωτήματα ξανά και ξανά.
  • Είναι δυνατή η χρήση INSERT, UPDATE και DELETE σε ΠΡΟΒΟΛΗ. Αυτές οι λειτουργίες θα αλλάξουν τους υποκείμενους πίνακες του ΠΡΟΒΟΛΗ. Η μόνη σκέψη είναι ότι το VIEW θα πρέπει να περιέχει όλες τις στήλες ΔΕΝ NULL των πινάκων στους οποίους αναφέρεται. Στην ιδανική περίπτωση, δεν πρέπει να χρησιμοποιείτε ΠΡΟΒΟΛΕΣ για ενημέρωση.