Πτυχιακή Εργασία. Σχεσιακές Βάσεις εδοµένων, η γλώσσα SQL και Αποθηκευµένες ιαδικασίες.

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Πτυχιακή Εργασία. Σχεσιακές Βάσεις εδοµένων, η γλώσσα SQL και Αποθηκευµένες ιαδικασίες."

Transcript

1 Α.Τ.Ε.Ι. Κρήτης Τµήµα Εφαρµοσµένης Πληροφορικής και Πολυµέσων Πτυχιακή Εργασία Θέµα: Σχεσιακές Βάσεις εδοµένων, η γλώσσα SQL και Αποθηκευµένες ιαδικασίες. Εισηγητής: ρ. Αναστάσιος Καµπουρέλης Επιµέλεια : Ευαγγελία Μπαγκέρη Α.Μ. 1153

2 Περιεχόµενα: Σελ.: Κεφάλαιο 1 : Σχεσιακές Βάσεις εδοµένων (Σ.Β..) Τα τέσσερα µοντέλα Ιεραρχικό µοντέλο Μοντέλο ικτύου Σχεσιακό Μοντέλο Μοντέλο βασισµένο σε αντικείµενα Το Σχεσιακό Μοντέλο εδοµένων....6 Κεφάλαιο 2 : Η γλώσσα SQL Η ιστορία της SQL και των Σ.Β οµικές µονάδες της SQL Data Manipulation Language Data Definition Language Data Control Language Κεφάλαιο 3 : Stored Procedures & Triggers...31 Κεφάλαιο 4 : Όρια της γλώσσας SQL και λύσεις µε Stored Procedures Πρόβληµα Πρόβληµα Βιβλιογραφία.49 2

3 Ευχαριστήρια Για αρχή θα ήθελα να ευχαριστήσω τον διδάσκων καθηγητή ρ. Αναστάσιο Καµπουρέλη, πρώτον για την υποµονή του και δεύτερον για την πολύτιµη βοήθεια που µου έδωσε για την ολοκλήρωση της πτυχιακής µου εργασίας. Τέλος θα ευχαριστήσω την οικογένεια µου για την συµπαράσταση και την υποµονή που έδειξε µέχρι την εκπλήρωση της εργασίας! Στοιχεία: Ευαγγελία Μπαγκέρη τηλ.:

4 Κεφάλαιο 1 : Σχεσιακές Βάσεις εδοµένων 1.1 Τα τέσσερα Μοντέλα Το Ιεραρχικό Μοντέλο Χρησιµοποιεί την δοµή του δένδρου. Αποδείχτηκε ότι είναι περιοριστικό στη χρήση γιατί δεν µπορούν όλες οι δοµές των πληροφοριών να µοντελοποιηθούν µε τη δοµή του δένδρου Το Μοντέλο ικτύου Το µοντέλο αυτό χρησιµοποιεί αυθαίρετα γραφήµατα. Αποδείχτηκε ότι είναι σύνθετο µε περίπλοκα διαγράµµατα (µερικές φορές ονοµαζόµενα διαγράµµατα «σπαγγέτι»). 4

5 1.1.3 Το Σχεσιακό Μοντέλο Σ αυτό το µοντέλο η πληροφορία αποθηκεύεται σε πίνακες (σχέσεις). Χρησιµοποιώντας την Σχεσιακή Άλγεβρα (προβολές, ενώσεις κτλ.) µπορούµε να επιτύχουµε όλες τις αναγκαίες συνδέσεις. Το µοντέλο αυτό χρησιµοποιεί την γλώσσα SQL και είναι το βασικότερο µοντέλο για τη δουλειά µας Μοντέλο βασισµένο σε αντικείµενα Αυτό είναι ένα σχετικά καινούριο µοντέλο δοµής. Οι ερευνητές προσπαθούν να ενοποιήσουν την προσέγγιση από την µεριά του αντικειµένου µε την προσέγγιση από την µεριά του πίνακα. 5

6 1.2 Το Σχεσιακό Μοντέλο εδοµένων Ένα σύστηµα διαχείρισης βάσης δεδοµένων (Σ Β ) (database management system (DBMS)) αποτελείται από ένα σύνολο δεδοµένων και προγράµµατα πρόσβασης στα δεδοµένα αυτά. Το σύνολο των δεδοµένων καλείται βάση δεδοµένων (database). Στόχος του Σ Β είναι η εύκολη και γρήγορη χρήση και ανάκτηση των δεδοµένων. Η διαχείριση των δεδοµένων περιλαµβάνει: τον ορισµό δοµών για τη αποθήκευση των δεδοµένων τον ορισµό µεθόδων για τη διαχείριση των δεδοµένων Ο ορισµός της δοµής της βάσης δεδοµένων βασίζεται σε ένα µοντέλο δεδοµένων το οποίο ορίζει τον τρόπο που περιγράφονται τα δεδοµένα, οι σχέσεις τους, η σηµασία τους και οι περιορισµοί πάνω στα δεδοµένα αυτά. Το σχεσιακό µοντέλο (relational model) δεδοµένων παριστάνει δεδοµένα και τις σχέσεις τους ως ένα σύνολο πινάκων. Κάθε πίνακας (table) αποτελείται από στήλες (columns) µε µοναδικά ονόµατα. Μια γραµµή (row) του πίνακα παριστάνει µια σχέση (relationship) ανάµεσα σε ένα σύνολο από τιµές. Οι πίνακες που ακολουθούν θα χρησιµοποιηθούν σε όλη τη διάρκεια της εργασίας και παριστάνουν πελάτες µια τράπεζας (PEL) και τις συναλλαγές τους µε την τράπεζα αυτή (SYN). PEL ID NAME CITY 100 GEORGE ATHENS 101 MARY CHANIA 102 THANOS HERAKLION 103 ELENΗ ATHENS 104 PETER SALONIKA SYN AA EURO ID

7 Τύποι δεδοµένων Τα δεδοµένα κάθε στήλης ενός πίνακα πρέπει να έχουν ένα συγκεκριµένο τύπο. Οι βασικοί τύποι που υποστηρίζονται από την SQL είναι οι παρακάτω: - ΒΙΤ : Ναι ή Όχι - CURRENCY: Τιµή που παριστάνει µε ακρίβεια αριθµούς. - DATETIME: Χρόνος - SINGLE: Αριθµός κινητής υποδιαστολή µονής ακρίβειας - DOUBLE: Αριθµός κινητής υποδιαστολή διπλής ακρίβειας - SHORT: Ακέραιος 2 byte - LONG: Ακέραιος 4 byte - TEXT: Κείµενο µέχρι 255 χαρακτήρες - LONGTEXT: Κείµενο µέχρι 1.2GB - BLOB: binary large object, περιεχόµενα σε οποιαδήποτε µορφή πχ εικόνες Βασικές εντολές επεξεργασίας πινάκων Οι εντολές θα αναλυθούν εκτενέστερα στο δεύτερο κεφάλαιο. Εδώ απλά κάνουµε µια εισαγωγή σε αυτές. ηµιουργία πινάκων: Νέοι πίνακες δηµιουργούνται µε την εντολή CREATE TABLE. CREATE TABLE PEL (ID INTEGER [10], NAME VARCHAR[30], CITY VARCHAR [30]) Αλλαγές σε πίνακες: Η εντολή ALTER TABLE επιτρέπει την προσθήκη νέων στηλών ή τη διαγραφή υπαρχόντων. Η προσθήκη γίνεται µε την εντολή ADD COLUMN και η διαγραφή µε την εντολή DROP COLUMN. ALTER TABLE PEL ADD COLUMN PHONE INTEGER [30] 7

8 Προθήκη στοιχείων Η προσθήκη δεδοµένων σε έναν πίνακα γίνεται µε την εντολή INSERT INTO. INSERT INTO PEL (ID, NAME, CITY) VALUES (105, JOHN, ATHENS ) Επιλογή στοιχείων Από τις πιο βασικές εντολές είναι η SELECT, η οποία µας επιτρέπει απλά να επιλέγουµε δεδοµένα από έναν ή περισσότερους πίνακες ή και µε κάποια κριτήρια. SELECT ID, NAME FROM PEL WHERE CITY = ATHENS Τα πεδία µπορούν να είναι ονόµατα πεδίων ή συναρτήσεις της SQL πάνω σε πεδία. Τέτοιες συναρτήσεις είναι : Avg: Μέσος όρος Count: Μέτρηση Min: Ελάχιστο Max: Μέγιστο Sum: Σύνολο Ο αστερίσκος ως ορισµός πεδίου επιλέγει όλα τα πεδία. Τα κριτήρια αναζήτησης είναι εκφράσεις πάνω στα πεδία. Ορισµένοι βασικοί τελεστές είναι οι: αριθµητικοί τελεστές: + - * / mod σύγκρισης: < <= > >= = <> like λογικοί: and or not Αλλαγή Η αλλαγές στα στοιχεία γίνονται µε την εντολή UPDATE σύµφωνα µε τη σύνταξη: UPDATE PEL SET CITY = PATRA WHERE ID = 4; 8

9 ιαγραφή Η διαγραφή γραµµών ενός πίνακα γίνεται µε την εντολή DELETE: DELETE FROM PEL WHERE CITY = ATHENS Χαρακτηριστικά των Σχέσεων Μια Σχεσιακή Βάση εδοµένων δεν είναι τίποτα περισσότερο από ένα σύνολο από Σχέσεις. Μια σχέση (relation) είναι ένας πίνακας τιµών. Κάθε στήλη στον πίνακα έχει επικεφαλίδα (όνοµα) και ονοµάζεται πεδίο (field). Κάθε γραµµή ονοµάζεται πλειάδα και παριστά τα χαρακτηριστικά µιας οντότητας στο µοντέλο. Το κενό (NULL), χρησιµοποιείται για την αναπαράσταση µιας τιµής στη βάση που είναι µη εφαρµόσιµη (non-applicable) ή άγνωστη (unknown). Εδώ το null δεν χρησιµοποιείται όπως σε µια γλώσσα προγραµµατισµού, για παράδειγµα δεν γίνονται συγκρίσεις ανάµεσα σε δεδοµένα και στο null. Πχ. Η τιµή για τον PHONE_NUMBER για κάποιον που δεν έχει τηλέφωνο. Η τιµή για την ADDRESS κάποιου που δεν έχει προσκοµίσει διεύθυνση. Περιορισµοί οµικοί περιορισµοί Υπάρχουν 3 ειδών περιορισµοί που είναι έµφυτοι στο µοντέλο: 1. Κλειδί (Key) 2. Ακεραιότητα Οντότητας (Entity Integrity) 3. Αναφορική Ακεραιότητα (Referential Integrity) Υπάρχουν επίσης 3 είδη ρητών περιορισµών: 1. Πεδίο τιµών ( Domain) 2. Στηλών (Column) 3. Ορισµένων από το χρήστη (User - Defined) 9

10 Άλλος ρητός περιορισµός είναι και οι Συναρτησιακές Εξαρτήσεις ( Functional Dependences) Περιορισµοί Κλειδιών Στο σχεσιακό µοντέλο ισχύουν τα διαφορετικά κλειδιά, όπως και το µοντέλο E-R (Entity-Relationship). Το κλειδί είναι ιδιότητα του Σχεσιακού Σχήµατος, οπότε ισχύει για όλα τα στιγµιότυπα σχέσεις. 1. Ένα γνώρισµα ενός τύπου Οντοτήτων/Συσχετίσεων για το οποίο κάθε οντότητα/συσχέτιση στο σύνολο πρέπει να έχει µοναδική τιµή είναι ΚΛΕΙ Ι (Key) ή (superkey) 2. Ένα Υποψήφιο Κλειδί (Candidate key) είναι ένα ελάχιστο κλειδί (δηλαδή, κανένα υποσύνολο των γνωρισµάτων του δεν είναι και αυτό κλειδί). 3. Το Κύριο/Πρωτεύον Κλειδί (Primary key) είναι ένα από τα υποψήφια κλειδιά που ορίζεται σαν προσδιοριστής των πλειάδων του πίνακα. Επιλέγεται από τον προγραµµατιστή της β.δ. 4. Ένα Ξένο Κλειδί (Foreign key) είναι ένα πεδίο ή συνδυασµός πεδίων σε έναν πίνακα που παίρνει τιµές από το πεδίο κλειδί ενός άλλου πίνακα. Συσχετίσεις πινάκων Οι συσχετίσεις πινάκων είναι οι συσχετίσεις (relationships) βάση των οποίων δηµιουργούµε συνδέσεις µεταξύ πινάκων. Έχουµε τέσσερα είδη συσχετίσεων: 1 προς πολλά Πολλά προς 1 Πολλά προς πολλά 1 προς 1 10

