Σχετικά έγγραφα
Ηλεκτρονικοί Υπολογιστές II


DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT

Ηλεκτρονικοί Υπολογιστές II



1 / 150

1 / 105

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Ηλεκτρονικοί Υπολογιστές II

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP.

Ηλεκτρονικοί Υπολογιστές II

Ηλεκτρονικοί Υπολογιστές II

DISTINCT, LIKE, NULL, AND, OR, BETWEEN

Ερωτήματα επιλογής με σύζευξη πινάκων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

1 / 87

1 / 97


ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Τμήμα Πληροφορικής ΑΠΘ

Ηλεκτρονικοί Υπολογιστές II

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

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

Πρόλογος Μέρος Ι Μια βόλτα στις βάσεις δεδομένων Μια βόλτα στις βάσεις δεδομένων...25

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

Σύνολα Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Βάσεις δεδομένων. (8 ο μάθημα) Ηρακλής Βαρλάμης

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) ΤΕΙ ΔυτικήςΜακεδονίας

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής


Εισαγωγή στην πληροφορική

1 / 106

Τμήμα Διοίκησης Επιχειρήσεων

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Ηλεκτρονικοί Υπολογιστές II

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Η SQL ως γλώσσα τροποποίησης Δεδομένων

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

Βάσεις Δεδομένων (Databases)

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

Διαχείριση Πολιτισμικών Δεδομένων

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

Σχεδιασμός Βάσεων Δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Το σχεσιακό μοντέλο βάσεων δεδομένων

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

