Δημιουργία SQL VIEWS: Επεξήγηση βήμα προς βήμα

Χρησιμοποιούμε SQL ή Structured Query Language για να επικοινωνήσουμε με μια σχεσιακή βάση δεδομένων και να δημιουργήσουμε προβολές SQL.
Τώρα, τι είναι οι προβολές SQL; Είναι εικονικοί πίνακες που συνδυάζουν και αποθηκεύουν δεδομένα από πραγματικούς πίνακες βάσης δεδομένων που δημιουργείτε. Με τη σειρά σας, έχετε ασφαλή και απλοποιημένη πρόσβαση στο σύνολο δεδομένων σας, ενώ αποκρύπτετε τις υποκείμενες δομές και υλοποιήσεις του πίνακα.
Λοιπόν, πώς λειτουργεί αυτό; Γνωρίζετε ήδη ότι τα ερωτήματα SQL χρησιμοποιούνται για τη δημιουργία προβολών SQL. Όταν δημιουργείται η προβολή SQL, αποθηκεύεται το υποκείμενο ερώτημα SQL. Όταν χρησιμοποιείτε ένα ερώτημα SQL για την αναζήτηση δεδομένων από πολλούς πίνακες, το ερώτημα εκτελείται και βοηθά στη λήψη δεδομένων από τους αντίστοιχους πίνακες βάσης δεδομένων. Ομοίως, όταν υποβάλλετε ερώτημα σε μια δημιουργημένη προβολή SQL, το αποθηκευμένο ερώτημα πρώτα ανακτάται και στη συνέχεια εκτελείται.
Πίνακας περιεχομένων
Πώς είναι χρήσιμη η δημιουργία προβολών SQL;
Καθώς οι προβολές SQL υποστηρίζονται από αποθηκευμένα ερωτήματα SQL, βοηθούν στο να γίνει η βάση δεδομένων σας ασφαλής. Επίσης, απλοποιούν πολύπλοκα ερωτήματα και αυξάνουν την απόδοση των ερωτημάτων σας, μεταξύ άλλων πλεονεκτημάτων. Ας δούμε πώς η δημιουργία προβολών SQL μπορεί να είναι επωφελής για τη βάση δεδομένων και τις εφαρμογές σας:
#1. Παρέχει ασφάλεια βάσης δεδομένων
Οι προβολές SQL λειτουργούν ως εικονικοί πίνακες και αποκρύπτουν τις δομές των πραγματικών πινάκων της βάσης δεδομένων. Έτσι, απλώς κοιτάζοντας μια προβολή, δεν είναι δυνατό να γνωρίζουμε πόσοι πίνακες υπάρχουν και ποιες είναι οι διαφορετικές στήλες στον πίνακα. Επιπλέον, μπορείτε να προσθέσετε περιορισμούς ελέγχου πρόσβασης στη βάση δεδομένων σας, έτσι ώστε ένας χρήστης να μπορεί να υποβάλει ερώτημα μόνο στην προβολή και όχι στους πραγματικούς πίνακες.
#2. Απλοποιεί σύνθετα ερωτήματα
Συχνά, τα ερωτήματα SQL εκτείνονται σε πολλούς πίνακες με πολύπλοκες συνθήκες σύνδεσης. Εάν χρησιμοποιείτε συχνά τέτοια σύνθετα ερωτήματα, μπορείτε να αξιοποιήσετε τη δύναμη της δημιουργίας προβολών SQL. Μπορείτε να αποθηκεύσετε το σύνθετο ερώτημά σας στην προβολή SQL. Με αυτό, μπορείτε απλά να υποβάλετε ερώτημα στην προβολή αντί να χρειάζεται να εκτελέσετε ολόκληρο το σύνθετο ερώτημα.
#3. Μετριάζει την Αλλαγή Σχήματος
Εάν αλλάξουν οι υποκείμενες δομές του πίνακα, όπως η προσθήκη ή η αφαίρεση στηλών, τότε οι προβολές σας παραμένουν ανεπηρέαστες. Εάν βασίζεστε στις προβολές SQL για όλα τα ερωτήματά σας, δεν χρειάζεται να ανησυχείτε για την αλλαγή σχήματος. Όντας εικονικοί πίνακες, η προβολή SQL που δημιουργήσατε θα συνεχίσει να λειτουργεί απρόσκοπτα.
#4. Βελτιώνει την απόδοση ερωτημάτων
Όταν δημιουργείτε προβολές SQL, η μηχανή βάσης δεδομένων βελτιστοποιεί το υποκείμενο ερώτημα πριν τις αποθηκεύσει. Ένα αποθηκευμένο ερώτημα εκτελείται πιο γρήγορα από την απευθείας εκτέλεση του ίδιου ερωτήματος. Έτσι, η χρήση προβολών SQL για την υποβολή ερωτημάτων στα δεδομένα σας προσφέρει καλύτερη απόδοση και ταχύτερα αποτελέσματα.
Πώς να δημιουργήσετε προβολές SQL;
Για τη δημιουργία προβολών SQL, μπορείτε να χρησιμοποιήσετε την εντολή CREATE VIEW. Μια προβολή περιέχει μια δήλωση SELECT. Αυτό δίνει το ερώτημα που θα αποθηκευτεί στην προβολή. Η σύνταξη έχει ως εξής:
CREATE VIEW view_name AS SELECT column_1, column_2, column_3... FROM table_name_1, table_name_2 WHERE condition_clause
Ας το καταλάβουμε αυτό χρησιμοποιώντας ένα παράδειγμα. Σκεφτείτε ότι έχετε δημιουργήσει δύο πίνακες τμήματος και υπαλλήλου. Το τμήμα έχει το όνομα του τμήματος και την ταυτότητά του. Αντίστοιχα, ο πίνακας υπαλλήλων περιέχει το όνομα και την ταυτότητα του υπαλλήλου, μαζί με την ταυτότητα του τμήματος στο οποίο ανήκουν. Θα χρησιμοποιήσετε αυτούς τους δύο πίνακες για τη δημιουργία της προβολής SQL.
Δημιουργήστε τους πίνακες της βάσης δεδομένων σας
Department_iddepartment_name1Finance2Technology3BusinessΠίνακας 1: τμήμα
Εάν χρησιμοποιείτε MySQLμπορείτε να δημιουργήσετε αυτόν τον πίνακα χρησιμοποιώντας το ακόλουθο ερώτημα:
CREATE TABLE `department` ( `department_id` int, `department_name` varchar(255), PRIMARY KEY (`department_id`) );
Εισαγάγετε δεδομένα στον πίνακα που δημιουργήσατε χρησιμοποιώντας την παρακάτω SQL:
INSERT INTO department VALUES (1, 'Finance'); INSERT INTO department VALUES (2, 'Technology'); INSERT INTO department VALUES (3, 'Business');
punonjës_idemployee_namedepartment_id100John3101Mary1102Natalya3103Bruce2Πίνακας 2: υπάλληλος
Με τον πίνακα του τμήματος έτοιμο και γεμάτο με δεδομένα, δημιουργήστε τον πίνακα υπαλλήλων χρησιμοποιώντας το παρακάτω ερώτημα MySQL:
CREATE TABLE `employee` ( `employee_id` INT, `employee_name` VARCHAR(255), `department_id` INT, FOREIGN KEY (`department_id`) REFERENCES department(department_id) );
Στη συνέχεια, εισαγάγετε τις εγγραφές εργαζομένων στον πίνακά σας. Λάβετε υπόψη ότι εφόσον η στήλη Department_id έχει μια αναφορά ξένου κλειδιού με τον πίνακα τμήματος, δεν μπορείτε να εισαγάγετε ένα αναγνωριστικό τμήματος που δεν υπάρχει στον άλλο πίνακα.
INSERT INTO employee VALUES (100, 'John', 3); INSERT INTO employee VALUES (101, 'Mary', 1); INSERT INTO employee VALUES (102, 'Natalya', 3); INSERT INTO employee VALUES (103, 'Bruce', 1);
Ερωτήστε τους πίνακες της βάσης δεδομένων σας
Ας χρησιμοποιήσουμε τους πίνακες σε ένα ερώτημα βάσης δεδομένων. Εξετάστε την περίπτωση κατά την οποία πρέπει να κάνετε ερώτημα για τα αναγνωριστικά_εργαζομένου, όνομα_εργαζομένου και όνομα_τμήματος για όλους τους υπαλλήλους. Σε αυτήν την περίπτωση, πρέπει να χρησιμοποιήσετε και τους δύο πίνακες και να τους συνδέσετε χρησιμοποιώντας την κοινή στήλη, η οποία είναι Department_id. Έτσι το ερώτημά σας γίνεται:
SELECT employee_id, employee_name, department_name FROM employee, department WHERE employee.department_id = department.department_id;
Δημιουργήστε την προβολή SQL σας
Τώρα, μπορεί να συμβεί να αναζητάτε συχνά ή να αναφέρετε αυτά τα δεδομένα. Επιπλέον, με την πάροδο του χρόνου, με περισσότερες εγγραφές στους πίνακές σας, ο χρόνος αναζήτησής σας θα αρχίσει να αυξάνεται. Σε ένα τέτοιο σενάριο, μπορείτε να δημιουργήσετε την προβολή SQL που αντιστοιχεί σε αυτό το ερώτημα.
Χρησιμοποιήστε το ακόλουθο ερώτημα για να δημιουργήσετε μια αναλυτική προβολή με το όνομα staff_info:
CREATE VIEW employee_info AS SELECT employee_id, employee_name, department_name FROM employee, department WHERE employee.department_id = department.department_id;
Με αυτήν την προβολή, μπορείτε να υποβάλετε απευθείας το ίδιο ερώτημα. Επομένως, το ερώτημά σας απλοποιείται σε:
SELECT * FROM employee_info;
Η υποβολή ερωτήματος στην προβολή SQL σάς δίνει την ίδια έξοδο με την εκτέλεση του αρχικού σας ερωτήματος. Ωστόσο, το ερώτημά σας είναι πλέον εύκολο να διατηρηθεί. Η προβολή κρύβει την πολυπλοκότητα του ερωτήματός σας χωρίς κανένα συμβιβασμό ως προς το αποτέλεσμα ή την απόδοση.
Πώς να αντικαταστήσετε τις προβολές SQL;
Εάν έχετε μια προβολή με ένα συγκεκριμένο όνομα και θέλετε να την τροποποιήσετε ή να την αντικαταστήσετε, χρησιμοποιήστε την εντολή ΔΗΜΙΟΥΡΓΙΑ Ή ΑΝΤΙΚΑΤΑΣΤΑΣΗ ΠΡΟΒΟΛΗ. Χρησιμοποιώντας αυτό, μπορείτε να τροποποιήσετε τη δήλωση SELECT που χρησιμοποιήθηκε για τη δημιουργία της προβολής. Ως εκ τούτου, η έξοδος προβολής σας αντικαθίσταται ενώ διατηρείται ανέπαφο το όνομα της προβολής. Επιπλέον, δημιουργείτε μια νέα προβολή SQL εάν δεν υπάρχει.
Μπορείτε να αντικαταστήσετε τις προβολές SQL χρησιμοποιώντας την ακόλουθη σύνταξη:
CREATE OR REPLACE VIEW view_name AS SELECT new_column_1, new_column_2, new_column_3 ... FROM new_table_name_1, new_table_name_2 ... WHERE new_condition_clause
Αυτό μπορείς να το καταλάβεις καλύτερα με ένα παράδειγμα. Σκεφτείτε τους πίνακες του τμήματος και των υπαλλήλων. Από αυτά δημιουργείται μια προβολή SQL staff_info, η οποία περιέχει τις στήλες staff_id, staff_name και Department_name.
Λαμβάνοντας υπόψη τις ανησυχίες για την ασφάλεια, μπορεί να θέλετε να αφαιρέσετε το working_id από αυτήν την προβολή. Επιπλέον, θα θέλατε επίσης να αλλάξετε τα ονόματα των στηλών για να αποκρύψετε τις πραγματικές στήλες της βάσης δεδομένων. Μπορείτε να κάνετε αυτές τις αλλαγές στην υπάρχουσα προβολή χρησιμοποιώντας το ακόλουθο ερώτημα SQL:
CREATE OR REPLACE VIEW employee_info AS SELECT employee_name as name, department_name as department FROM employee, department WHERE employee.department_id = department.department_id;
Μόλις αντικατασταθεί η προβολή, θα λάβετε διαφορετικά αποτελέσματα όταν χρησιμοποιείτε το ίδιο ερώτημα που χρησιμοποιούσατε πριν. Για παράδειγμα, στο αποτέλεσμα του ερωτήματος, θα διαπιστώσετε ότι μία από τις στήλες έχει απορριφθεί. Επιπλέον, τα ονόματα στηλών έχουν τροποποιηθεί από όνομα_εργαζομένου και όνομα_τμήματος σε όνομα και τμήμα, αντίστοιχα.
Αξιοποιήστε τη δύναμη της δημιουργίας προβολών SQL
Η δημιουργία προβολών SQL όχι μόνο θα σας προσφέρει απλοποιημένα ερωτήματα και ταχύτερη αναζήτηση δεδομένων, αλλά και ασφάλεια και προστασία από αλλαγές σχήματος. Η δημιουργία προβολών SQL είναι αρκετά απλή. Μπορείτε να λάβετε οποιοδήποτε υπάρχον ερώτημα έχετε και να το μετατρέψετε σε προβολή SQL.
Χρησιμοποιήστε τον παραπάνω οδηγό βήμα προς βήμα για να δημιουργήσετε προβολές SQL και να χρησιμοποιήσετε τα πλεονεκτήματά τους. Με τις προβολές SQL, μπορείτε να κάνετε τις εφαρμογές της βάσης δεδομένων σας απλές και ασφαλείς, αυξάνοντας παράλληλα την απόδοσή τους.
Εάν θέλετε να διαχειριστείτε τον δικό σας διακομιστή SQL, ανατρέξτε στο SQL Server Management Studio (SSMS).