11 1 - : ένα προς πολλά Η συσχέτιση αυτή επιτρέπει την ένωση ενός στοιχείου µιας οντότητας µε πολλά στοιχεία άλλης οντότητας. Παρόµοιο είναι και το - 1: πολλά προς ένα. Εδώ έχουµε δύο πίνακες, τον Books, µε δύο πεδία, τον κωδικό και τον τίτλο των βιβλίων και τον Customer-book που περιλαµβάνει τον κωδικό και το ονοµατεπώνυµο των πελατών. Πως επιτυγχάνουµε αυτήν τη συσχέτιση στους πίνακες? Στον δεύτερο πίνακα προσθέτω ένα πεδίο όπου θα κρατάει τις τιµές του Code του πρώτου, εκεί θα είναι απλά ξένο κλειδί και θα επιτρέπει τις επαναλήψεις (προσθήκη ευρετηρίου µε διπλότυπα), κάτι που δεν γίνεται στον Books. Σ αυτήν τη συσχέτιση έχουµε Referential Integrity (αναφορική ακεραιότητα όπου στο δεν µπορώ να έχω µεµονωµένα πεδία ενώ στο «1» µπορώ. ) 11

12 - : Πολλά προς πολλά Σαν παράδειγµα συσχέτισης πολλά προς πολλά µπορούµε να θεωρήσουµε µια Β ενός DVD Club. Κάθε πελάτης µπορεί να πάρει πολλά DVD καθώς και το ίδιο DVD µπορεί να δοθεί σε πολλούς πελάτες. Η συσχέτιση πολλά προς πολλά µπορεί να υλοποιηθεί µε τον πίνακα «γέφυρα» - bridge table. Όπως βλέπουµε και στο επόµενο σχήµα, έχουµε τρεις πίνακες : τον PELATISDVD, όπου κρατάει τον κωδικό και το όνοµα των πελατών, τον πίνακα DVD µε πεδία τον κωδικό και τον τίτλο των ταινιών και τον πίνακα Bridge, µε πεδία τους κωδικούς των πελατών και των ταινιών καθώς και πληροφορίες και έναν κωδικό id. Μεταξύ των πινάκων και του πίνακα γέφυρα δηµιουργείται συσχέτιση 1 προς πολλά. Οπότε πετύχαµε συσχέτιση -. Αυτό µπορεί να θεωρηθεί - = (1 - ) + ( - 1). 1 1 : Ένα προς ένα Αυτή η συσχέτιση ποτέ δεν επιτρέπει ενώσεις δύο διαφορετικών στοιχείων της οντότητας. Υπάρχουν δύο περιπτώσεις συσχέτισης

13 - Ίδιο κλειδί: όταν δύο πίνακες έχουν το ίδιο πεδίο ως primary key. Εδώ έχουµε δύο πίνακες, τον Student, µε δύο πεδία, το ΑΜ και το ονοµατεπώνυµο των φοιτητών, και τον Ptyxiaki που περιλαµβάνει το ΑΜ και τον τίτλο της πτυχιακής. Και στους δύο πίνακες δεν επιτρέπονται επαναλήψεις, εφόσον το ΑΜ κάθε φοιτητή δεν µπορεί να δοθεί σε άλλον, καθώς επίσης στον κάθε φοιτητή αντιστοιχεί µια πτυχιακή εργασία. - Different keys: όταν δύο πίνακες έχουν συσχέτιση 1-1 µε διαφορετικά primary keys. Αυτό λύνεται ως ειδική περίπτωση 1- (όπου θα αποκλειστούν οι αριθµοί <2.) 13

14 Εδώ έχουµε δύο πίνακες, τον Pelatis-cars, µε δύο πεδία, τον αριθµό ταυτότητας και το ονοµατεπώνυµο των πελατών, και τον Cars που περιλαµβάνει την πινακίδα και τον τύπο του αυτοκινήτου. Στον δεύτερο πίνακα προσθέτω το πεδίο ΑΤ, που είναι ξένο κλειδί (εφόσον είναι primary key στον πρώτο πίνακα). Για να αποφύγουµε τις επαναλήψεις θα προσθέσουµε στο πεδίο ΑΤ του δεύτερου πίνακα ένα INDEX 1-1. Αυτό το ευρετήριο δεν επιτρέπει διπλότυπα. 14

15 Κεφάλαιο 2 : Η γλώσσα SQL(Structured Query Language) 2.1 Η ιστορία της SQL και των Σχεσιακών Βάσεων εδοµένων Η SQL βασίστηκε σε ιδέες που προτάθηκαν στις αρχές του 1970 από τον ερευνητή Tedd Codd των εργαστηρίων IBM San Josi Research Laboratories. ηµιουργήθηκε µε σκοπό να παρέχει µια ηµι φυσική γλώσσα για το IBM System Relational database system. Αρχικά οι σχεσιακές βάσεις δεδοµένων είχαν πολλούς και πιο αποδοτικούς ανταγωνιστές π.χ. συστήµατα διαχείρισης δεδοµένων τα οποία βασίζονταν σε δικτυακά µοντέλα δεδοµένων. Ωστόσο, όλο και πιο αποδοτικά σχεσιακά συστήµατα άρχισαν να εµφανίζονται στα τέλη του 1980 κι αυτό οδήγησε στην επικράτηση των σχεσιακών βάσεων δεδοµένων και της SQL. ιάλεκτοι της SQL. υστυχώς υπάρχουν πολλές διάλεκτοι της SQL που διαφέρουν ελαφρώς από το ένα σύστηµα στο άλλο. Οι κυριότερες είναι οι τυποποιηµένες ANSI/ISO SQL. Υπήρξαν δύο πρότυπα: το SQL 89 ή SQL1 και το SQL 92 ή SQL2. Οι περισσότερες εφαρµογές προσπαθούν να µείνουν πιστές στην SQL

16 2.2 DML (Data Manipulation Language) DDL (Data Definition Language) DCL (Data Control Language) Η δοµηµένη γλώσσα ερωταποκρίσεων SQL (Structured Query Language, SQL) χρησιµοποιείται για τη διαχείριση των δεδοµένων µιας βάσης δεδοµένων. Η διαχείριση περιλαµβάνει τόσο τη δηµιουργία και µεταβολή των πινάκων της εφαρµογής, όσο και την καταχώρηση και ανάκτηση δεδοµένων µε βάση συγκεκριµένα κριτήρια επιλογής.μια τυπική γλώσσα SQL περιλαµβάνει τις επόµενες δοµικές µονάδες: Γλώσσα ορισµού δεδοµένων (Data Definition Language, DDL): Η γλώσσα αυτή περιλαµβάνει εντολές που µας επιτρέπουν να υλοποιήσουµε πίνακες, σχέσεις ανάµεσα σε πίνακες και γενικά όλη τη δοµή µιας βάσης δεδοµένων. Γλώσσα χειρισµού δεδοµένων (Data Manipulation Language, DML): Η γλώσσα αυτή επιτρέπει τη διαχείριση των δεδοµένων της εφαρµογής, όπως την εισαγωγή, διαγραφή, ανάκτηση και τροποποίηση δεδοµένων. Ορισµός όψεων της βάσης (View Definition): Επιτρέπει τη δηµιουργία όψεων της βάσης δεδοµένων οι οποίες ορίζονται ως εικονικοί πίνακες (virtual tables) οι οποίοι περιέχουν δεδοµένα από ένα ή περισσότερους πίνακες της βάσης. Ορισµός εξουσιοδοτήσεων (Authorization): Επιτρέπει τη δηµιουργία οµάδων χρηστών και την απόδοση διαφορετικών δικαιωµάτων πρόσβασης σε κάθε έναν από αυτούς, προκειµένου η κάθε οµάδα χρηστών, να διαχειρίζεται µόνο τα δικά της δεδοµένα. ιαχείρισης ακεραιότητας (Integrity): Επιτρέπει το λεπτοµερή έλεγχο των δεδοµένων που καταχωρούνται στη βάση, έτσι ώστε να µην παραβιάζονται οι κανόνες ακεραιότητας (integrity constrains) που έχουµε ορίσει και οι οποίοι όταν τηρούνται αποµακρύνουν τον κίνδυνο καταχώρησης ασυνεπών δεδοµένων (inconsistent data). Η γλώσσα διαχείρισης δεδοµένων (Data Control Language, DCL): χειρίζεται τις εξουσιοδοτήσεις των δεδοµένων 16

17 DML Γλώσσα ιαχείρισης εδοµένων Η γλώσσα χειρισµού δεδοµένων (Data Manipulation Language DML), επιτρέπει την διαχείριση των δεδοµένων των πινάκων της βάσης, και πιο συγκεκριµένα, την εισαγωγή, διαγραφή και τροποποίηση των εγγραφών των πινάκων. Επιπλέον, έχουµε την δυνατότητα να ανακτήσουµε από τους πίνακες, δεδοµένα τα οποία πληρούν κάποια κριτήρια. Η πραγµατοποίηση αυτών των διαδικασιών, γίνεται χρησιµοποιώντας τις εντολές INSERT, DELETE, UPDATE και SELECT. Η εντολή SELECT Η δύναµη της SQL είναι η εντολή SELECT. Χρησιµοποιείται για να ανακαλεί δεδοµένα κάνοντας ερωτήµατα στην βάση δεδοµένων, επιλέγοντας γραµµές από έναν πίνακα, που ταιριάζουν µε συγκεκριµένα κριτήρια. Η σύνταξη της SELECT: SELECT <πεδία> FROM <πίνακες> WHERE <κριτήριο> Ένα παράδειγµα, πολύ απλό είναι το επόµενο, χρησιµοποιώντας τους πίνακες µας. PEL ID NAME CITY 100 GEORGE ATHENS 101 MARY CHANIA 102 THANOS HERAKLION 103 ELENΗ ATHENS 104 PETER SALONIKA SYN AA EURO ID

18 SELECT * FROM PEL; Η απάντηση είναι : ID NAME CITY 100 GEORGE ATHENS 101 MARY CHANIA 102 THANOS HERAKLION 103 ELENΗ ATHENS 104 PETER SALONIKA Επιλέγει όλες τις γραµµές του πίνακα PEL. Ο αστερίσκος * µετά το SELECT κατευθύνει την sql να συµπεριλάβει όλες τις στήλες (πεδία) από τον πίνακα PEL. Όπως βλέπουµε αυτό το ερώτηµα (query) αναπαράγει τον ίδιο τον πίνακα. Εάν ξέρουµε όλες τις στήλες του πίνακα µπορούµε απλά να γράψουµε : SELECT ID, NAME, CITY FROM PEL; Σε µια SELECT µπορούµε να ανταλλάξουµε ή να αντιγράψουµε στήλες. SELECT CITY, ID, NAME, CITY, ID FROM PEL; Θα µας δώσει: CITY ID NAME Expr1000 Exprp1001 ATHENS 100 GEORGE ATHENS 100 CHANIA 101 MARY CHANIA 101 HERAKLION 102 THANOS HERAKLION 102 ATHENS 103 ELENΗ ATHENS 103 SALONIKA 104 PETER SALONIKA 104 Τα περίεργα ονόµατα µπορούν να διορθωθούν µε την εντολή ΑS που θα δούµε παρακάτω. Μπορούµε να επιλέξουµε µόνο µια στήλη: SELECT CITY FROM PEL; 18