Τεχνολογία Πολιτισμικού Λογισμικού

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Διάλεξη 07: Σχεσιακό Μοντέλο II (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 3ο Μάθημα: Εισαγωγή στην SQL. Δρ. Κωνσταντίνος Χ.

Ενεργές ΒΔ. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Βάσεις Δεδομένων Ενεργές ΒΔ 1


Εργαστήριο Βάσεων Δεδομένων

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

1. ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΤΗΣ MySQL

ΘΕΜΑΤΑ. Θέμα 1 ο Σύμφωνα με τους παραπάνω πίνακες και τη θέση που έχουν τα ξένα κλειδιά βρείτε τους

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη

Έννοιες Διαχείρισης Βάσεων Δεδομένων και Αρχιτεκτονική

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 7β: SQL (Πρακτική Εξάσκηση 1) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Τεχνολογία Πολιτισμικού Λογισμικού

ΕΝΗΜΕΡΩΣΗ ΔΕΔΟΜΕΝΩΝ. UPDATE products SET prod_fpa=19 WHERE prod_fpa=23; SELECT prod_descr,purchase,purchase_date FROM products WHERE prod_fpa=9;

Βάσεις δεδομένων. (7 ο μάθημα) Ηρακλής Βαρλάμης

Το Μοντέλο των Οντοτήτων Συσχετίσεων Entity Relationship Model. Νικόλαος Ζ. Ζάχαρης

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL

Βάσεις Περιβαλλοντικών Δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 8: SQL (Πρακτική Εξάσκηση 2) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

ΕΠΛ 342 Βάσεις εδοµένων

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11

ΟΝΟΜΑΤΕΠΩΝΥΜΟ : Αντικείμενα: Βάσεις δεδομένων, σχέσεις μεταξύ πινάκων, ερωτήματα, φόρμες και αναφορές.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #6

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση

ΗΓλώσσαSQL. Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων

Βάσεις Δεδομένων. Εργαστήριο ΙV. Τμήμα Πληροφορικής ΑΠΘ

Σύβακας Σταύρος ΠΕ19,MSc. IT ΣΥΒΑΚΑΣ ΣΤΑΥΡΟΣ ΕΡΩΤΗΜΑΤΑ

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005

Εξεταστική Περίοδος Ιουνίου 2004

Περιεχόμενα. Μέρος Ι Εισαγωγή στα συστήματα βάσεων δεδομένων Πρόλογος... 33

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 4 7/02/2012

Transcript:

Οψεις (VIEWS) στην SQL Η εντολή CREATE VIEW Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 55

Περιεχόμενα 1 Εισαγωγικά για τις όψεις 2 Οψεις και συζεύξεις 3 Επιπλέον χρήση των όψεων 4 Ενημέρωση όψεων 2 / 55

Σκοπός του μαθήματος Δημιουργείτε όψεις με βάση ερωτήματα επιλογής SELECT. 3 / 55

Σκοπός του μαθήματος Δημιουργείτε όψεις με βάση ερωτήματα επιλογής SELECT. Χρησιμοποιήσετε την εντολή CREATE VIEW. 4 / 55

Σκοπός του μαθήματος Δημιουργείτε όψεις με βάση ερωτήματα επιλογής SELECT. Χρησιμοποιήσετε την εντολή CREATE VIEW. Χρησιμοποιήσετε όψεις ως πίνακες σε νέα ερωτήματα. 5 / 55

Σκοπός του μαθήματος Δημιουργείτε όψεις με βάση ερωτήματα επιλογής SELECT. Χρησιμοποιήσετε την εντολή CREATE VIEW. Χρησιμοποιήσετε όψεις ως πίνακες σε νέα ερωτήματα. Χρησιμοποιήσετε όψεις σε ερωτήματα σύνοψης. 6 / 55

Σκοπός του μαθήματος Δημιουργείτε όψεις με βάση ερωτήματα επιλογής SELECT. Χρησιμοποιήσετε την εντολή CREATE VIEW. Χρησιμοποιήσετε όψεις ως πίνακες σε νέα ερωτήματα. Χρησιμοποιήσετε όψεις σε ερωτήματα σύνοψης. Δημιουργείτε όψεις για προσαρμοζόμενη αλληλεπίδραση του χρήστη με τη βάση δεδομένων. 7 / 55

Σκοπός του μαθήματος Δημιουργείτε όψεις με βάση ερωτήματα επιλογής SELECT. Χρησιμοποιήσετε την εντολή CREATE VIEW. Χρησιμοποιήσετε όψεις ως πίνακες σε νέα ερωτήματα. Χρησιμοποιήσετε όψεις σε ερωτήματα σύνοψης. Δημιουργείτε όψεις για προσαρμοζόμενη αλληλεπίδραση του χρήστη με τη βάση δεδομένων. Ενημερώνετε τη βάση δεδομένων με χρήση όψεων. 8 / 55

Δημιουργία όψης Η όψη είναι ένα αποθηκευμένο επώνυμο ερώτημα 1 CREATE VIEW ViewName AS 2 SELECT... 1 Οι όψεις δημιουργούνται με την εντολή CREATE VIEW. 2 Οι όψεις πρέπει να έχουν ένα μοναδικό όνομα στη βάση δεδομένων. 3 Μπορούν να οριστούν με βάση οποιοδήποτε έγκυρο ερώτημα SELECT. 9 / 55

Παράδειγμα δημιουργίας/χρήσης μιας όψης Δημιουργία της όψης «Τμήμα 3» 1 CREATE VIEW dep3 AS 2 SELECT * 3 FROM employees 4 WHERE depid = 3; 10 / 55

Παράδειγμα δημιουργίας/χρήσης μιας όψης Δημιουργία της όψης «Τμήμα 3» 1 CREATE VIEW dep3 AS 2 SELECT * 3 FROM employees 4 WHERE depid = 3; Χρήση της dep3 1 SELECT empid, salary 2 FROM dep3 3 WHERE salary > 1300; 4 5 empid salary 6 --------------- 7 412 1320.83 8 543 1321.77 9 801 2312.56 11 / 55

Παράδειγμα δημιουργίας μιας όψης σύνοψης «Πλήθος υπαλλήλων ανά τμήμα» 1 CREATE VIEW depcount AS 2 SELECT depid, COUNT(depid) as nemp 3 FROM employees 4 GROUP BY depid; 12 / 55

Παράδειγμα δημιουργίας μιας όψης σύνοψης «Πλήθος υπαλλήλων ανά τμήμα» 1 CREATE VIEW depcount AS 2 SELECT depid, COUNT(depid) as nemp 3 FROM employees 4 GROUP BY depid; Προβολή των περιεχομένων της όψης depcount 1 SELECT * 2 FROM depcount; 3 depid nemp 4 ------------- 5 1 3 6 2 4 7 3 9 8 4 5 9 5 2 13 / 55

Οψεις και πίνακες Παρατηρήσεις: Η όψη μπορεί να χρησιμοποιηθεί ως πίνακας σε ερωτήματα ή υποερώτημα SELECT. 14 / 55

Οψεις και πίνακες Παρατηρήσεις: Η όψη μπορεί να χρησιμοποιηθεί ως πίνακας σε ερωτήματα ή υποερώτημα SELECT. Το όνομα μιας όψης πρέπει να είναι διαφορετικό από τα ονόματα των πινάκων και άλλων όψεων της βάσης δεδομένων. 15 / 55

Οψεις και πίνακες Παρατηρήσεις: Η όψη μπορεί να χρησιμοποιηθεί ως πίνακας σε ερωτήματα ή υποερώτημα SELECT. Το όνομα μιας όψης πρέπει να είναι διαφορετικό από τα ονόματα των πινάκων και άλλων όψεων της βάσης δεδομένων. Οι πίνακες αντιστοιχούν σε βασικές σχέσεις, οι όψεις αντιστοιχούν σε παράγωγες σχέσεις. 16 / 55

Οψεις και πίνακες Παρατηρήσεις: Η όψη μπορεί να χρησιμοποιηθεί ως πίνακας σε ερωτήματα ή υποερώτημα SELECT. Το όνομα μιας όψης πρέπει να είναι διαφορετικό από τα ονόματα των πινάκων και άλλων όψεων της βάσης δεδομένων. Οι πίνακες αντιστοιχούν σε βασικές σχέσεις, οι όψεις αντιστοιχούν σε παράγωγες σχέσεις. Οι όψεις δεν αποθηκεύουν δεδομένα. 17 / 55

Οψεις και πίνακες Παρατηρήσεις: Η όψη μπορεί να χρησιμοποιηθεί ως πίνακας σε ερωτήματα ή υποερώτημα SELECT. Το όνομα μιας όψης πρέπει να είναι διαφορετικό από τα ονόματα των πινάκων και άλλων όψεων της βάσης δεδομένων. Οι πίνακες αντιστοιχούν σε βασικές σχέσεις, οι όψεις αντιστοιχούν σε παράγωγες σχέσεις. Οι όψεις δεν αποθηκεύουν δεδομένα. Τα δεδομένα αποθηκεύονται σε πίνακες. 18 / 55

Οψεις και πίνακες Παρατηρήσεις: Η όψη μπορεί να χρησιμοποιηθεί ως πίνακας σε ερωτήματα ή υποερώτημα SELECT. Το όνομα μιας όψης πρέπει να είναι διαφορετικό από τα ονόματα των πινάκων και άλλων όψεων της βάσης δεδομένων. Οι πίνακες αντιστοιχούν σε βασικές σχέσεις, οι όψεις αντιστοιχούν σε παράγωγες σχέσεις. Οι όψεις δεν αποθηκεύουν δεδομένα. Τα δεδομένα αποθηκεύονται σε πίνακες. Η διαγραφή μιας όψης δε σημαίνει διαγραφή δεδομένων από τη βάση δεδομένων. 19 / 55

Οψη με περιορισμό σε ένα πίνακα Οψη για τους υπαλλήλους του τμήματος 3 1 CREATE VIEW dep3 AS 2 SELECT * 3 FROM employees 4 WHERE depid = 3; 1 Πρόσβαση στην όψη δεπ3 σημαίνει πρόσβαση μόνο στους υπαλλήλους του τμήματος 3 2 Διαγραφή, τροποποίηση, ή εισαγωγή δεδομένων για τους υπαλλήλους του τμήματος 3 στον πίνακα εμπλοψεες σημαίνει αυτόματη ενημέρωση των περιεχομένων της όψης 20 / 55

Οψη με προβολή πεδίων σε ένα πίνακα Να δημιουργηθεί μια όψη με τους κωδικούς και τα ονοματεπώνυμα όλων των υπαλλήλων 1 CREATE VIEW enames AS 2 SELECT empid, lastname, firstname 3 FROM employees; 1 Πρόσβαση στην όψη enames σημαίνει πρόσβαση σε όλους τους υπαλλήλους αλλά μόνο σε ορισμένες πληροφορίες, πχ όχι στο μισθό salary. 2 Διαγραφή, τροποποίηση, ή εισαγωγή δεδομένων για υπαλλήλους στον πίνακα employees σημαίνει αυτόματη ενημέρωση των περιεχομένων την όψης. 21 / 55

Ορισμός ονομάτων πεδίων όψης Αλλαγή στα ονόματα: 1 CREATE VIEW depcount(d_id, n_emp) AS 2 SELECT depid, COUNT(depid) 3 FROM employees 4 GROUP BY depid; Αν δεν δώσουμε ονόματα, τότε κληρονομούνται από τα ονόματα του πίνακα. Το πλήθος ονομάτων μέσα στις παρενθέσεις και το πλήθος των πεδίων στη φράση SELECT πρέπει να είναι το ίδιο. 22 / 55

Πλεονεκτήματα στη χρήση των όψεων 23 / 55

Πλεονεκτήματα στη χρήση των όψεων 1 Κάθε χρήστης μπορεί να έχει διαφορετική εξουσιοδότηση για το χειρισμό δεδομένων (χρηστικότητα, ασφάλεια). 24 / 55

Πλεονεκτήματα στη χρήση των όψεων 1 Κάθε χρήστης μπορεί να έχει διαφορετική εξουσιοδότηση για το χειρισμό δεδομένων (χρηστικότητα, ασφάλεια). 2 Η χρήση των όψεων στα ερωτήματα μπορεί να απλοποιήσει μερικά σύνθετα ερωτήματα. 25 / 55

Πλεονεκτήματα στη χρήση των όψεων 1 Κάθε χρήστης μπορεί να έχει διαφορετική εξουσιοδότηση για το χειρισμό δεδομένων (χρηστικότητα, ασφάλεια). 2 Η χρήση των όψεων στα ερωτήματα μπορεί να απλοποιήσει μερικά σύνθετα ερωτήματα. 3 Δεν υπάρχει ανάγκη ο κάθε χρήστης να γνωρίζει το πλήρες σχήμα της βάσης δεδομένων. 26 / 55

Πλεονεκτήματα στη χρήση των όψεων 1 Κάθε χρήστης μπορεί να έχει διαφορετική εξουσιοδότηση για το χειρισμό δεδομένων (χρηστικότητα, ασφάλεια). 2 Η χρήση των όψεων στα ερωτήματα μπορεί να απλοποιήσει μερικά σύνθετα ερωτήματα. 3 Δεν υπάρχει ανάγκη ο κάθε χρήστης να γνωρίζει το πλήρες σχήμα της βάσης δεδομένων. 4 Με μικρές μόνο τροποποιήσεις, οι όψεις μπορεί να παραμείνουν αναλλοίωτες, σε πιθανές αλλαγές του σχήματος της βάσης δεδομένων. 27 / 55

Πλεονεκτήματα στη χρήση των όψεων 1 Κάθε χρήστης μπορεί να έχει διαφορετική εξουσιοδότηση για το χειρισμό δεδομένων (χρηστικότητα, ασφάλεια). 2 Η χρήση των όψεων στα ερωτήματα μπορεί να απλοποιήσει μερικά σύνθετα ερωτήματα. 3 Δεν υπάρχει ανάγκη ο κάθε χρήστης να γνωρίζει το πλήρες σχήμα της βάσης δεδομένων. 4 Με μικρές μόνο τροποποιήσεις, οι όψεις μπορεί να παραμείνουν αναλλοίωτες, σε πιθανές αλλαγές του σχήματος της βάσης δεδομένων. 5 Οι όψεις υποστηρίζουν την ακεραιότητα δεδομένων, όπως ακριβώς και οι πίνακες από τους οποίους προέρχονται. 28 / 55

Μειονεκτήματα στη χρήση των όψεων 29 / 55

Μειονεκτήματα στη χρήση των όψεων 1 Το μεγαλύτερο μειονέκτημα στη χρήση όψεων είναι η μικρότερη απόδοση των ερωτημάτων, η μειωμένη ταχύτητα με την οποία εκτελούνται 30 / 55

Μειονεκτήματα στη χρήση των όψεων 1 Το μεγαλύτερο μειονέκτημα στη χρήση όψεων είναι η μικρότερη απόδοση των ερωτημάτων, η μειωμένη ταχύτητα με την οποία εκτελούνται 2 Οι όψεις μπορούν να δεχτούν ενημέρωση (INSERT, DELETE ή UPDATE), αλλά κάτω από περιορισμούς. Πολλές φορές, είναι αδύνατη η ενημέρωση όψεων (Read only iews). 31 / 55

Οψεις (VIEWS) στην SQL Η εντολή CREATE VIEW Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 32 / 55

Περιεχόμενα 1 Εισαγωγικά για τις όψεις 2 Οψεις και συζεύξεις 3 Επιπλέον χρήση των όψεων 4 Ενημέρωση όψεων 33 / 55

Οψη προβολής μετά από σύζευξη πινάκων Ονόματα τμημάτων και υπαλλήλων 1 CREATE VIEW depemps AS 2 SELECT d.depname, e.lastname, e.firstname 3 FROM departments d INNER JOIN employees e 4 ON d.depid=e.depid 5 ORDER BY d.depid ASC, e.lastname ASC; 1 Η όψη παρέχει συνδυασμό πληροφοριών από δύο πίνακες. 2 Ενημέρωση των πινάκων employees ή/και departments, θα έχει αποτέλεσμα την αυτόματη ενημέρωση της όψης depemps. 3 Μεταβολή (UPDATE) της τιμής του μισθού ενός υπαλλήλου δε θα επηρεάσει τα αποτελέσματα της όψης. 4 Μεταβολή (UPDATE) του τμήματος υπαλλήλου θα επηρεάσει τα αποτελέσματα της όψης. 34 / 55

Σύζευξη πίνακα και όψης Να βρεθεί το όνομα του τμήματος με τους περισσότερους υπαλλήλους 1 SELECT depname 2 FROM depcount, departments 3 WHERE depcount.depid = departments.depid 4 AND nemp = ( SELECT MAX(nemp) 5 FROM depcount ); Το ίδιο, αλλά με φυσική σύζευξη 1 SELECT depname 2 FROM depcount NATURAL JOIN departments 3 WHERE nemp = ( SELECT MAX(nemp) 4 FROM depcount ); 35 / 55

Σύγκριση με υποερώτημα στη φράση HAVING Να βρεθεί το όνομα του τμήματος με τους περισσότερους υπαλλήλους 1 SELECT depname 2 FROM depcount NATURAL JOIN departments 3 WHERE nemp = ( SELECT MAX(nemp) 4 FROM depcount ); Με υποερώτημα στη φράση HAVING, χωρίς τη χρήση της όψης 1 SELECT depname 2 FROM departments NATURAL JOIN employees 3 GROUP BY depname 4 HAVING COUNT(*) >= ALL ( SELECT COUNT(depid) 5 FROM employees 6 GROUP BY depid ); 36 / 55

Οψεις (VIEWS) στην SQL Η εντολή CREATE VIEW Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 37 / 55

Περιεχόμενα 1 Εισαγωγικά για τις όψεις 2 Οψεις και συζεύξεις 3 Επιπλέον χρήση των όψεων 4 Ενημέρωση όψεων 38 / 55

Ορισμός όψης με βάση άλλη όψη Δημιουργία της όψης emp3 με βάση τον πίνακα employees 1 CREATE VIEW emp3 AS 2 SELECT empid, lastname, firstname, salary 3 FROM employees 4 WHERE depid = 3; 39 / 55

Ορισμός όψης με βάση άλλη όψη Δημιουργία της όψης emp3 με βάση τον πίνακα employees 1 CREATE VIEW emp3 AS 2 SELECT empid, lastname, firstname, salary 3 FROM employees 4 WHERE depid = 3; Δημιουργία της όψης emp3_s1300 με βάση την όψη emp3 1 CREATE VIEW emp3_s1300 AS 2 SELECT * 3 FROM emp3 4 WHERE salary > 1300; Μια όψη μπορεί να οριστεί με βάση μια άλλη όψη. 40 / 55

Διαγραφή όψης Διαγραφή της όψης viewname 1 DROP VIEW viewname; 41 / 55

Διαγραφή όψης Διαγραφή της όψης viewname 1 DROP VIEW viewname; Διαδοχική διαγραφή της όψης viewname και όσων εξαρτώνται από αυτή 1 DROP VIEW viewname CASCADE; 42 / 55

Διαγραφή όψης Διαγραφή της όψης viewname 1 DROP VIEW viewname; Διαδοχική διαγραφή της όψης viewname και όσων εξαρτώνται από αυτή 1 DROP VIEW viewname CASCADE; Αποφυγή διαδοχική διαγραφής της όψης viewname και όσων εξαρτώνται από αυτή 1 DROP VIEW viewname RESTRICT; 43 / 55

Οψεις (VIEWS) στην SQL Η εντολή CREATE VIEW Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 44 / 55

Περιεχόμενα 1 Εισαγωγικά για τις όψεις 2 Οψεις και συζεύξεις 3 Επιπλέον χρήση των όψεων 4 Ενημέρωση όψεων 45 / 55

Ενημέρωση όψεων 46 / 55

Ενημέρωση όψεων 1 Οι όψεις μπορούν να ενημερωθούν με τις εντολές INSERT, DELETE, UPDATE, όπως και οι πίνακες μιας βάσης δεδομένων. 47 / 55

Ενημέρωση όψεων 1 Οι όψεις μπορούν να ενημερωθούν με τις εντολές INSERT, DELETE, UPDATE, όπως και οι πίνακες μιας βάσης δεδομένων. 2 Ενημέρωση γίνεται σε όψεις που έχουν δημιουργηθεί με βάση ένα μόνο πίνακα, όχι περισσότερους. 48 / 55

Ενημέρωση όψεων 1 Οι όψεις μπορούν να ενημερωθούν με τις εντολές INSERT, DELETE, UPDATE, όπως και οι πίνακες μιας βάσης δεδομένων. 2 Ενημέρωση γίνεται σε όψεις που έχουν δημιουργηθεί με βάση ένα μόνο πίνακα, όχι περισσότερους. 3 Δεν μπορεί να γίνει ενημέρωση μιας όψης που έχει δημιουργηθεί με ερώτημα ομαδοποίησης GROUP BY. 49 / 55

Ενημέρωση όψεων 1 Οι όψεις μπορούν να ενημερωθούν με τις εντολές INSERT, DELETE, UPDATE, όπως και οι πίνακες μιας βάσης δεδομένων. 2 Ενημέρωση γίνεται σε όψεις που έχουν δημιουργηθεί με βάση ένα μόνο πίνακα, όχι περισσότερους. 3 Δεν μπορεί να γίνει ενημέρωση μιας όψης που έχει δημιουργηθεί με ερώτημα ομαδοποίησης GROUP BY. 4 Οι εντολές INSERT, DELETE, UPDATE σε μια όψη υπόκεινται στους ίδιους περιορισμούς ενημέρωσης της βάσης δεδομένων όπως αν εκτελούνταν στους βασικούς πίνακες. 50 / 55

Ενημέρωση όψεων 1 Οι όψεις μπορούν να ενημερωθούν με τις εντολές INSERT, DELETE, UPDATE, όπως και οι πίνακες μιας βάσης δεδομένων. 2 Ενημέρωση γίνεται σε όψεις που έχουν δημιουργηθεί με βάση ένα μόνο πίνακα, όχι περισσότερους. 3 Δεν μπορεί να γίνει ενημέρωση μιας όψης που έχει δημιουργηθεί με ερώτημα ομαδοποίησης GROUP BY. 4 Οι εντολές INSERT, DELETE, UPDATE σε μια όψη υπόκεινται στους ίδιους περιορισμούς ενημέρωσης της βάσης δεδομένων όπως αν εκτελούνταν στους βασικούς πίνακες. 5 Ολες οι πράξεις ενημέρωσης εκτελούνται στην ουσία στους πίνακες που ορίζουν την όψη. 51 / 55

Παράδειγμα ενημέρωσης όψης Αύξηση του μισθού των υπαλλήλων του τμήματος 3 1 UPDATE emp3 2 SET salary = salary + 50 Η ενημέρωση θα γίνει στον πίνακα employees αλλά μόνο στους υπαλλήλους του τμήματος 3. 52 / 55

Παράδειγμα ενημέρωσης όψης Αύξηση του μισθού των υπαλλήλων του τμήματος 3 1 UPDATE emp3 2 SET salary = salary + 50 Η ενημέρωση θα γίνει στον πίνακα employees αλλά μόνο στους υπαλλήλους του τμήματος 3. Ισοδύναμα: Αύξηση του μισθού των υπαλλήλων του τμήματος 3 1 UPDATE employees 2 SET salary = salary + 50 3 WHERE depid = 3; 53 / 55

Περιορισμοί στην ενημέρωσης μιας όψης Αποτυχία εισαγωγής νέου υπαλλήλου στο τμήμα 3 1 INSERT INTO emp3 2 VALUES (980, Κάτου, Αννα, 1200); θα αποτύχει γιατί: 1 Το πεδίο depid του πίνακα employees έχει οριστεί ως NOT NULL και λείπει από τον ορισμό της όψης, οπότε η εισαγωγή δεδομένων στον πίνακα employees μέσω της όψης emp3 θα αποτύχει. 2 Το πεδίο depid του πίνακα employees έχει οριστεί ως ξένο κλειδί με αναφορική ακεραιότητα στον πίνακα departments, πρέπει οπωσδήποτε να δοθεί μια έγκυρη τιμή του. 54 / 55

Σχόλια και ερωτήσεις Σας ευχαριστώ για την προσοχή σας Είμαι στη διάθεσή σας για σχόλια, απορίες και ερωτήσεις 55 / 55