Διάλεξη 18: Προγραμματισμός Βάσης Δεδομένων ΙΙ. Διδάσκων: Παναγιώτης Ανδρέου

Σχετικά έγγραφα
Lecture 18: Internal DB Programming I

Lecture 19: Internal DB Programming II

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

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

Διάλεξη 17: Προγραμματισμός Βάσης Δεδομένων Ι. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 02: Βάσεις Δεδομένων Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου

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

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures):

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

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

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

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

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

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 8: RM II. Relational Model. (Chapter )

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

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

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

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

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

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

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

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

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

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

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

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

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

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

ΕΝΑΥΣΜΑΤΑ ΣΤΗΝ POSTGRES

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

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

Διάλεξη 19: Προγραμματισμός Βάσης Δεδομένων ΙΙΙ. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

Διδάσκων: Παναγιώτης Ανδρέου

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

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

(Μέρος 3:Γλώσσα Ορισµού, Γλώσσα Τροποποίησης, Ενσωµατωµένη SQL) Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

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

Lecture 20: External DB Programming II

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

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

Διάλεξη 13: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) I. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

Βάσεις Δεδομένων Ι Ευρετήρια/Indexes. (...και επιδόσεις ΣΔΒΔ) Views (Όψεις) Φώτης Κόκκορας (MSc/PhD) Τμήμα Τεχνολογίας Πληροφορικής & Τηλεπ/νιών

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Δεδομένων. Βασίλειος Βεσκούκης Ορισμός Βάσης Δεδομένων Δομή Περιορισμοί

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

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

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

10 η Διάλεξη Python Βάσεις δεδομένων στη python

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


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

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

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

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

PostgreSQL. Oracle. Εαρινό Εξάμηνο

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

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

Παράδειγμα Insert Update Delete Alter.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (2)

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

Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΗΥ460) Χειμερινό εξάμηνο 2017

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

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

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

DELETE, UPDATE, INSERT

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

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

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

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

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

Lecture 21: Functional Dependencies and Normalization

DELETE, UPDATE, INSERT.

Lecture 3: Introduction III

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

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

Alternative to Balanced Trees, Comms of the ACM, 33(6), June 1990,

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

PL/SQL. Κώστας Στεφανίδης

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

Βάσεις Δεδομένων. Ενότητα 6: Γλώσσα Structured Query Language -SQL. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

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

Βάσεις Δεδομένων Ι SQL Μέρος 1 ο. Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

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

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