19 CITY ATHENS CHANIA HERAKLION ATHENS SALONIKA Για να αποφύγουµε διπλές καταχωρίσεις χρησιµοποιούµε την παράµετρο DISTINCT. SELECT DISTINCT CITY FROM PEL; CITY ATHENS CHANIA HERAKLION SALONIKA Υπάρχουν περιπτώσεις ένα ερώτηµα να χρησιµοποιεί έναν ή περισσότερους πίνακες που να έχουν στήλες µε το ίδιο όνοµα. (όπως η στήλη ID στον πίνακα PEL και στον πίνακα SYN). Για να ξεχωρίζουµε τις στήλες µε το ίδιο όνοµα χρησιµοποιούµε την εξής σύνταξη: Πίνακας.Πεδίο δηλαδή PEL.id και SYN.id Κάποιες φορές χρειάζεται να αλλάξουµε το όνοµα της στήλης. Του δίνουµε δηλαδή alias (ψευδώνυµο). Γι αυτό χρησιµοποιούµε την εντολή AS. SELECT CITY AS PelCity, ID, CITY AS CityRepeat FROM PEL; PelCity ID CityRepeat ATHENS 100 ATHENS CHANIA 101 CHANIA HERAKLION 102 HERAKLION ATHENS 103 ATHENS SALONIKA 104 SALONIKA Aliases πινάκων Κάποιες φορές είναι χρήσιµο ή και απαραίτητο να δίνουµε νέο όνοµα στον πίνακα. Στο επόµενο παράδειγµα µετονοµάζουµε τον πίνακα PEL σε r. 19

20 SELECT r.name FROM PEL AS r; Επιλογές υπό συνθήκη η παράµετρος WHERE SELECT * FROM PEL WHERE ID =100; Θα µας εµφανίσει µόνο µια γραµµή: τον πελάτη µε ID = 100 ID NAME CITY 100 GEORGE ATHENS ή χρησιµοποιούµε aliases: SELECT r.name FROM PEL AS r WHERE r.id = 103; Με την παράµετρο WHERE µπορούµε να χρησιµοποιήσουµε: Συγκριτικούς τελεστές : =, >, <, >=, <=, <> (ή!=) Τον τελεστή ΙΝ Το τελεστή BETWEEN Τον τελεστή LIKE Το NULL ή το NOT NULL Τους λογικούς τελεστές : ΝΟΤ, AND, OR Παραδείγµατα: SELECT * FROM PEL WHERE ID <> 103 AND CITY = ATHENS ; SELECT * FROM PEL WHERE ID IN (100,106); το ID IN (100,106) είναι ισότιµο µε ID = 100 OR ID =

21 SELECT * FROM PEL WHERE ID BETWEEN 100 AND 106; το ID BETWEEN 100 AND 106 είναι ισότιµο µε ID >=100 AND ID <=106. SELECT * FROM PEL WHERE NAME LIKE E% ; Θα εµφανίσει µόνο την ELENH. SELECT * FROM PEL WHERE NAME LIKE %a% ; Θα εµφανίσει ονόµατα που περιλαµβάνουν το γράµµα α. ID NAME CITY 101 MARY CHANIA 103 THANOS HERAKLION Επιλέγοντας από δύο ή περισσότερους πίνακες. SELECT * FROM PEL, SYN; θα µας εµφανίσει όλες τις γραµµές. Μαθηµατικά σωστό αλλά χωρίς κανένα νόηµα εδώ. Αν υπάρχουν στήλες µε ίδιο όνοµα σε διαφορετικούς πίνακες τότε χρειαζόµαστε ολόκληρα τα ονόµατα τους(pel.id ή SYN.ID) ή aliases πινάκων. SELECT PEL.ID, PEL.NAME, PEL.CITY, SYN.EURO, SYN.AA FROM PEL, SYN WHERE PEL.ID = SYN.ID 21

22 ID NAME CITY EURO AA 100 GEORGE ATHENS GEORGE ATHENS THANOS HERAKLION Αυτή η εντολή µπορεί να πραγµατοποιηθεί µε ένα INNER JOIN των δυο πινάκων. SELECT PEL.ID, PEL.NAME, PEL.CITY, SYN.EURO, SYN.AA FROM PEL INNER JOIN SYN ON PEL.ID = SYN.ID Μπορούµε να γράψουµε την παραπάνω εντολή µε aliases πινάκων. SELECT p.id, p.name, p.city, s.euro, s.αα FROM PEL AS p INNER JOIN SYN AS s ON p.id = s.id Εκτός από το INNER µπορούµε να χρησιµοποιήσουµε LEFT ή RIGHT για να πάρουµε δυο εξωτερικές ενώσεις. SELECT p.id, p.name, p.city, s.euro, s.aa FROM PEL AS p LEFT JOIN SYN AS s ON p.id = s.id Θα µας εµφανίσει το JOIN των δυο πινάκων καθώς και όλα τα στοιχεία του αριστερού πίνακα (LEFT). ID NAME CITY EURO AA 100 GEORGE ATHENS GEORGE ATHENS THANOS HERAKLION MARY CHANIA 103 ELENH ATHENS 104 PETER SALONIKA 22

23 SELECT * FROM PEL ORDER BY NAME; Ταξινόµηση η παράµετρος ORDER BY ID NAME CITY 103 ELENH ATHENS 100 GEORGE ATHENS 101 MARY CHANIA 104 PETER SALONIKA 102 THANOS HERAKLION Η εντολή ταξινοµεί κατά αύξουσα σειρά (ASC). Εάν θέλουµε να ταξινοµήσουµε κατά φθίνουσα σειρά γράφουµε DESC. SELECT * FROM PEL ORDER BY NAME DESC; Μπορούµε να ταξινοµήσουµε τις γραµµές µε βάση διάφορων στηλών εφαρµόζοντας ASC ή DESC. Παρακάτω είναι ένα πιο περίπλοκο παράδειγµα. Ταξινοµούµε το JOIN των δυο πινάκων µε βάση το πεδίο ΝΑΜΕ (ascending) και µε βάση το πεδίο EURO (descending). SELECT p.id, p.name, p.city, s.euro, s.aa FROM PEL AS p INNER JOIN SYN AS s ON p.id = s.id ORDER BY p.name, s.euro DESC; ID NAME CITY EURO AA 100 GEORGE ATHENS GEORGE ATHENS THANOS HERAKLION

24 Φωλιασµένες SELECT Η πραγµατική δύναµη της SQL είναι η δυνατότητα να χρησιµοποιούµε ερωτήµατα µέσα σε άλλα ερωτήµατα. Στην πράξη βέβαια υπάρχουν και όρια. Υποθέτουµε ότι θέλουµε να εµφανίσουµε τους πελάτες που έχουν τουλάχιστον µια συναλλαγή. Ένας τρόπος θα ήταν να πάρουµε την ένωση των πινάκων, επιλέγοντας µόνο τις στήλες του PEL και µετά χρησιµοποιώντας DISTINCT για να αποφύγουµε διπλότυπα (την εµφάνιση των ονοµάτων δυο φορές). Αυτό είναι ανέφικτο! Η σωστή λύση είναι να εµφανίσουµε µόνο τις γραµµές του PEL όπου το PEL.ID βρίσκεται στο SYN.ID. Ή να εµφανίσουµε εκείνα τα PEL.ID που εµφανίζονται στο αποτέλεσµα της ερώτησης: SELECT ID FROM SYN. Αυτό µπορεί να γραφεί ως εξής: SELECT * FROM PEL AS p WHERE p.id IN (SELECT s.id FROM SYN AS s); ID NAME CITY 100 GEORGE ATHENS 102 THANOS HERAKLION Οι εντολές INSERT, UPDATE και DELETE Μ αυτές τις εντολές µπορούµε να τροποποιήσουµε τους πίνακες µας. - Η εντολή INSERT, εισάγει µια νέα γραµµή (ή και περισσότερες) INSERT INTO SYN VALUES (4,300,103); 24

25 Με αυτή την εντολή εισάγαµε µια νέα γραµµή στον πίνακα SYN. Όµως πρέπει να γνωρίζουµε τις στήλες του SYN και την σειρά τους. Η επόµενη φόρµα είναι πιο χρήσιµη: INSERT INTO PEL (NAME, ID) VALUES ( TASOS, 105) Το πεδίο city είναι εδώ NULL. Εκτός και αν έχουµε δώσει κάποια default τιµή. Μπορούµε να δηµιουργήσουµε µαζικά INSERT χρησιµοποιώντας µέσα SELECT. Υποθέτουµε ότι µια τράπεζα στα Χανιά µας στέλνει τους πελάτες της µε τον πίνακα PEL2. Θέλουµε λοιπόν να τους προσθέσουµε στον PEL. INSERT INTO PEL VALUES (SELECT * FROM PEL2 WHERE CITY= CHANIA ); - Η εντολή UPDATE, ενηµερώνει τα δεδοµένα σε µια ή περισσότερες σειρές. UPDATE SYN SET EURO = EURO * 10 WHERE AA = 3; Η εντολή αλλάζει την 3 η συναλλαγή. Το πεδίο EURO ανέρχεται στις Πρέπει να είµαστε πολύ προσεκτικοί µε την εντολή UPDATE. Σκεφτείτε την εντολή UPDATE PEL SET NAME = MANOLIS ; Αύτη θα άλλαζε όλα τα ονόµατα σε Μανόλης! Πρέπει να σηµειώσουµε την περίεργη συµπεριφορά την παραµέτρου SET. Γράφοντας EURO = EURO * 10 σίγουρα µας θυµίζει γλώσσα προγραµµατισµού (την γλώσσα C για παράδειγµα). Όµως οι αλλαγές δεν εφαρµόζονται όπως στα προγράµµατα. Το όνοµα της µεταβλητής πριν από το = είναι 25

26 καινούρια µεταβλητή. Η µεταβλητή στα δεξιά του = είναι η παλιά. - Η εντολή DELETE, διαγράφει µια η περισσότερες γραµµές. Σίγουρα αυτή η εντολή πρέπει να χρησιµοποιείται µε προσοχή. Γράφοντας: DELETE * FROM PEL WHERE ID = 104; ιαγράφει τον PETER. Όµως αν γράψουµε : DELETE * FROM PEL WHERE ID = 100; Θα διαγράψει τον GEORGE που όµως έχει συναλλαγές µε την τράπεζα και συνδέεται µε τον πίνακα SYN. Συνήθως αυτό δεν γίνεται τόσο εύκολα. Αν όµως επιτρέψουµε CASCADE DELETE, την ώρα που συνδέουµε τους πίνακες, τότε η εντολή µας θα διαγράψει πρώτα τις συναλλαγές του πελάτη από τον πίνακα SYN και µετά τον ίδιο από τον πίνακα PEL. Η εντολή που ακολουθεί DELETE * FROM PEL; ιαγράφει τα περιεχόµενα του πίνακα και όχι τον ίδιο τον πίνακα. Αν θέλουµε να τον διαγράψουµε από την βάση µας θα γράψουµε DROP PEL; Αθροιστικές Συναρτήσεις Σε ένα σχεσιακό σχήµα βάσεων δεδοµένων, υπάρχει η δυνατότητα να εφαρµόσουµε πάνω στα δεδοµένα των πινάκων, ένα σύνολο συναρτήσεων οι οποίες επιστρέφουν κάποιες τιµές. COUNT (*) = επιστρέφει το πλήθος των εγγραφών ενός πίνακα ή το πλήθος κάποιων τιµών 26

27 SELECT COUNT (*) AS HowMany FROM PEL WHERE CITY = ATHENS ; HowMany 2 COUNT (πεδίο) SELECT COUNT (CITY) FROM PEL; Επιστρέφει 4 γιατί µετράει δυο φορές την ATHENS. Χρησιµοποιούµε την παράµετρο DISTINCT για να πάρουµε 3. SELECT COUNT (DISTINCT CITY) FROM PEL; * SUM (πεδίο) = άθροισµα των τιµών σε µη µηδενικές στήλες. * AVG (πεδίο) = µέσος όρος (= SUM/COUNT) των τιµών. SELECT SUM (EURO) AS Total, AVG (EURO) AS Mean FROM SYN WHERE ID = 100; Total Mean 250,00 125,00 * MAX (πεδίο) = η µέγιστη τιµή ενός συνόλου. * MIN (πεδίο) = η ελάχιστη τιµή ενός συνόλου. Αυτές οι συναρτήσεις µπορούν να χρησιµοποιηθούν και σε αλφαριθµητικά δεδοµένα. Η επόµενη εντολή επιλέγει την MARY. SELECT MIN (NAME) AS First FROM PEL; 27

28 Η παράµετρος group by χρησιµοποιέιται για να εφαρµόσουµε τις παραπάνω συναρτήσεις όχι µόνο σε ένα σύνολο από πλειάδες αλλά σε οµάδες από σύνολα πλειάδων. Η παράµετρος having χρησιµοποιείται για να εφαρµόσουµε σε µια συγκεκριµένη οµάδα από πλειάδες. Η συνθήκη του having εφαρµόζεται αφού σχηµατιστούν οι οµάδες και υπολογιστούν οι αθροιστικές συναρτήσεις. Η βασική δοµή και η σειρά των παραµέτρων είναι η εξής: SELECT A 1, A 2,..., A N FROM R 1, R 2,..., R N WHERE GROYP BY HAVING ORDER BY Και ένα µικρό παράδειγµα που συνδυάζει τις παραπάνω παραµέτρους SELECT PEL.NAME, PEL.CITY, SYN.AA FROM PEL, SYN WHERE PEL.ID = SYN.ID GROUP BY PEL.CITY HAVING SYN.EURO > 150 ORDER BY PEL.NAME; 28

29 DDL Γλώσσα Ορισµού εδοµένων Η γλώσσα ορισµού δεδοµένων (Data Definition Language, DDL), επιτρέπει τη διαχείριση πινάκων (tables), σε µια βάση δεδοµένων. Οι πίνακες είναι το δοµικό χαρακτηριστικό µιας σχεσιακής βάσης δεδοµένων, καθώς περιέχουν τα δεδοµένα που καταχωρούνται σε αυτήν. Η διαχείριση πινάκων περιλαµβάνει τις εντολές για τη δηµιουργία και τη διαγραφή πινάκων από τη βάση καθώς και την προσθήκη πεδίων στους πίνακες µετά τη δηµιουργία τους. Οι εντολές που πραγµατοποιούν τις διαδικασίες αυτές είναι οι CREATE TABLE, DROP TABLE και ALTER TABLE. ηµιουργία πινάκων. Η εντολή CREATE CREATE TABLE PEL ( ID NUMBER (3) PRIMARY KEY, NAME VARCHAR (40) NOT NULL, CITY VARCHAR (20) DEFAULT HERAKLION ); CREATE TABLE SYN ( AA NUMBER (4) PRIMARY KEY, EURO NUMBER (10,2) NOT NULL, ID NUMBER (3) NOT NULL, FOREIGN KEY (ID) REFERENCES PEL (ID)); ηµιουργία ευρετηρίων. CREATE INDEX NameIndex ON PEL (NAME); CREATE INDEX CityName ON PEL (CITY, NAME); CREATE INDEX Syn_id ON SYN (ID); 29

30 Η εντολή DELETE Εάν θέλουµε να διαγράψουµε έναν πίνακα DROP TABLE PEL; Η εντολή ALTER Η εντολή αυτή επιτρέπει την τροποποίηση της δοµής του πίνακα µετά τη δηµιουργία του. ALTER TABLE PEL ADD PHONE NUMBER (10); DCL Γλώσσα ιαχείρισης εδοµένων Το τρίτο µέρος της SQL αποτελείται από την Γλώσσα ιαχείρισης εδοµένων (DCL). Η DCL χειρίζεται τις εξουσιοδοτήσεις των δεδοµένων και επιτρέπει στον σχεδιαστή της Β.. να ελέγχει ποιος έχει πρόσβαση να δει ή να διαχειριστεί τα δεδοµένα µέσα στη βάση. Οι δύο κύριες εντολές είναι: GRANT: επιτρέπει σε έναν ή περισσότερους χρήστες να εκτελέσουν µια εφαρµογή ή περισσότερες σε ένα αντικείµενο της βάσης. REVOKE: αφαιρεί ή ελαττώνει τη δυνατότητα ενός χρήστη να εκτελέσει µια εφαρµογή. GRANT SELECT, UPDATE ON my_table TO some_user; 30

31 Κεφάλαιο 3 : Αποθηκευµένες ιαδικασίες (Stored Procedures) & Triggers Μια αποθηκευµένη διαδικασία είναι ένα κοµµάτι κώδικα, σαν τις συναρτήσεις ή µεθόδους που υπάρχουν σε όλες τις γλώσσες προγραµµατισµού. Μπορούν να γραφούν σε διάφορες γλώσσες συµπεριλαµβανοµένων των SQL, C, C++ και Java. Είναι ένα ανεξάρτητο σετ από εκτεταµένες SQL δηλώσεις που βρίσκονται αποθηκευµένες σε µια βάση, σαν µέρος των µεταδεδοµένων της. Οι εφαρµογές µπορούν να αλληλεπιδράσουν µε τις αποθηκευµένες διαδικασίες µε τους εξής τρόπους: Μπορούν να περάσουν παραµέτρους και να λάβουν σαν αποτέλεσµα τιµές από τις αποθηκευµένες διαδικασίες. Μπορούν να καλέσουν µια Α.. απευθείας για εκτελέσει µια αποστολή. Μπορούν να υποκαταστήσουν µια κατάλληλη Α.. για έναν πίνακα ή όψη σε µια δήλωση SELECT. Τα πλεονεκτήµατα της χρήσης Α.. είναι: Οι εφαρµογές µπορούν να µοιράζονται τµήµατα κώδικα. Ένα κοινό κοµµάτι κώδικα SQL γράφεται µια φορά, αποθηκεύεται στην βάση και χρησιµοποιείται από κάθε εφαρµογή που έχει πρόσβαση στη βάση. Σχεδίαση υποµονάδων. Οι Α.. µπορούν να µοιραστούν µεταξύ εφαρµογών, εξαλείφοντας διπλότυπο κώδικα και µειώνοντας το µέγεθος των εφαρµογών. ιατήρηση της απλοποίησης. Κάθε φορά που µια διαδικασία αναβαθµίζεται, οι αλλαγές αυτόµατα εµφανίζονται σε όλες τις εφαρµογές και την χρησιµοποιούν χωρίς να χρειάζεται να την ξανά µεταγλωττίσουν ή ξανά συνδέσουν. Βελτιωµένη απόδοση, ειδικά για πρόσβαση από αποµακρυσµένους πελάτες. Οι Α.. τρέχουν από τον server και όχι τους πελάτες. 31

32 Χρησιµοποιώντας αποθηκευµένες διαδικασίες Υπάρχουν δυο είδη διαδικασιών που µπορεί µια εφαρµογή να καλέσει. - ιαδικασίες τύπου Select, µια εφαρµογή µπορεί να τις χρησιµοποιήσει στη θέση ενός πίνακα ή όψης σε µια δήλωση SELECT. Μια διαδικασία τέτοιου τύπου κυρίως επιστρέφει µια ή περισσότερες τιµές ή κάποιο µήνυµα σφάλµατος. - Εκτελέσιµες διαδικασίες, όπου µια εφαρµογή µπορεί να εκτελέσει απευθείας, µε µια δήλωση εκτέλεσης διαδικασίας. Και οι δυο τύποι ορίζονται µε τη δήλωση CREATE PROCEDURE και έχουν το ίδιο συντακτικό. Η διαφορά βρίσκεται στον τρόπο που η διαδικασία γράφεται και στο πως πρόκειται να χρησιµοποιηθεί. Η διαδικασίες τύπου select πάντα επιστρέφουν µηδέν ή περισσότερες στήλες, έτσι ώστε να εµφανιστεί κάτι σαν πίνακας ή όψη. Οι εκτελέσιµες διαδικασίες είναι απλά ρουτίνες καλούµενες από το πρόγραµµα και επιστρέφουν ένα απλό σετ από τιµές. ιαδικασίες και εκτελέσεις Οι Α.. λειτουργούν µέσα σε ένα περιβάλλον από εκτελέσεις του προγράµµατος που τις χρησιµοποιεί. Εάν µια διαδικασία χρησιµοποιείται σε µια εκτέλεση και αυτή η εκτέλεση ανακαλεστεί, τότε και όλες οι ενέργειες της διαδικασίας θα ανακληθούν επίσης. Ασφάλεια & Α.. Όταν µια εφαρµογή καλέσει µια Α.., το άτοµο που τρέχει την εφαρµογή πρέπει να έχει δικαίωµα εκτέλεσης (EXECUTE privilege) της Α.. Μια επέκταση στη δήλωση GRANT ενεργοποιεί το δικαίωµα στην εντολή EXECUTE και µια επέκταση στη δήλωση REVOKE απενεργοποιεί το δικαίωµα. 32

33 Χρησιµοποιώντας διαδικασίες τύπου SELECT Μια τέτοια διαδικασία χρησιµοποιείται σαν εικονικός πίνακα; ή όψης σε µια δήλωση SELECT και επιστρέφει µηδέν ή περισσότερες στήλες. Τα πλεονεκτήµατα της Α.. αντί για πίνακες ή όψεις είναι: 1. Βρίσκεται τον server 2. Είναι µια ολόκληρη γλώσσα προγραµµατισµού. Επιπλέον: - Μπορούν να δεχτούν εσωτερικές παραµέτρους οι οποίες επηρεάζουν το εξωτερικό αποτέλεσµα. - Μπορούν να περιέχουν δηλώσεις ελέγχου, τοπικές µεταβλητές και δηλώσεις ελέγχου δεδοµένων, προσφέροντας µεγάλη ευελιξία στο χρήστη. Καλώντας διαδικασίες τύπου SELECT Για να χρησιµοποιήσουµε τέτοιου είδους διαδικασίες στη θέση ενός πίνακα ή όψης σε µια εφαρµογή, χρησιµοποιούµε το όνοµα της διαδικασίας όπου θα χρησιµοποιούσαµε το όνοµα του πίνακα ή της όψης. Εκτελέσιµες διαδικασίες Μια τέτοιου είδους διαδικασία καλείται ευθέως από µια εφαρµογή και συχνά εκτελεί µια αποστολή σύνηθες σε εφαρµογές που χρησιµοποιούν την ίδια β.δ. Οι εκτελέσιµες διαδικασίες µπορούν να δεχτούν εσωτερικές µεταβλητές από το καλούµενο πρόγραµµα και µπορούν επιλεκτικά να του επιστρέψουν µια και µοναδική σειρά. Οι παράµετροι περνιούνται στην διαδικασία µέσα σε κόµµατα ακολουθώντας το όνοµα της διαδικασίας. Πρέπει να σηµειώσουµε ότι οι εκτελέσιµες διαδικασίες δεν µπορούν να επιστρέψουν πολλαπλές σειρές. 33

34 ηµιουργώντας ιαδικασίες Μπορούµε να καθορίσουµε µια αποθηκευµένη διαδικασία µε τη δήλωση CREATE PROCEDURE σε isql. Μια Α.. συγκροτείται από την επικεφαλίδα και το σώµα. Η επικεφαλίδα περιλαµβάνει: * Το όνοµα της Α.. το οποίο πρέπει να είναι µοναδικό µεταξύ των ονοµάτων της διαδικασίας, των όψεων και των πινάκων µέσα στη β.δ. * Μια προαιρετική λίστα εισαγόµενων µεταβλητών και τους τύπους τους, όπου η διαδικασία λαµβάνει από το καλούµενο πρόγραµµα. * Τέλος, αν η διαδικασία επιστρέφει µεταβλητές, µετά από τη δήλωση RETURNS ακολουθεί µια λίστα από τις εξαγόµενες µεταβλητές και τους τύπους τους. Το σώµα της διαδικασίας περιλαµβάνει: Μια προαιρετική λίστα µεταβλητών µε τους τύπους τους. Ένα τµήµα από δηλώσεις σε Interbase και trigger language µεταξύ των λέξεων BEGIN και END. Ένα τµήµα µπορεί να συµπεριλάβει και άλλα τµήµατα έτσι ώστε να υπάρχουν πολλά επίπεδα ενσωµάτωσης. 34