( Boats)) ( Tempsids, bid. sname. Boats. Boats. Boats. (Reserves)/ > Reserves. Interlake' Sailors) ...

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

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

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Κεφάλαιο 6. Περιορισμοί Ακεραιότητας Βάσεων Δεδομένων

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

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

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

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

Transcript:

Διάλεξη 18: Προγραμματισμός Βάσης Δεδομένων ΙΙ Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: Σκανδάλες (Triggers) σε TSQL Ευρετήρια (Indexes) σε TSQL Εισαγωγή στον διαδικαστικό προγραμματισμό σε ΒΔ Διδάσκων: Παναγιώτης Ανδρέου EPL342: Databases Demetris Zeinalipour (University of Cyprus) 1

Σκανδάλες σε SQL (SQL Triggers) Μια Σκανδάλη (Τrigger) ορίζει μια αντίδραση της βάσης δεδομένων σε περίπτωση αλλαγών πλειάδων* (INSERT, DELETE, UPDATE) σε κάποιους προσδιορισμένους πίνακες. ASSERTIONS: απαγορεύουν κάποια κατάσταση Π.χ., o μισθός του υπαλλήλου ΔΕΝ μπορεί να είναι μεγαλύτερος από αυτόν του supervisor του. TRIGGERS: δεν σημαίνει απαραίτητα ότι απαγορεύουν μια κατάσταση, άπλα ορίζουν ακολουθία εντολών που πρέπει να ενεργοποιηθεί όταν ικανοποιηθεί μια συνθήκη π.χ., όταν προστεθούν/αφαιρεθούν λεφτά από τον λογαριασμό κάποιου πελάτη, στείλε email στον πελάτη για να τον ενημερώσεις Το SELECT, TRUNCATE ή BULK INSERT δεν ενεργοποιούν τις σκανδάλες σε TSQL. EPL342: Databases Demetris Zeinalipour (University of Cyprus) 2

Κατηγορίες Σκανδάλων Τα triggers χωρίζονται σε δυο κατηγορίες: DDL Triggers: Ορίζουν την αντίδραση σε δομικές αλλαγές (DROP, ALTER, κτλ). DML Τriggers: Ορίζουν την αντίδραση σε αλλαγές πάνω σε πλειάδες μιας σχέσης ή όψης (INSERT, UPDATE, DELETE). Θα επικεντρωθούμε μόνο στα DML Triggers. Σημειώστε ότι τα Triggers είναι ουσιαστικά «μικρά προγράμματα σε (T)SQL» τα οποία καλούνται ΑΥΤΟΜΑΤΑ μόλις ενεργοποιηθεί η ορισμένη συνθήκη η οποία ισχύει πάνω σε κάποιους πίνακες ή όψεις. Τα triggers ΔΕΝ μπορούμε να τα καλέσουμε (invoke) αυτόνομα (π.χ., με SELECT ή EXEC) EPL342: Databases Demetris Zeinalipour (University of Cyprus) 3

Παράδειγμα Trigger σε TSQL Παράδειγμα σκανδάλης που παράγει μήνυμα λάθους όποτε γίνει εισαγωγή/διαγραφή δεδομένων από τον πίνακα PERSON IF OBJECT_ID ('Reminder1', 'TR') IS NOT NULL DROP TRIGGER Reminder1; Διαγραφή σκανδάλης αν υπάρχει GO CREATE TRIGGER reminder1 ON PERSON AFTER INSERT, UPDATE AS ακολουθούν οι εντολές που πρέπει να εκτελεστούν RAISERROR ('Notify Customer Relations', 16, 1); ROLLBACK TRANSACTION; RETURN GO Severity: 0-18: Specified by User 20-25: FATAL Errors State: 0-255 EPL342: Databases Demetris Zeinalipour (University of Cyprus) 4

Παράδειγμα Trigger σε TSQL Κατά την εισαγωγή/ενημέρωση δεδομένων στον Πίνακα Emp1 επιστρέφεται μήνυμα λάθους διότι ενεργοποιείται η σκανδάλη. EPL342: Databases Demetris Zeinalipour (University of Cyprus) 5

Σύνταξη Σκανδάλης σε TSQL CREATE TRIGGER <trigger name> ON [schema name>.] <table view name> [WITH ENCRYPTION] trigger code is encrypted in DB [EXECUTE AS <CALLER SELF <user>] Default: Caller (of change), SELF: Creator of Trigger, user: {{FOR AFTER INSTEAD OF} <[DELETE] [,] [INSERT] [,] [UPDATE]>} AS <sql statements> FOR AFTER: Αναφέρονται στο ίδιο πράγμα και προστίθεται για να είναι πιο ευανάγνωστος ο κώδικας, π.χ., AFTER DELETE AS SQL Statements IF EXISTS (SELECT.) BEGIN.. END EPL342: Databases Demetris Zeinalipour (University of Cyprus) 6

Προσωρινοί Πίνακες σε Σκανδάλες Οι σκανδάλες χρησιμοποιούν δύο προσωρινούς πίνακες (inserted, deleted) για αναγνώριση επεξεργασία των ενημερώσεων Εισαγωγές: Η πλειάδα (ή πλειάδες) που εισάγονται, καταχωρούνται στον πίνακα inserted Διαγραφή: Η πλειάδα (ή πλειάδες) που διαγράφονται, καταχωρούνται στον πίνακα deleted Ενημερώσεις: Ας υποθέσουμε ότι μία ενημέρωση αποτελείται από μία εισαγωγή και μία διαγραφή. Τότε παρόμοια με τις εισαγωγές και διαγραφές χρησιμοποιούνται και οι δύο πίνακες inserted και deleted Οι πίνακες inserted, deleted είναι προσβάσιμοι μόνο στα πλαίσια της σκανδάλης EPL342: Databases Demetris Zeinalipour (University of Cyprus) 7

Προσωρινοί Πίνακες σε Σκανδάλες (συν.) Παράδειγμα EPL342: Databases Demetris Zeinalipour (University of Cyprus) 8

Πληροφορίες για TRIGGERS Άλλες Χρήσιμες Πληροφορίες για TRIGGERS Προσωρινή Απενεργοποίηση Σκανδάλης ALTER TABLE <table name> <ENABLE DISABLE> TRIGGER <ALL <trigger name>> Οι σκανδάλες μπορεί να καλούνται αναδρομικά μέχρι και 32 επίπεδα. Η εκτέλεση μιας σκανδάλης μπορεί να προκαλέσει την αλυσιδωτή εκτέλεση άλλων σκανδαλών με απρόσμενα αποτέλεσμα θυμηθείτε το ON DELETE CASCADE παράδειγμα το οποίο μπορούσε να σβήσει όλο τον πίνακα των EMPLOYEEs. EPL342: Databases Demetris Zeinalipour (University of Cyprus) 9

Σκανδάλες και Διαδικαστικός Προγραμματισμός Οι Σκανδάλες σε μια βάση δεδομένων μπορεί να γίνουν αρκετά πιο ευφυείς με την χρήση εντολών διαδικαστικού προγραμματισμού. Για παράδειγμα μπορεί να ορίζονται επαναλήψεις, συνθήκες έλεγχου, μεταβλητές, συναρτήσεις και πάρα πολλά άλλα. Αυτές οι δομές προγραμματισμού είναι μέρος επεκτάσεων της SQL (π.χ., TSQL, PL/SQL (Oracle)). Πρακτικά, οι σκανδάλες χρησιμοποιούνται για ελέγχους των δεδομένων ή ενημερώσεις όταν συμβεί κάποιο γεγονός Μερικές φορές είναι ο μόνος τρόπος να υλοποιήσουμε κάποια υπολογιζόμενα χαρακτηριστικά που συσχετίζουν πολλαπλούς πίνακες (π.χ., το ολικό ποσό σε ένα τιμολόγιο) EPL342: Databases Demetris Zeinalipour (University of Cyprus) 10

Σκανδάλες και Διαδικαστικός Προγραμματισμός Επιβολή Σημασιολογικού Κανόνα Ακεραιότητας: Επιβεβαίωση ότι το credit rating του vendor είναι καλό εάν επιχειρήσει να γίνει εισαγωγή στον PurchaseOrderHeader πίνακα CREATE TRIGGER Purchasing.LowCredit ON Purchasing.PurchaseOrderHeader AFTER INSERT ορισμός πότε να εκτελείται το trigger αυτό AS IF EXISTS (SELECT * FROM Purchasing.PurchaseOrderHeader p Πίνακας με αντικείμενα υπο εισαγωγή (temp πίνακας) JOIN inserted AS I ON p.purchaseorderid = i.purchaseorderid JOIN Purchasing.Vendor AS v ON v.businessentityid = p.vendorid WHERE v.creditrating = 5 ) BEGIN RAISERROR ( Vendor''s credit rating is too low to accept new purchases.', 16, 1); ROLLBACK TRANSACTION; RETURN END; EPL342: Databases Demetris Zeinalipour (University of Cyprus) 11

Ευρετήρια (Indexes) σε ΤSQL Τα ευρετήρια (indexes) χρησιμοποιούνται από τους DBA για να αυξήσουν την ταχύτητα των επερωτήσεων Γρήγορη εύρεση κάποιας πλειάδας χωρίς να χρειάζεται να ψάξουμε όλες τις άλλες πλειάδες Χρησιμοποιεί δομές και αλγόριθμους που έχουμε μάθει στο ΕΠΛ231 (binary search, balanaced trees, b trees) Οι επιπρόσθετες δομές που χρησιμοποιούν τα ευρετήρια χρειάζονται επιπρόσθετο χώρο στο δίσκο Δημιουργούνται με βάση μίας ή περισσότερων στηλών και δημιουργούν μία σειρά δεδομένων στην οποία γίνεται η αναζήτηση EPL342: Databases Demetris Zeinalipour (University of Cyprus) 12

Κατηγορίες Ευρετηρίων Clustered Το πιο γρήγορο είδος ευρετηρίου Αλλάζουν την φυσική σειρά αποθήκευσης στα block δεδομένων ώστε να αποθηκεύονται σύμφωνα με το ευρετήριο Mόνο ένα clustered index μπορεί να υπάρχει για ένα πίνακα (π.χ., το PRIMARY KEY) Το επόμενο και προηγούμενο record είναι πιο γρήγορα διαθέσιμα (το πιο πιθανό στο ίδιο data block) γρήγορη ανάκτηση Non clustered Τα δεδομένα είναι αποθηκευμένα σε άλλη φυσική σειρά τα δευτερεύων καθορίζουν μία εναλλακτική λογική σειρά Π.χ., primary key PERSON_ID, secondary index on PERSON_PASSPORT Δεν αλλάζουν την φυσική σειρά αποθήκευσης Μπορούμε να έχουμε πολλά non clustered indexes Τα δημιουργούμε αν χρειάζεται να αυξήσουμε την απόδοση επερωτήσεων Cluster Χρησιμοποιούνται όταν έχουμε πολλούς πίνακες ή πολλές βάσεις Τα ευρετήρια αποθηκεύουν συσχετιζόμενα records σε κοντινά data blocks Αυξάνουν την απόδοση των JOINS EPL342: Databases Demetris Zeinalipour (University of Cyprus) 13

Σύνταξη Ευρετηρίων Επιλεκτικές παράμετροι μόνο CREATE [UNIQUE] [CLUSTERED NONCLUSTERED ] INDEX <index_name> ON <object> (column [ ASC DESC ] [,...n ] ) [ INCLUDE ( column_name [,...n ] ) ] [ WHERE <filter_predicate> ] [ WITH ( <relational_index_option> [,...n ] ) ] Παράδειγμα δημιουργίας Index CREATE NONCLUSTERED INDEX IX_PERSON_PASSPORT ON PERSON (PERSON_PASSPORT); EPL342: Databases Demetris Zeinalipour (University of Cyprus) 14

Διαδικαστικός Προγραμματισμός σε SQL Ενώ η SQL ξεκίνησε ως δηλωτική γλώσσα διατύπωσης επερωτήσεων στη συνέχεια επεκτάθηκε με εντολές DDL και οι σύγχρονες ΒΔ παρέχουν σήμερα και δυνατότητες για διαδικαστικό προγραμματισμό ΜΕΣΑ στην ίδια την βάση. Γενικά, υπάρχουν οι ακόλουθες κατηγορίες: Εσωτερικός Προγραμματισμός: Sprocs, UDFs, Views, Triggers, Assertions, Scripts/Batches, κτλ Εξωτερικός Προγραμματισμός: Μέσω Γλώσσας Προγραμματισμού (Host Language): Embedded SQL, Dynamic SQL, APIs και Διεπαφών Βάσεων (ODBC, JDBC, MS OLEDB, ADO.NET κτλ). EPL342: Databases Demetris Zeinalipour (University of Cyprus) 15

Προγραμματισμός Λειτουργιών μιας DBMS DBMS SProcs UDFs Εξωτερικός Προγραμματισμός (Μέσω Εφαρμογής) Interfaces: JDBC, ODBC, κτλ. Programming Language (π.χ., JAVA, C, C#, ) Web Languages (PHP, Python, ASP, Ruby, Perl) Views Catalog/ Indexes Tables Triggers Εσωτερικός Προγραμματισμός Administration Consoles # SQLCMD 1> SELECT * FROM EMPLOYEE 2> go Εξωτερικός Προγραμματισμός ( ιαδραστικός) EPL342: Databases Demetris Zeinalipour (University of Cyprus) 16

Διαδικαστικός Προγραμματισμός σε SQL Για να μπορέσουμε να προγραμματίσουμε ένα DBMS χρειαζόμαστε τα κατάλληλα εργαλεία: εργαλεία που παρέχουν οι παραδοσιακές γλώσσες διαδικαστικού προγραμματισμού (π.χ., variables, if then else, while, break, continue, try catch) και κάποια επιπρόσθετα εργαλεία που έχουν σχέση με τους πίνακες και τους περιορισμούς (π.χ., cursors, errors) Χρησιμοποιώντας αυτά τα εργαλεία, επεκτείνουμε τις δυνατότητες προγραμματισμού μίας ΒΔ και συνεπώς μπορούμε να μεταφέρουμε λογική της εφαρμογής σε επίπεδο βάσης EPL342: Databases Demetris Zeinalipour (University of Cyprus) 17

Ενδιάμεσοι Πίνακες σε TSQL Οι Τοπικοί Ενδιάμεσοι Πίνακες δημιουργούνται στα πλαίσια μιας σύνδεσης με την βάση (Session) και καταστρέφονται αμέσως μετά. Είναι χρήσιμοι για προσωρινή αποθήκευση ενδιάμεσων αποτελεσμάτων σε προγράμματα TSQL Δημιουργία: CREATE TABLE #tablename ( ) Σημείωση: Ο πίνακας δημιουργείται στην tempdb Εισαγωγή Δεδ.: INSERT INTO #ΤemporaryTable EXEC sp_somestoredprocedure Καθολικοί Ενδιάμεσοι Πίνακες: Eχουν αντίστοιχη λειτουργία με τους Τοπικούς, με την διαφορά ότι σε αυτούς έχουν πρόσβαση όλες οι συνδέσεις με την βάση (sessions). Δημιουργία: CREATE TABLE ##tablename ( ) EPL342: Databases Demetris Zeinalipour (University of Cyprus) 18