35 Σύνταξη της CREATE PROCEDURE CREATE PROCEDURE name [(param datatype [, param datatype ])] [RETURNS (param datatype [, param datatype ])] AS <procedure_body>; <procedure_body> = [<variable_declaration_list>] <block> <variable_declaration_list> = DECLARE VARIABLE var datatype; [DECLARE VARIABLE var datatype; ] <block> = BEGIN <compound_statement> [<compound_statement> ] END Κι ένα µικρό παράδειγµα το οποίο αθροίζει αριθµούς από το 1 έως την παράµετρο i που δίνουµε ως εισαγόµενη µεταβλητή. CREATE PROCEDURE SUM_INT (I INTEGER) RETURNS (S INTEGER) AS BEGIN s = 0; WHILE (i > 0) DO BEGIN s = s + i; i = i - 1; END END 35

36 ιαδικασίες & Trigger Language H InterBase διαδικασία και η trigger language είναι µια ολοκληρωµένη γλώσσα προγραµµατισµού για αποθηκευµένες διαδικασίες και για τα triggers. Συµπεριλαµβάνει - SQL δηλώσεις διαχείρισης δεδοµένων: INSERT, UPDATE, DELETE και απλό SELECT. - SQL συναρτήσεις και εκφράσεις. - Ισχυρές επεκτάσεις σε SQL, συµπεριλαµβανοµένου δηλώσεων εκχώρησης, ελέγχου ροής, πλαισίου µεταβλητών, εξαιρέσεων και error handling. 36

37 4.1 Πρόβληµα 1 : Κεφάλαιο 4 : Όρια της γλώσσας SQL και λύσεις µε Stored Procedures Έστω ότι έχουµε το παρακάτω πρόβληµα. Στο Τ.Ε.Ι. υπάρχουν πολλά µαθήµατα τα οποία εξαρτώνται από άλλα µαθήµατα, τα λεγόµενα αλυσίδες. Υποθέτουµε ότι έχουµε τα επόµενα πέντε µαθήµατα: 1. EP (Εισαγωγή στην Πληροφορική) 2. PR (Προγραµµατισµός) 3. DB (Βάσεις εδοµένων) 4. DOM ( οµές εδοµένων και Αλγόριθµοι) 5. JAVA (Προγραµµατισµός στην JAVA) Υποθέτουµε πάλι ότι έχουµε τις εξής εξαρτήσεις: EP PR DOM JAVA EP DB ηλαδή κάποιος φοιτητής για να παρακολουθήσει τη JAVA θα πρέπει πρώτα να έχει επιτύχει στα τρία προηγούµενα. Καθώς επίσης για να παρακολουθήσει τις Βάσεις εδοµένων θα πρέπει να επιτύχει στην Πληροφορική. Σηµ.: εν υπάρχουν τέτοιες αλυσίδες στο Τ.Ε.Ι. Μπορούµε να περιγράψουµε το πρόβληµα µας σε έναν πίνακα, έστω ονόµατι MATH, όπως ακολουθεί: id Title pro 1 EP 0 2 PR 1 3 DB 1 4 DOM 2 5 JAVA 4 37

38 Αποτελείται από τρεις στήλες. Τον κωδικό του µαθήµατος, τον τίτλο του και µια στήλη µε τον κωδικό του προαπαιτούµενου µαθήµατος του. Για απλότητα θα υποθέσουµε ότι κάθε µάθηµα εξαρτάται από ένα µάθηµα κάθε φορά. Η τιµή 0 στην στήλη pro σηµαίνει ότι δεν έχει καµία εξάρτηση το συγκεκριµένο µάθηµα από άλλο. Να γραφτεί µια ερώτηση σε SQL η οποία, για δοσµένο id, να εκτυπώνει όλη την αλυσίδα των εξαρτήσεων. ηλαδή όλες τις αλυσίδες ενός µαθήµατος. Για παράδειγµα, η αλυσίδα της JAVA (id=5) θα είναι : JAVA, DOM, PR, EP. Πώς όµως θα γράψουµε µια τέτοια ερώτηση? Για να πάρουµε ως αποτέλεσµα την JAVA απλά γράφουµε: SELECT * FROM MATH WHERE id = 5; Για να πάρουµε την DOM (σαν προαπαιτούµενο της JAVA) απλά γράφουµε: SELECT * FROM MATH WHERE id in (SELECT pro FROM MATH WHERE id = 5); Για να εκτυπώσουµε τον PR γράφουµε: SELECT * FROM MATH WHERE id in (SELECT pro FROM MATH WHERE id in (SELECT pro FROM MATH WHERE id = 5)); 38

39 Για να εκτυπώσουµε την ΕΡ γράφουµε: SELECT * FROM MATH WHERE id in(select pro FROM MATH WHERE id in(select pro FROM MATH WHERE id in (SELECT pro FROM MATH WHERE id=5); Μπορούµε να χρησιµοποιήσουµε την UNION για να επιλέξουµε όλα τα αποτελέσµατα: SELECT * FROM MATH WHERE id = 5 UNION SELECT * FROM MATH WHERE id in (SELECT pro FROM MATH WHERE id = 5) UNION SELECT * FROM MATH WHERE id in (SELECT pro FROM MATH WHERE id in (SELECT pro FROM MATH WHERE id = 5)); UNION SELECT * FROM MATH WHERE id in(select pro FROM MATH WHERE id in(select pro FROM MATH WHERE id in (SELECT pro FROM MATH WHERE id=5); 39

40 Βλέπουµε όµως ότι όλο αυτό εξελίσσεται σε ένα µεγάλο κοµµάτι κώδικα και ότι λειτουργεί για ένα δοσµένο βάθος της αλυσίδας. Η πρώτη ερώτηση έχει βάθος = 0 (η ίδια η JAVA). Η δεύτερη έχει βάθος 1 (DOM), η τρίτη βάθος 2 (PR) κ.τ.λ. εν µπορούµε να γράψουµε ένα ερώτηµα το οποίο είναι ανεξάρτητο του βάθους. Τώρα, µπορεί κάποιος να επιχειρηµατολογήσει λέγοντας ότι στο ΤΕΙ έχουµε µόνο 8 εξάµηνα, έτσι κάθε αλυσίδα θα έχει βάθος µέχρι το πολύ 8 και συνεπώς µπορούµε να γράψουµε ένα τέτοιο (τεράστιο) ερώτηµα! Να σηµειώσουµε όµως πως παρόµοιες αλυσίδες υπάρχουν και σε πολλές άλλες περιπτώσεις όπου δεν µπορούµε να προβλέψουµε το βάθος. Για παράδειγµα στα forum διάφορων ιστοσελίδων όπου οι χρήστες απαντούν στα µηνύµατα άλλων χρηστών, άλλοι απαντάν στις απαντήσεις κ.ο.κ. Εκεί δεν υπάρχει δυνατότητα πρόβλεψης. Μπορεί επίσης κάποιος να υποθέσει ότι ένα τέτοιο ερώτηµα µπορεί να γραφτεί µε άλλα SLQ εργαλεία, όπως το JOIN, GROUP και άλλα Όµως, όχι! Το παραπάνω πρόβληµα είναι ειδική περίπτωση προβλήµατος Μεταβατικής Ολοκλήρωσης (Transitive Closure TC). Και κάθε TC δεν µπορεί να υπολογιστεί µε SQL γιατί είναι µαθηµατικό θεώρηµα. 40

41 Εάν έχουµε στοιχειώδης γνώσεις σε γλώσσες προγραµµατισµού, τότε η λύση είναι πολύ απλή! Είναι µόνο µια απλή επανάληψη while. Παρακάτω θα παρουσιάσουµε µια λύση σε γλώσσα C. Για απλότητα θα χρησιµοποιήσω δυο παράλληλους πίνακες, τον title και τον pro, για να κρατάω τα δεδοµένα. Υποθέτω λοιπόν ότι: title[1] = "EP"; pro[1] = 0; title[2] = "PR"; pro[2] = 1; title[3] = "DB"; pro[3] = 1; title[4] = "DOM"; pro[4] = 2; title[5] = "JAVA"; pro[5] = 4; main() { int id; printf("give id -> "); scanf( "%d", &id ); } while (id>0) { printf( "lecture = %s \n", title[id] ); id = pro[id]; // για να πάρουµε το επόµενο pro } Όπως βλέπουµε το παραπάνω πρόβληµα είναι πολύ απλό. Και λειτουργεί για οποιοδήποτε βάθος αλυσίδας. Συµπέρασµα: η SQL έχει προβλήµατα γιατί δεν είναι γλώσσα προγραµµατισµού! Στα περισσότερα σηµερινά συστήµατα βάσεων δεδοµένων RDBMS υπάρχουν προεκτάσεις της SQL, καλούµενες Αποθηκευµένες ιαδικασίες (Stored Procedures) και Triggers, τα οποία είναι γλώσσες προγραµµατισµού (µε µεταβλητές, επαναλήψεις κτλ.) Σαν παράδειγµα θα παραθέσουµε µια λύση σε FireBird χρησιµοποιώντας µια Stored Procedure ονόµατι ALYSIDA. 41

42 CREATE PROCEDURE ALYSIDA (CID INTEGER) RETURNS (ID INTEGER, TITLE VARCHAR(30)) AS DECLARE VARIABLE PRO INTEGER; BEGIN WHILE (CID>0) DO BEGIN END END FOR SELECT ID, TIT, PRO FROM MATH WHERE ID = CID INTO :ID, :TITLE, :PRO DO; // διάβασε δεδοµένα & επέστρεψέ τα στον Client CID = PRO; // πάρε το επόµενο pro SUSPEND; // περίµενε για το επόµενο Client's FETCH Σχόλια: 1. Το Create καθοδηγεί την FireBird να δηµιουργήσει την ALYSIDA και να την αποθηκεύσει στην πλευρά του server. Είναι κάτι όπως την εντολή CREATE TABLE. 2. Στην επανάληψη του while έχουµε δήλωση FOR SELECT, το οποίο δείχνει πώς να χρησιµοποιήσουµε SQL ερωτήµατα στις αποθηκευµένες διαδικασίες. 3. Για να διακρίνουµε µεταξύ των στηλών που επιστρέφονται από το SELECT και των µεταβλητών, µπορούµε να χρησιµοποιήσουµε το σύµβολο (:), έτσι το ID είναι στήλη, ενώ το :ID είναι µια επιστρεφόµενη µεταβλητή. 4. Το SUSPEND περιµένει για το επόµενη εντολή FETCH. Μπορούµε να καλέσουµε την ALYSIDA όπως παρακάτω: SELECT * FROM ALYSIDA (5); Tο αποτέλεσµά µας 42

43 Πρόβληµα 2 : Σαν δεύτερο πρόβληµα θα χρησιµοποιήσουµε µια γενίκευση του πρώτου προβλήµατος. Στο Τ.Ε.Ι. υπάρχουν πολλά µαθήµατα τα οποία εξαρτώνται από άλλα µαθήµατα, τα λεγόµενα αλυσίδες. Πολλές φορές ένα µάθηµα όµως εξαρτάται από περισσότερα από ένα µαθήµατα. Φανταστείτε ένα τέτοιο γράφηµα όπου οι αριθµοί αντιστοιχούν σε συγκεκριµένα µαθήµατα: Η αλυσίδα του µαθήµατος 20 είναι περίπλοκη γιατί εξαρτάται από το µάθηµα 11, το οποίο εξαρτάται από ένα µάθηµα και το µάθηµα 10, το οποίο εξαρτάται µε τη σειρά του από τρία άλλα µαθήµατα. Θα περιγράψουµε το πρόβληµα µας χρησιµοποιώντας τους παρακάτω πίνακες MATH2 id Title 1 m1 2 m2 3 m3 4 m4 10 m10 11 m11 12 m12 20 m20 21 m21 DEP id Pro

44 Ο πίνακας MATH αποτελείται από δυο στήλες, την id δηλαδή τον κωδικό του µαθήµατος και την title µε τον τίτλο του µαθήµατος. Ο πίνακας DEP, ο οποίος αποτελείται από τις εξαρτήσεις µεταξύ των µαθηµάτων και είναι ο πιο σηµαντικός πίνακας του προβλήµατος, αποτελείται από την στήλη id µε τους κωδικούς των µαθηµάτων και την στήλη pro όπου δείχνει το προαπαιτούµενο του συγκεκριµένου µαθήµατος. Ο πίνακας αυτός έχει µια ιδιαιτερότητα διότι κλειδί του είναι ο συνδυασµός των δυο στηλών, γι αυτό και παρατηρούµε διπλότυπα στην στήλη id. Να γραφτεί µια SQL η οποία, για δοσµένο id, να εκτυπώνει όλη την αλυσίδα των εξαρτήσεων. ηλαδή όλα τα προαπαιτούµενα ενός µαθήµατος. Για παράδειγµα, η αλυσίδα του µαθήµατος m20 (id=20) θα είναι : m10, m1, m2, m11 και m3. Πώς όµως θα γράψουµε µια τέτοια ερώτηση? Για να πάρουµε ως αποτέλεσµα το m20 απλά γράφουµε: SELECT * FROM MATH2 WHERE id = 20; Για να πάρουµε το m10 και το m11 (σαν προαπαιτούµενα του m20) απλά γράφουµε: SELECT * FROM MATH2 WHERE id in (SELECT pro FROM DEP WHERE id = 20); Για να εκτυπώσουµε το m1, m2 και m3 γράφουµε: SELECT * FROM MATH2 WHERE id in (SELECT pro FROM DEP WHERE id in (SELECT pro FROM DEP WHERE id = 20)); 44

45 Και συνεχίζεται κάπως έτσι Μπορούµε να χρησιµοποιήσουµε την UNION για να επιλέξουµε όλα τα αποτελέσµατα: SELECT * FROM MATH2 WHERE id = 20 UNION SELECT * FROM MATH2 WHERE id in (SELECT pro FROM DEP WHERE id = 20) UNION SELECT... Βλέπουµε όµως ότι όλο αυτό λειτουργεί για ένα δοσµένο βάθος της αλυσίδας. Η πρώτη ερώτηση έχει βάθος = 0 (το ίδιo το m20). Η δεύτερη έχει βάθος 1 (m10,m11), η τρίτη βάθος 2 (m1,m2,m3) κ.τ.λ. εν υπάρχει λύση του προβλήµατος σε γλώσσα SQL και ήταν προφανές διότι ούτε και στο πρώτο πρόβληµα υπήρχε λύση, το οποίο ήταν πιο εύκολο του δεύτερου. 45

46 Μια προσέγγιση στη γλώσσα C θα ήταν ο παρακάτω κώδικας #include<stdio.h> int pinid [7] = {10,10,10,11,20,20,21}; int pinpro [7] = { 1, 2, 3, 3,10,11,11}; void alysida2 ( int id ) { int i, pro; printf ("%d\n", id); { } for (i=0; i<7; i++) if (pinid[i] = = id) } pro = pinpro[i]; alysida2(pro); // παλινδρόµηση!!! main() { alysida2(20); } Ο παραπάνω κώδικας χρησιµοποιεί εξωτερική συνάρτηση την alysida, η οποία καλεί τον εαυτό της, έχουµε δηλαδή παλινδρόµηση. Μέσα στην συνάρτηση έχουµε έναν έλεγχο for και µια συνθήκη if, τα οποία σε συνδυασµό σαρώνουν τους πίνακες για να βρουν το αποτέλεσµα που να τα ικανοποιεί. Μέσα σ αυτόν τον έλεγχο έχουµε κλήση της ίδιας της συνάρτησης θέλοντας να ελέγξουµε τυχόν στοιχεία που ζητάµε. 46

47 Λύση του προβλήµατος µας µε Stored Procedures create or alter procedure ALYSIDA2 ( ID integer ) returns ( RPRO integer, RTITLE varchar(50) ) AS declare variable p integer; declare variable q integer; declare variable t varchar(50); BEGIN END SELECT title FROM MATH2 WHERE id=:id into RTITLE; RPRO = ID; SUSPEND; FOR SELECT pro FROM DEP WHERE id = :ID INTO :p DO BEGIN FOR SELECT * FROM ALYSIDA2(:p) INTO :q,:t DO BEGIN RPRO = q; RTITLE = t; SUSPEND; END END Θα καλέσουµε την διαδικασία απλά γράφοντας SELECT * FROM ALYSIDA2( 20 ) Στην παρακάτω εικόνα βλέπουµε το αποτέλεσµα που µας δίνει η διαδικασία, τρέχοντας την στη Firebird. Παίρνουµε ως αποτέλεσµα τον πίνακα µε τα προαπαιτούµενα του µαθήµατος m20. RPRO RTITLE 20 m20 10 m10 1 m1 2 m2 3 m3 11 m11 3 m3 47

48 48

49 Βιβλιογραφία Εισαγωγή στα συστήµατα βάσεων δεδοµένων. Συγγραφέας: C. J. Date Inside Relational Databases. Συγγραφέας: Mark Whitehorn & Bill Marklyn Manual της Firebird: Firebird-1.5-QuickStartGuide.pdf Τα προγράµµατα που χρησιµοποιήθηκαν κατά τη διάρκεια της πτυχιακής ήταν: Microsoft Access Microsoft Visual Studio Firebird 49

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΠΕΜΠΤΟ Triggers, Stored procedures Γιώργος Μαρκοµανώλης Περιεχόµενα Triggers-Ενηµέρωση δεδοµένων άλλων πινάκων... 1 Ασφάλεια...

Διαβάστε περισσότερα

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

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Βάσεις εδοµένων 2011-2012 Ευαγγελία Πιτουρά 1 Εισαγωγή Μοντελοποίηση Στα προηγούµενα µαθήµατα: Εννοιολογικός Σχεδιασµός Βάσεων Δεδοµένων (µε

Διαβάστε περισσότερα

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

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML. Κεφάλαιο 5 Η γλώσσα SQL 5.1 Εισαγωγή Η γλώσσα SQL (Structured Query Language) είναι η πιο διαδεδομένη διαλογική γλώσσα ερωταπαντήσεων που χρησιμοποιείται για την επικοινωνία του χρήστη με σχεσιακές ΒΔ.

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΤΕΤΑΡΤΟ Insert, Update, Delete, Ένωση πινάκων Γιώργος Μαρκοµανώλης Περιεχόµενα Group By... 1 Having...1 Οrder By... 2 Εντολή Insert...

Διαβάστε περισσότερα

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

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Εισαγωγή Μοντελοποίηση Στα προηγούμενα μαθήματα: Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων) Λογικός

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΠΕΜΠΤΟ Views, Triggers Γιώργος Μαρκοµανώλης Περιεχόµενα Όψη... 1 ηµιουργία όψης... 2 Επιλογή CHECK... 3 Όψεις µόνο για εµφάνιση

Διαβάστε περισσότερα

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

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Βάσεις Δεδομένων 2009-2010 Ευαγγελία Πιτουρά 1 Εισαγωγή Μοντελοποίηση Στα προηγούμενα μαθήματα: Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΠΕΜΠΤΟ Stored procedures, Exceptions, ιακιώµατα Γιώργος Μαρκοµανώλης Περιεχόµενα Stored Procedures... 1 Exceptions... 1 Εντολή

Διαβάστε περισσότερα

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

Σχεδιασμός Βάσεων Δεδομένων Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Σχεδιασμός Βάσεων Δεδομένων Εργαστήριο 4 Δρ. Βασιλική Κούφη Περιεχόμενα Υλοποίηση Βάσεως Δεδομένων Εκτέλεση ερωτημάτων SQL στην Βάση Δεδομένων BHMA 1. Σχεδιασμός

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΤΡΙΤΟ Foreign key, Index, DML Ερωτήµατα Γιώργος Μαρκοµανώλης Περιεχόµενα Foreign Key... 1 Index... 4 DML Ερωτήµατα... 6 INSERT...

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ Η συνθήκη WHERE βάζει περιορισμούς στις εγγραφές που επιστρέφονται. Ο όρος ORDER BY ταξινομεί τις εγγραφές που επιστρέφονται. Παράδειγμα: SELECT * FROM table_name ORDER

Διαβάστε περισσότερα

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

Τμήμα Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων «Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα» «Σημειώσεις για την SQL» ΕΞΑΜΗΝΟ: ΣΤ Δρ. Κωνσταντίνος Χ. Γιωτόπουλος Πάτρα, Νοέμβριος 2010 SQL Create Table Η CREATE TABLE

Διαβάστε περισσότερα

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

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων Η γλώσσα SQL H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων H SQL έχει διάφορα τμήματα: Γλώσσα Ορισμού Δεδομένων (ΓΟΔ) Γλώσσα Χειρισμού Δεδομένων (ΓΧΔ) Ενσωματωμένη

Διαβάστε περισσότερα

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής. ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Χειμερινό Εξάμηνο 2012 SQL Structured Query Language Δρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ 1 Πράξεις της σχεσιακής άλγεβρας ΠΡΑΞΗ ΣΚΟΠΟΣ

Διαβάστε περισσότερα

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

Εισαγωγή στην πληροφορική Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στην πληροφορική Ενότητα 6: Εισαγωγή στις βάσεις δεδομένων (Μέρος Β) Αγγελίδης Παντελής Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης

Διαβάστε περισσότερα

Certified Data Base Designer (CDBD)

Certified Data Base Designer (CDBD) Certified Data Base Designer (CDBD) Εξεταστέα Ύλη (Syllabus) Πνευµατικά ικαιώµατα Το παρόν είναι πνευµατική ιδιοκτησία της ACTA Α.Ε. και προστατεύεται από την Ελληνική και Ευρωπαϊκή νοµοθεσία που αφορά

Διαβάστε περισσότερα

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

Τμήμα Πληροφορικής ΑΠΘ Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ 2013-2014 2 Σκοπός του 2 ου εργαστηρίου Σκοπός αυτού του εργαστηρίου είναι: Η μελέτη ερωτημάτων σε μία μόνο σχέση. Εξετάζουμε τους τελεστές επιλογής

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Β. Μεγαλοοικονόμου, Δ. Χριστοδουλάκης Σχεσιακό Μοντέλο SQL- Μέρος Β Ακ.Έτος 2008-09 (μεβάσητιςσημειώσειςτωνsilberchatz, Korth και Sudarshan και του C. Faloutsos

Διαβάστε περισσότερα

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

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. Ιατρική Πληροφορική Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. Χρήσιμοι Σύνδεσμοι Σημειώσεις μαθήματος: http://medisp.bme.teiath.gr/eclass/courses/tio103/ https://eclass.teiath.gr/courses/tio100/

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι Ιατρική Πληροφορική Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι Σημειώσεις μαθήματος: http://medisp.bme.teiath.gr/eclass/courses/tio103/ https://eclass.teiath.gr/courses/tio100/

Διαβάστε περισσότερα

Εισαγωγή Mια από τις βασικές λειτουργίες ενός σχεσιακού συστήµατος διαχείρισης βάσεων δεδοµένων είναι η διαχείριση του πληροφοριακού περιεχοµένου που

Εισαγωγή Mια από τις βασικές λειτουργίες ενός σχεσιακού συστήµατος διαχείρισης βάσεων δεδοµένων είναι η διαχείριση του πληροφοριακού περιεχοµένου που ΤΕΙ ΑΘΗΝΩΝ ΣΧΟΛΗ Σ Ο ΤΜΗΜΑ ΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2009-2010 Η/Υ ΙΙΙ ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ (Θεωρία) ΜΑΘΗΜΑ 4ο Η γλώσσα βάσεων δεδοµένων SQL, η γλώσσα QBE. Αθανασίου Ειρήνη, MSc 1 Εισαγωγή Mια

Διαβάστε περισσότερα

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

Τμήμα Πληροφορικής ΑΠΘ 2013-2014 Βάσεις Δεδομένων Εργαστήριο V Τμήμα Πληροφορικής ΑΠΘ 2013-2014 2 Σκοπός του 5 ου εργαστηρίου Σκοπός αυτού του εργαστηρίου είναι: η μελέτη ερωτημάτων τροποποίησης δομής / δεδομένων η μελέτη σύνθετων ερωτημάτων

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language) Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language) Παύλος Εφραιμίδης Βάσεις Δεδομένων Η Γλώσσα SQL - Μέρος Πρώτο 1 SQL - Structured Query Language (1) Ένας από τους βασικούς λόγους της απόλυτης επικράτησης

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1) Βάσεις Δεδομένων Η γλώσσα SQL Structured Query Language) Παύλος Εφραιμίδης SQL - Structured Query Language 1) Ένας από τους βασικούς λόγους της απόλυτης επικράτησης των Σχεσιακών ΒΔ Εξασφαλίζει μεταφερσιμότητα

Διαβάστε περισσότερα

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

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 2 ο Σύνολο Ασκήσεων Οι βαθμοί θα ανακοινωθούν αύριο μαζί με τους βαθμούς της προγραμματιστικής άσκησης Τα αστεράκια δείχνουν τον εκτιμώμενο βαθμό δυσκολίας (*) εύκολο (**) μέτριο (***) δύσκολο Βάσεις Δεδομένων

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα: ΘΕΜΑΤΑ Θέμα 1 ο Σε μία βάση δεδομένων χρηματιστηριακών συναλλαγών υπάρχουν οι παρακάτω πίνακες που αποτελούνται από τα εξής πεδία : : ΚΣ, ΗΜΝΙΑ, ΩΡΑ, ΚΜ, ΤΙΜΗ ΜΕΤΟΧΗ : ΚΜ, ΟΝΟΜΑ, ΕΤΟΣ_ΙΔΡΥΣΗΣ, ΚΚ, ΚΑΤΗΓΟΡΙΑ

Διαβάστε περισσότερα

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

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11 ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model SQL Μαθ. #11 Ε-R Model for a COMPANY database The COMPANY relational database schema A relational database instance of the COMPANY schema SQL Μια γλώσσα σχεσιακής βάσης

Διαβάστε περισσότερα

SQL Τύποι Δεδομένων Δημιουργία Πίνακα Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

SQL Τύποι Δεδομένων Δημιουργία Πίνακα Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1) Εργαστήριο Βάσεων Δεδομένων Εισαγωγή στη My (1) Η (Structured Query Language) είναι μια πλήρης γλώσσα Βάσεων Δεδομενων Είναι δομημένη σε βάσεις που περιέχουν πίνακες Οι πίνακες αποτελούνται από γραμμές

Διαβάστε περισσότερα

Query-by-Example (QBE)

Query-by-Example (QBE) Φροντιστήριο 8 o Χειµερινό Εξάµηνο 2009-10 Τµήµα Μηχανικών Η/Υ και Πληροφορικής Πολυτεχνική Σχολή, Πανεπιστήµιο Πατρών Πέµπτη, 3 εκεµβρίου 2009 Τι είναι η QBE; Γλώσσα επερωτήσεων σε σχεσιακές ϐάσεις δεδοµένων

Διαβάστε περισσότερα

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

Το σχεσιακό μοντέλο βάσεων δεδομένων ΕΣΔ232 Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας Το σχεσιακό μοντέλο βάσεων δεδομένων Περιεχόμενα Περιεχόμενα - Βιβλιογραφία Ενότητας Εισαγωγή στο σχεσιακό μοντέλο Σχεσιακές γλώσσες ερωτημάτων Περιορισμοί

Διαβάστε περισσότερα

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

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης Φροντιστήριο SQL Examples Ξένου Ρουμπίνη 1 SQL-DDL Data Definition/Description Language (DDL): προσδιορίζουν τη δομή ή το σχήμα των δεδομένων.

Διαβάστε περισσότερα

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

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. Ιατρική Πληροφορική Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. Χρήσιμοι Σύνδεσμοι Σημειώσεις μαθήματος: http://medisp.bme.teiath.gr/eclass/courses/tio103/ https://eclass.teiath.gr/courses/tio100/

Διαβάστε περισσότερα

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

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων με βάση slides από A. Silberschatz, H. Korth, S. Sudarshan, Database System Concepts, 5 th edition Περιορισμοί πεδίου τιμών Περιορισμοί ακεραιότητας

Διαβάστε περισσότερα

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

Διαχείριση Πολιτισμικών Δεδομένων Διαχείριση Πολιτισμικών Δεδομένων Μάθημα 7 Γλώσσα Ερωτημάτων SQL Τζανέτος Πομόνης ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Συντήρησης Πολιτισμικής Κληρονομιάς Βασικές Έννοιες Σχεσιακή

Διαβάστε περισσότερα

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά ΣΤΟΧΟΣ Postgress Το 9ο εργαστήριο εισάγει τον/ην φοιτητή/τρια στη χρήση και προγραµµατισµό συναρτήσεων στην PostgreSQL. ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ Η σχετική ύλη του βιβλίου του µαθήµατος (διαφάνειες και

Διαβάστε περισσότερα

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

. Εργαστήριο Βάσεων Δεδομένων. Triggers Εργαστήριο Βάσεων Δεδομένων Triggers Triggers: Βασικές Έννοιες Ένας trigger είναι ένα κομμάτι κώδικα, μια ρουτίνα Συνδέεται με ένα συγκεκριμένο πίνακα Καλείται όταν συμβεί ένα γεγονός στον πίνακα Συχνές

Διαβάστε περισσότερα

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

Εργαστήριο Βάσεων Δεδομένων. Triggers Εργαστήριο Βάσεων Δεδομένων Triggers CREATE TRIGGER Δήλωση δημιουργίας Trigger: CREATE [DEFINER = { user CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt

Διαβάστε περισσότερα

Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 2

Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 2 Η Γλώσσα SQL Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 1 Η γλώσσα SQL What men or gods are these? What maidens loth? What mad pursuit? What struggle to escape? What pipes and timbrels? What wild ectasy?

Διαβάστε περισσότερα

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

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: Ενημέρωση Βάσης Δεδομένων (INSERT, UPDATE, DELETE) SQL DCL (GRANT, DENY, REVOKE)

Διαβάστε περισσότερα

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

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3 ΔΕΣΠΟΙΝΑ ΠΑΠΑΚΩΝΣΤΑΝΤΙΝΟΥ dpap@unipi.gr 2 ΤΙ ΕΙΝΑΙ Η SQL? (1/2) Η SQL (Structured Query Language) αποτελεί μια πρότυπη

Διαβάστε περισσότερα

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

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions) Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions) Αυγερινός Αραμπατζής avi@ee.duth.gr www.aviarampatzis.com Βάσεις Δεδομένων Stored Procedures 1 Stored Routines (1/2) Τμήματα κώδικα τα

Διαβάστε περισσότερα

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

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL ΗΥ360 - ΑΡΧΕΙΑ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL ΛΙΛΙΤΣΗΣ ΠΡΟΔΡΟΜΟΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ SQL - STRUCTURED QUERY LANGUAGE 2 Μια γλώσσα επερωτήσεων για τη διαχείριση Σχεσιακών Βάσεων

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ Εισαγωγή στη MySQL Νικόλαος Ζ. Ζάχαρης Τι είναι η MySql Είναι ένα Σχεσιακό Σύστημα Διαχείρισης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures): 9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers Σκοπός της παρούσας εργαστηριακής άσκησης, είναι η εξοικείωση του σπουδαστή με τη δημιουργία αποθηκευμένων διαδικασιών (Stored Procedures) και σκανδάλης

Διαβάστε περισσότερα

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

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Βάσεις εδοµένων 2012-2013 Ευαγγελία Πιτουρά 1 Εισαγωγή Μοντελοποίηση Στα προηγούμενα μαθήματα: Εννοιολογικός Σχεδιασμός Βάσεων Δεδομένων (με

Διαβάστε περισσότερα

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

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2) Εργαστήριο βάσεων δεδομένων Εισαγωγή στη MySQL (2) Παράδειγμα -ER Παράδειγμα-Σχεσιακό Παράδειγμα Δημιουργία Πινάκων CREATE TABLE student( name VARCHAR(25) DEFAULT 'unknown' NOT NULL, lastname VARCHAR(25)

Διαβάστε περισσότερα

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

Τεχνολογία Πολιτισμικού Λογισμικού Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Τεχνολογία Πολιτισμικού Λογισμικού Ενότητα 10: Γλώσσα Ερωτημάτων SQL Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 8: RM II. Relational Model. (Chapter ) Department of Computer Science University of Cyprus EPL342 Databases Lecture 8: RM II Relational Model (Chapter 5.2-5.3) ιδάσκων: Παναγιώτης Ανδρέου http://www.cs.ucy.ac.cy/courses/epl342 8-1 Περιεχόμενο

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL Εθνικό Μετσόβιο ολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Βάσεις Δεδομένων Βασίλειος Βεσκούκης v.vescoukis@cs.ntua.gr Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL Η γλώσσα SQL

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων. Εισαγωγή για το Εργαστήριο. Δρ. Τιάκας Ελευθέριος. Τμήμα Πληροφορικής ΑΠΘ 2015-2016 Βάσεις Δεδομένων Εισαγωγή για το Εργαστήριο Δρ. Τιάκας Ελευθέριος Τμήμα Πληροφορικής ΑΠΘ 2015-2016 2 Βασικοί στόχοι Μερικοί βασικοί στόχοι του εργαστηρίου είναι: Η ικανότητα ανάλυσης των απαιτήσεων, κατασκευής

Διαβάστε περισσότερα

Σχεσιακό Μοντέλο. Σχεδιασμός Βάσεων Δεδομένων Μάθημα 2 ο Μαρία Χαλκίδη

Σχεσιακό Μοντέλο. Σχεδιασμός Βάσεων Δεδομένων Μάθημα 2 ο Μαρία Χαλκίδη Σχεσιακό Μοντέλο Σχεδιασμός Βάσεων Δεδομένων Μάθημα 2 ο Μαρία Χαλκίδη Εισαγωγή Το σχεσιακό μοντέλο δεδομένων (relational data model) προτάθηκε από τον E. F. Codd το 1970 Aποτελεί ένα μέσο λογικής δόμησης

Διαβάστε περισσότερα

Η SQL ως γλώσσα ερωτημάτων. Υπενθυμίζουμε: Σχέση = Πίνακας Πλειάδα = Εγγραφή = Γραμμή (Πίνακα) Πεδίο = Γνώρισμα (Σχέσης) = Στήλη (Πίνακα)

Η SQL ως γλώσσα ερωτημάτων. Υπενθυμίζουμε: Σχέση = Πίνακας Πλειάδα = Εγγραφή = Γραμμή (Πίνακα) Πεδίο = Γνώρισμα (Σχέσης) = Στήλη (Πίνακα) Η SQL ως γλώσσα ερωτημάτων Υπενθυμίζουμε: Σχέση = Πίνακας Πλειάδα = Εγγραφή = Γραμμή (Πίνακα) Πεδίο = Γνώρισμα (Σχέσης) = Στήλη (Πίνακα) Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data Definition Language)

Διαβάστε περισσότερα

Πληροφοριακά Συστήµατα

Πληροφοριακά Συστήµατα Nell Dale John Lewis Chapter 12 Πληροφοριακά Συστήµατα Στόχοι Ενότητας Η κατανόηση της έννοιας «Πληροφοριακό Σύστηµα» Επεξήγηση της οργάνωσης λογιστικών φύλλων (spreadsheets) Επεξήγηση της ανάλυσης δεδοµένων

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων (Databases) Βάσεις Δεδομένων (Databases) ΕΠΛ 342 Χειμερινό Εξάμηνο 2011 Διδάσκοντες Καθηγητές Γιώργος Σαμάρας (ΧΩΔ01 109) Περιεχόμενο Διάλεξης Κεφάλαιο 5: Το Σχεσιακό Μοντέλο Δεδομένων Περιορισμοί Σχεσιακού Μοντέλου

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΕΥΤΕΡΟ ηµιουργία Βάσης, Πίνακα, Domain Γιώργος Μαρκοµανώλης Περιεχόµενα ηµιουργία Βάσης... 1 ηµιουργία µιας shadow βάσης... 2 ιαγραφή

Διαβάστε περισσότερα

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

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2) Εργαστήριο βάσεων δεδομένων Εισαγωγή στη MySQL (2) Παράδειγμα - ER Παράδειγμα-Σχεσιακό Παράδειγμα Δημιουργία Πινάκων CREATE TABLE student( name VARCHAR(25) DEFAULT 'unknown' NOT NULL, lastnamevarchar(25)

Διαβάστε περισσότερα

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

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις Σχεδιασμός Πληροφοριακών Συστημάτων Σημειώσεις Συμπλήρωμα για τις Εκδόσεις 4 (4.1) και 4.2 των Σημειώσεων Έκδοση 19/2/2011 Μάριος Μάντακας mmantak@gmail.com Διαφορά από την προηγούμενη Έκδοση: Προσθήκη

Διαβάστε περισσότερα

SQL Data Manipulation Language

SQL Data Manipulation Language SQL Data Manipulation Language Τελεστής union συνδυάζει subselects τα οποία παράγουν συμβατές σχέσεις γενική μορφή: subselect {union [all] subselect} περιορισμός: τα subselects δεν μπορούν να περιέχουν

Διαβάστε περισσότερα

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004 Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004 Θέλουµε να φτιάξουµε µια βάση στην οποία θα καταχωρούνται οι φοιτητές του τµήµατος Μαθηµατικών,

Διαβάστε περισσότερα

Οψεις (VIEWS) στην SQL Η εντολή CREATE VIEW Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 55 Περιεχόμενα 1 Εισαγωγικά για τις όψεις 2 Οψεις και συζεύξεις 3 Επιπλέον χρήση των όψεων

Διαβάστε περισσότερα

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

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL ΓΙΑΝΝΗΣ ΑΓΑΘΑΓΓΕΛΟΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΗΥ360 - ΑΡΧΕΙΑ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL SQL SQL - STRUCTURED QUERY LANGUAGE 2 Μια γλώσσα επερωτήσεων για τη διαχείριση Σχεσιακών

Διαβάστε περισσότερα

Σχεδίαση Βάσεων Δεδομένων

Σχεδίαση Βάσεων Δεδομένων Οδηγίες Μέρος 1: Απαντήστε κάθε ερώτηση. 1. Ποια είναι τα πλεονεκτήματα που παρέχει το Περιβάλλον Βάσεων Δεδομένων της Oracle για τις επιχειρήσεις; Το σύστημα διαχείρισης βάσεων δεδομένων της Oracle δίνει

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων Ι SQL Μέρος 1 ο. Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ Βάσεις Δεδομένων Ι - 03 SQL Μέρος 1 ο Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας Γιατί SQL; Η SQL είναι γλώσσα πολύ υψηλού επιπέδου Επιτρέπει να λέμε εύκολα τι θέλουμε να κάνουμε

Διαβάστε περισσότερα

Η αναλυτική περιγραφή της γλώσσας SQL αποτελεί αντικείµενο των σελίδων που ακολουθούν. Η ΓΛΩΣΣΑ ΟΡΙΣΜΟΥ Ε ΟΜΕΝΩΝ

Η αναλυτική περιγραφή της γλώσσας SQL αποτελεί αντικείµενο των σελίδων που ακολουθούν. Η ΓΛΩΣΣΑ ΟΡΙΣΜΟΥ Ε ΟΜΕΝΩΝ Κεφάλαιο 6 SQL Στο κεφάλαιο αυτό παρουσιάζεται η δοµηµένη γλώσσα ερωτοαποκρίσεων (Structured Query Language, SQL) που χρησιµοποιείται για τη διαχείριση των δεδοµένων της βάσης. Η διαχείριση αυτή περιλαµβάνει

Διαβάστε περισσότερα

Database System Concepts and Architecture (Αρχιτεκτονική, οµές, και Μοντέλα)

Database System Concepts and Architecture (Αρχιτεκτονική, οµές, και Μοντέλα) Database System Concepts and Architecture (Αρχιτεκτονική, οµές, και Μοντέλα) Μοντέλα, οµές (Σχήµα) και Αντιπρόσωποι (Data Models, Schema, and Instances) DBMS αρχιτεκτονική ιάφοροι τύποι γλωσσών και διεπαφές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Παράδειγμα Select Introduction Group By Join Aliases.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (3)

Παράδειγμα Select Introduction Group By Join Aliases.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (3) Εργαστήριο Βάσεων Δεδομένων Εισαγωγή στη MySQL (3) ER Σχεσιακό Create Tables 1/4 CREATE TABLE student( name VARCHAR(25) DEFAULT 'unknown' NOT NULL, lastname VARCHAR(25) DEFAULT 'unknown' NOT NULL, AM INT(5)

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Εντολές ορισμού δεδομένων (DDL) στην SQL Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Δεδομένων. Βασίλειος Βεσκούκης Ορισμός Βάσης Δεδομένων Δομή Περιορισμοί Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Βάσεις Δεδομένων Βασίλειος Βεσκούκης v.vescoukis@cs.ntua.gr Βασικές πράξεις της Σχεσιακής Αλγεβρας Σχεσιακό Μοντέλο Δεδομένων Ορισμός Βάσης

Διαβάστε περισσότερα

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

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές Εργαστήριο Βάσεων Δεδομένων Δικαιώματα Χρηστών Προβολές Επικοινωνία με MySQL mysql host DB server queries results Client host Β Δ Η χρήση της mysql βασίζεται στο μοντέλο client server Remote access to

Διαβάστε περισσότερα

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων Εργαστήριο Βάσεων Δεδομένων Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων Τρόπος Διεξαγωγής #1 Ύλη (4 Ενότητες) 1. Ανάλυση Απαιτήσεων - Σχεδιασμός Βάσης Δεδομένων 2. Δημιουργία βάσης a)

Διαβάστε περισσότερα

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

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY. Η γλώσσα ορισμού δεδομένων της SQL Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 Περιεχόμενα 1 Δημιουργία πινάκων με την

Διαβάστε περισσότερα

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

Εργαστήριο Βάσεων Δεδομένων Εργαστήριο Βάσεων Δεδομένων Φροντιστήριο 4/2/2009 Δικαιώματα χρηστών - Προβολές (Views) ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ MYSQL queries results mysql host DB server queries results Client host Β Δ Ηχρήσητηςmysql βασίζεται

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3 Διδάσκων: Γιάννης Θεοδωρίδης Συντάκτης Κειμένου: Βαγγέλης Κατσικάρος Φεβρουάριος 2008 Περιεχόμενα ξένα κλειδιά

Διαβάστε περισσότερα

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

Εργαστήριο Βάσεων Δεδομένων Εργαστήριο Βάσεων Δεδομένων Φροντιστήριο 3 ο (26/11/2008) Εισαγωγή στην Mysql SQL Η SQL (Structured Query Language) είναι μια πλήρης γλώσσα Βάσεων Δεδομένων. Είναι δομημένη σε βάσεις που περιέχουν πίνακες.

Διαβάστε περισσότερα

Βάσεις Δεδομένων. Εισαγωγή Ανάλυση Απαιτήσεων. Φροντιστήριο 1 ο

Βάσεις Δεδομένων. Εισαγωγή Ανάλυση Απαιτήσεων. Φροντιστήριο 1 ο Βάσεις Δεδομένων Εισαγωγή Ανάλυση Απαιτήσεων Φροντιστήριο 1 ο 16-10-2008 Εισαγωγή - Ορισμοί Βάση Δεδομένων είναι μία συλλογή από σχετιζόμενα αντικείμενα Ένα σύστημα διαχείρισης βάσεων δεδομένων (ΣΔΒΔ)

Διαβάστε περισσότερα

Έχουµε την βάση της σχολής που αποτελείται από τους παρακάτω πίνακες.

Έχουµε την βάση της σχολής που αποτελείται από τους παρακάτω πίνακες. Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ 21/12/2004 Έχουµε την βάση της σχολής που αποτελείται από τους παρακάτω πίνακες. Όνοµα πίνακα: Students Γνώρισµα

Διαβάστε περισσότερα

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

Διάλεξη 02: Βάσεις Δεδομένων Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 02: Βάσεις Δεδομένων Εισαγωγή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: Αρχιτεκτονική Τριών Επιπέδων Χρήστες Βάσεων Δεδομένων Μοντέλα Δεδομένων και Γλώσσες

Διαβάστε περισσότερα

Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων

Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων Εισαγωγή στη χρήση της γλώσσας SQL και στον προγραμματισμό εφαρμογών βάσεων δεδομένων Θα χρησιμοποιήσουμε το Σχεσιακό Σύστημα (προϊόν)

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Όψεις (views) στην SQL Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΒΔ - ΕΙΣΑΓΩΓΗ ΣΤΟ ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ ΣΥΣΧΕΤΙΣΕΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Χειμερινό Εξάμηνο 2013 - ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΒΔ - ΕΙΣΑΓΩΓΗ ΣΤΟ ΜΟΝΤΕΛΟ ΟΝΤΟΤΗΤΩΝ ΣΥΣΧΕΤΙΣΕΩΝ Δρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ 1 Αρχιτεκτονική

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Β. Μεγαλοοικονόμου, Δ. Χριστοδουλάκης Σχεσιακό Μοντέλο SQLΜέρος Α Ακ.Έτος 2008-09 (μεβάσητιςσημειώσειςτωνsilberchatz, Korth και Sudarshan και του C. Faloutsos

Διαβάστε περισσότερα

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

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ Πίνακας Πεδίο Τύπος Κύριο κλειδί Αναφορική ακεραιότητα οντοτήτων Ξένο κλειδί Αναφορική ακεραιότητα δεδομένων Δρ. Κεραμόπουλος Ευκλείδης 2 ΚΥΡΙΟ ΚΛΕΙΔΙ ΦΟΙΤΗΤΗΣ ΑΜ CHAR(5) ΟΝΟΜΑ VARCHAR(20)

Διαβάστε περισσότερα

Ανοικτά Ακαδημαϊκά Μαθήματα

Ανοικτά Ακαδημαϊκά Μαθήματα Ανοικτά Ακαδημαϊκά Μαθήματα Τεχνολογικό Εκπαιδευτικό Ίδρυμα Αθήνας Case Study: Σύστημα Διαχείρισης Βάσης Βιβλιοθήκης (Library Information System) - Μοντελοποίηση και Κανονικοποίηση - Υλοποίηση με χρήση

Διαβάστε περισσότερα

Μοντέλο Οντοτήτων-Συσχετίσεων

Μοντέλο Οντοτήτων-Συσχετίσεων Εισαγωγή Σχεδιασµός µιας Β : Βήµατα Ανάλυση Απαιτήσεων Τι δεδοµένα θα αποθηκευτούν, ποιες εφαρµογές θα κτιστούν πάνω στα δεδοµένα, ποιες λειτουργίες είναι συχνές Εννοιολογικός Σχεδιασµός Υψηλού-επιπέδου

Διαβάστε περισσότερα

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

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY. Η γλώσσα ορισμού δεδομένων της SQL Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr astavrak@uoi.gr @AStavrakoudis Άνοιξη 2016 1 / 85 Περιεχόμενα

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI B. Μεγαλοοικονόμου Αντικειμενοστρεφή και αντικειμενο-σχεσιακά ΣΔΒΔ (παρουσίαση βασισμένη εν μέρη σε σημειώσεις των Silberchatz, Korth και Sudarshan και του

Διαβάστε περισσότερα

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

Εξεταστική Περίοδος Ιουνίου 2004 Aρχεία και Βάσεις εδοµένων Εξεταστική Περίοδος Ιουνίου 2004 ιαβάστε προσεκτικά όλες τις οδηγίες, τις εκφωνήσεις των ερωτηµάτων και τις όποιες οδηγίες υπάρχουν σε κάθε ερώτηµα. Η εξέταση πραγµατοποιείται

Διαβάστε περισσότερα

Γνωριµία µε τη Microsoft Access

Γνωριµία µε τη Microsoft Access Γνωριµία µε τη Microsoft Access ηµιουργία νέας βάσης δεδοµένων Έναρξη - Προγράµµατα - Microsoft Access - ηµιουργία νέας βάσης δεδοµένων µε χρήση Κενής βάσης δεδοµένων - ΟΚ Επιλέγουµε Φάκελο και στο Όνοµα

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ 1 Βάση Δεδομένων: Με το όρο Βάση Δεδομένων εννοούμε ένα σύνολο δεδομένων που είναι οργανωμένο

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα