Κεφάλαιο 4 Εισαγωγή Εγγραφών και Τροποποίηση Πινάκων

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

Download "Κεφάλαιο 4 Εισαγωγή Εγγραφών και Τροποποίηση Πινάκων"

Transcript

1 Κεφάλαιο 4 Εισαγωγή Εγγραφών και Τροποποίηση Πινάκων Σύνοψη Στο παρόν κεφάλαιο θα παρουσιασθούν επιπλέον εντολές του DDL που έχουν να κάνουν με εισαγωγή εγγραφών, επισκόπηση και τροποποίηση πινάκων. Προαπαιτούμενη γνώση Προαπαιτούμενα για την κατανόηση των εννοιών αλλά και την εργαστηριακή άσκηση είναι οι ακόλουθες ενότητες: Εργαστήριο 3: Δημιουργία ΒΔ και Πινάκων. 4.1 Εισαγωγικές Έννοιες Έχοντας δημιουργήσει τους πίνακες Customer, Phones, Account, Owns, Action, Transfer μπορούμε να αρχίσουμε να «γεμίζουμε» τη ΒΔ εισάγοντας εγγραφές. Δύο τρόποι υπάρχουν για την εισαγωγή εγγραφών. Ο πρώτος είναι χρησιμοποιώντας την εντολή INSERT..VALUES.. με την οποία εισάγουμε μία ή περισσότερες εγγραφές των οποίων το περιεχόμενο δίνεται μαζί με την εντολή. Ο δεύτερος είναι φορτώνοντας εγγραφές από αρχείο με την εντολή LOAD DATA.. INFILE Εισάγοντας εγγραφές με την INSERT Για την πλήρη σύνταξη της εντολής ο αναγνώστης μπορεί να ανατρέξει στο Κεφ του manual της MySQL5.7. Ο βασικός σκελετός της εντολής έχει ως εξής: INSERT επιλογές [INTO] όνομα_πίνακα VALUES (εγγραφή), (εγγραφή), Για παράδειγμα με την ακόλουθη εντολή εισάγουμε δύο καινούργιες εγγραφές στον πίνακα Customer (cid, afm, address, name, sname, dateofbirth): INSERT INTO Customer VALUES (1, ' ', '56 Baltetsiou st.', 'Kostas', 'Kostantinou', ' '), (2, ' ', '107 Diakou st.', 'Eleni', 'Kostantinou', ' '); Στη θέση του VALUES μπορούμε να γράψουμε VALUE χωρίς αυτό να επηρεάζει σε τίποτα ή να υπονοεί το πλήθος των εγγραφών που πρέπει να περαστούν. Για λόγους αναγνωσιμότητας είναι καλό όταν εισάγουμε πολλές εγγραφές με μία εντολή INSERT κάθε εγγραφή να καταλαμβάνει ξεχωριστή γραμμή. Παρατηρήστε ότι για αλφαριθμητικές τιμές και ημ/νιες, οι τιμές περικλείονται μέσα σε, ενώ οι αριθμητικές όχι. Προσοχή: Αν και στο σχεσιακό μοντέλο η σειρά των πεδίων σε έναν πίνακα δεν παίζει ρόλο στην SQL παίζει. Η καταχώρηση εγγραφής γίνεται βάζοντας τιμές στα πεδία του πίνακα με τη σειρά με την οποία ορίστηκαν. Μία χρήσιμη επιλογή στην εντολή INSERT είναι η IGNORE. Το INSERT IGNORE λειτουργεί όπως και το απλό INSERT μόνο που σε περίπτωση σφάλματος στην εισαγωγή μιας εγγραφής, αντί η εκτέλεση να διακοπεί, συνεχίζεται με αγνόηση του σφάλματος. Για παράδειγμα έστω ότι

2 δοκιμάζουμε να προσθέσουμε τις ακόλουθες δύο εγγραφές (αφού βάλαμε τις προηγούμενες δύο): INSERT INTO Customer VALUES (3, ' ', '12 Rodon st.', 'Maria', 'Papantoniou', ' '), (2, ' ', '107 Diakou st.', 'Eleni', 'Kostantinou', ' '); Θα λάβουμε μήνυμα σφάλματος εξαιτίας της δεύτερης εγγραφής, καθώς υπάρχει ήδη καταχωρημένη εγγραφή με τιμή 2 στο primary key. Ως εκ τούτου δε θα καταχωρηθεί ούτε η πρώτη εγγραφή αν και από μόνη της δεν ενέχει κάποιο σφάλμα. Χρησιμοποιώντας την επιλογή IGNORE ως εξής: INSERT IGNORE INTO Customer VALUES (3, ' ', '12 Rodon st.', 'Maria', 'Papantoniou', ' '), (2, ' ', '107 Diakou st.', 'Eleni', 'Kostantinou', ' '); η πρώτη εγγραφή θα καταχωρηθεί και για τη δεύτερη θα υπάρξει warning αντί για σφάλμα. Μπορούμε να δούμε το warning με την εντολή: SHOW WARNINGS; Στη συγκεκριμένη περίπτωση θα δούμε σε μορφή πίνακα το εξής: 1062 Duplicate entry '2' for key 'PRIMARY' Θα πρέπει να σημειωθεί ότι πιθανά σφάλματα κατά την εισαγωγή εγγραφών συνήθως περιλαμβάνουν: (i) αναντιστοιχία τύπων πχ. αλφαριθμητικό σε DATE τιμή, (ii) αναντιστοιχία πλήθους πεδίων πχ. όταν επιχειρούμε να βάλουμε εγγραφή με λιγότερα ή περισσότερα πεδία από αυτά που υπάρχουν στον πίνακα, (iii) όταν προσπαθούμε να θέσουμε ένα NOT NULL πεδίο σε NULL (iv) παραβίαση PRIMARY KEY, UNIQUE KEY ή FOREIGN KEY. Προσοχή: Χωρίς IGNORE και στις 4 παραπάνω περιπτώσεις θα έχουμε σφάλμα. Με IGNORE θα έχουμε σφάλμα στην περίπτωση (ii), warnings στις άλλες τρεις. Στις περιπτώσεις (i) και (iii) θα μπει καινούργια εγγραφή ενώ στην (iv) όχι. Συνοψίζοντας, η χρήση της IGNORE είναι αρκετά συνηθισμένη όταν θέλουμε να εισάγουμε πολλές εγγραφές με μία εντολή αγνοώντας τις εισαγωγές που παραβιάζουν PRIMARY ή UNIQUE KEY. Αξίζει να σημειωθεί ότι η εισαγωγή πολλών εγγραφών (batch insertion) μπορεί να γίνει και με πολλαπλές εντολές INSERT αντί για μία, αλλά θα είναι αισθητά πιο αργή για μικρό και μεσαίο πλήθος εγγραφών, πχ. στην κλίμακα των 1000 εγγραφών. Προσοχή: Υπάρχει ένα φυσικό όριο στο μέγεθος κάθε SQL εντολής που μπορεί να σταλεί από έναν client στον MySQL server. Το όριο φαίνεται στην παράμετρο αρχικοποίησης max_allowed_packet. Η default τιμή είναι 4Μ τόσο για τον client mysql όσο και για τον server mysqld. Μπορεί να αλλαχθεί ως argument κατά την κλήση των server/client πχ.: mysql --max_allowed_packet=32m Το επιτρεπτό μέγεθος δεν μπορεί να ξεπεράσει το 1G. Μπορούμε να δούμε τις καταχωρημένες εγγραφές στον πίνακα Customer δίνοντας την ακόλουθη εντολή: SELECT * FROM Customer; που αποτελεί ίσως το πιο απλό ερώτημα (query) που μπορούμε να συντάξουμε. Περισσότερα για ερωτήματα και τη χρήση της SELECT FROM WHERE σε επόμενο κεφάλαιο.

3 Αν επιθυμούμε να καταχωρήσουμε μια εγγραφή χρησιμοποιώντας τις default τιμές σε κάποια πεδία αναγράφουμε στο αντίστοιχο πεδίο DEFAULT. Η επιλογή αυτή είναι ιδιαίτερα χρήσιμη για την καταχώρηση τιμών σε πεδία AUTO_INCREMENT. Για παράδειγμα η εντολή: INSERT INTO Customer VALUES (DEFAULT, ' ', DEFAULT, 'Eleni', 'Kostantinou', DEFAULT); θα καταχωρήσει μία καινούργια εγγραφή με address Unknown, dateofbirth NULL και cid την τιμή του AUTO_INCREMENT. Μπορούμε να επιλέξουμε τα πεδία στα οποία θα καταχωρηθούν τιμές, ενώ στα υπόλοιπα πεδία καταχωρείται η default τιμή. Έτσι η προηγούμενη εγγραφή θα μπορούσε να είχε εισαχθεί και ως εξής: INSERT INTO Customer (afm, name, sname) VALUES (' ', 'Eleni', 'Kostantinou'); Εισάγοντας και ενημερώνοντας Πολύ συχνά παρουσιάζεται η ανάγκη να εισάγουμε μία εγγραφή και στην περίπτωση που υπάρχει ήδη κάποια με ίδιο PRIMARY ή UNIQUE KEY η προϋπάρχουσα να αντικατασταθεί από την καινούργια. Στη MySQL μπορούμε να το επιτύχουμε είτε με την εντολή REPLACE ή με την INSERT.. ON DUPLICATE KEY UPDATE. Οι δύο αυτές εντολές δεν ανήκουν στο στάνταρ πρότυπο της SQL και ως εκ τούτου ο κώδικας που τις χρησιμοποιεί ενδέχεται να μην είναι μεταφέρσιμος. Η REPLACE είναι ισοδύναμη με την INSERT όπως παρουσιάστηκε στην προηγούμενη υποενότητα με τη διαφορά ότι σε περίπτωση σύγκρουσης σε PRIMARY ή UNIQUE KEY η υπάρχουσα εγγραφή στον πίνακα διαγράφεται και στη συνέχεια προστίθεται η καινούργια. Για παράδειγμα υποθέτοντας ότι έχουμε την εγγραφή: <4, , Unknown, Eleni, Kostantinou, NULL> και δώσουμε την εντολή: REPLACE INTO Customer (cid, address) VALUES (4, '30 Papanikoli st.'); στη θέση της προηγούμενης εγγραφής θα έχουμε: <4, NULL, 30 Papanikoli st., Unknown, Unknown, NULL> Η INSERT..ON DUPLICATE KEY UPDATE δε σβήνει την υπάρχουσα εγγραφή, αλλά την ενημερώνει. Μετά το UPDATE βάζουμε ένα ή περισσότερα πεδία και σε τι θέλουμε να αλλάξει η τιμή τους. Κάθε ανάθεση χωρίζεται με κόμμα. Για παράδειγμα έχοντας ήδη την εγγραφή: <4, NULL, 30 Papanikoli st., Unknown, Unknown, NULL> η εντολή: INSERT INTO Customer (cid, afm, name, sname, dateofbirth) VALUES (4, ' ', 'Eleni', 'Ioannou', ' ') ON DUPLICATE KEY UPDATE afm=values(afm), name=values(name), sname=values(sname), dateofbirth=values(dateofbirth); θα αλλάξει την εγγραφή σε: <4, , 30 Papanikoli st., Eleni, Ioannou, >. Η ανάθεση πχ. afm=values(afm) δηλώνει ότι το πεδίο afm στην εγγραφή που υπάρχει θα πάρει την αντίστοιχη τιμή του afm που υπάρχει στο VALUES. Δε χρειάζεται να αναφέρουμε τις τιμές που θα πάρουν όλα τα πεδία αν αυτό δεν είναι απαραίτητο. Τέλος, στην ανάθεση μπορούμε να έχουμε οποιαδήποτε επιτρεπτή έκφραση. Πριν προχωρήσουμε στην επόμενη υποενότητα θα θέλαμε να τονίσουμε τα εξής ως προς τη χρήση των REPLACE και ON DUPLICATE KEY UPDATE:

4 - Όταν χρησιμοποιούμε τη REPLACE θα πρέπει να είμαστε προσεκτικοί στην περίπτωση που υπάρχει FOREIGN KEY. Καθώς πρώτα διαγράφεται η υπάρχουσα εγγραφή ενεργοποιείται το ON DELETE και όχι το ON UPDATE. - Η χρήση και των δύο εντολών αντενδείκνυται όταν στόχος μας είναι απλά να ενημερώσουμε μία ή περισσότερες εγγραφές, κάτι το οποίο γίνεται πολύ πιο αποδοτικά με τη χρήση της UPDATE..SET..WHERE που περιγράφεται σε επόμενο κεφάλαιο. Ο αναγνώστης μπορεί να αναφερθεί στα Κεφ και Κεφ του manual της MySQL 5.7 για περισσότερες πληροφορίες σχετικά με τις εντολές REPLACE και INSERT..ON DUPLICATE KEY UPDATE Η εντολή LOAD DATA INFILE Όταν έχουμε πολλές εγγραφές προς εισαγωγή είναι προτιμητέα από άποψη απόδοσης η εισαγωγή των εγγραφών από αρχείο (αν υπάρχει) με χρήση της LOAD DATA INFILE σε σχέση με τη χρήση της INSERT. Λεπτομέρειες για τη LOAD DATA INFILE μπορεί να βρεθούν στο Κεφ του manual της MySQL. Εδώ παρουσιάζουμε τα πιο βασικά στοιχεία της σύνταξης που έχουν ως εξής: LOAD DATA [LOCAL] INFILE 'όνομα_αρχείου' [REPLACE IGNORE] INTO TABLE όνομα_πίνακα [{FIELDS COLUMNS} [TERMINATED BY 'αλφαριθμητικό'] [[OPTIONALLY] ENCLOSED BY 'χαρακτήρα'] [ESCAPED BY 'χαρακτήρα'] ] [LINES [STARTING BY 'αλφαριθμητικό'] [TERMINATED BY 'αλφαριθμητικό'] ] LOCAL: Η επιλογή σημαίνει ότι η αναζήτηση του αρχείου θα γίνει στο μηχάνημα του client, αλλιώς η αναζήτηση του αρχείου θα γίνει στη μεριά του server. 'όνομα_αρχείου': Το αρχείο πρέπει να είναι text. Μπορεί να έχουμε απλά το όνομα του αρχείου, καθώς επίσης να ορίσουμε σχετικό ή απόλυτο μονοπάτι. Αν δεν έχουμε απόλυτο μονοπάτι η αναζήτηση για το αρχείο αν πρόκειται για τον client θα γίνει ξεκινώντας από το directory στο οποίο βρίσκεται ο client, ενώ αν πρόκειται για το server από το data directory. Στα MS Windows το path δίνεται με το χαρακτήρα \ (backslash). Επειδή το \ σε αλφαριθμητικά χρησιμεύει για καθορισμό ειδικών χαρακτήρων θα πρέπει τα directories του path να ξεχωρίζουνε με διπλό backslash δηλ. \\. Σε linux η χρήση του slash / δε δημιουργεί κανένα πρόβλημα. REPLACE ή IGNORE: Το IGNORE στη LOAD DATA έχει αντίστοιχη λειτουργία με το IGNORE στην INSERT δηλ. λάθη λόγω σύγκρουσης σε κλειδιά αγνοούνται και οδηγούν σε warnings. To REPLACE στη LOAD DATA έχει ακριβώς την ίδια σημασία με την εντολή REPLACE, δηλ. σε περίπτωση σύγκρουσης σε κάποιο μοναδικό κλειδί, η υπάρχουσα εγγραφή αντικαθίσταται. Η χρήση των REPLACE και IGNORE είναι προαιρετική. FIELDS ή COLUMNS: Ισοδύναμες δηλώσεις. Ξεκινούν τη δήλωση του τρόπου με τον οποίο το αρχείο εισόδου μορφοποιεί τις στήλες (πεδία). Η δήλωση είναι προαιρετική. TERMINATED BY: Προσδιορίζεται ο τρόπος με τον οποίο διαχωρίζονται οι στήλες μεταξύ τους. H default τιμή είναι το '\t' δηλ. ο χαρακτήρας tab. ENCLOSED BY: Προσδιορίζει αν οι τιμές των πεδίων περικλείονται από κάποιο χαρακτήρα. Ο χαρακτήρας που περικλείει την τιμή αγνοείται κατά την εισαγωγή. Η προαιρετική επιλογή OPTIONALLY δηλώνει ότι κάποιες στήλες μπορεί να μην περικλείονται από τον χαρακτήρα που δηλώνεται. H default τιμή είναι το '' (δύο φορές single quotation mark) που υποδηλώνει κενό χαρακτήρα.

5 ESCAPED BY: Δηλώνει τον χαρακτήρα που χρησιμοποιείται ως ειδικός χαρακτήρας (escape) στο αρχείο. Η default τιμή είναι ο χαρακτήρας backslash που δηλώνεται ως: '\\'. LINES: Με το STARTING BY ορίζουμε το αλφαριθμητικό το οποίο δηλώνει εκκίνηση γραμμής στο αρχείο. Με το TERMINATED BY ορίζουμε το αλφαριθμητικό με το οποίο τερματίζεται κάθε γραμμή. Η default τιμή για την αρχή γραμμής είναι το '' (δύο φορές single quotation mark) και για το τέλος το '\n'. Παράδειγμα χρήσης: Έστω ότι έχω σε MS Windows ένα CSV (Comma Separated Values) αρχείο Customer.txt στο path C:\Users\luke\Desktop\kallipos\ με τις ακόλουθες εγγραφές: 1," ","56 Baltetsiou st.","kostas","kostantinou"," " 2," ","107 Diakou st.","eleni","kostantinou"," " 3," ","12 Rodon st.","maria","papantoniou"," " 4," ","30 Papanikoli st.","eleni","ioannou"," " και επιθυμούμε να φορτώσουμε τις εγγραφές στον πίνακα Customer υποθέτοντας ότι ο πίνακας δεν έχει καμία εγγραφή. Σημείωση: Μπορείτε να σβήσετε τις εγγραφές του Customer με την εντολή: DELETE FROM Customer; Περισσότερα για την εντολή DELETE σε επόμενο κεφάλαιο. Η φόρτωση του αρχείου μπορεί να γίνει με την εντολή: LOAD DATA LOCAL INFILE 'C:\\Users\\luke\\Desktop\\kallipos\\Customer.txt' INTO TABLE Customer COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n'; Σημείωση: Σε Linux κάθε γραμμή ενός text αρχείου τελειώνει με '\n'. Στα MS Windows τελειώνει με '\r\n' εκτός και αν το αρχείο έχει δημιουργηθεί με το Notepad. Αν η πρώτη εγγραφή του αρχείου ήταν η: 1," ","56, Baltetsiou st.","kostas","kostantinou"," " η παραπάνω εντολή θα το φόρτωνε κανονικά δηλ. το κόμμα στη διεύθυνση δε θα δημιουργούσε πρόβλημα. Αντίθετα αν παραλείπονταν τα διπλά quotes η φόρτωση δε θα ήταν σωστή καθώς θα μεταφράζονταν το: 56, Baltetsiou st. σαν τιμές σε δύο πεδία. Για να μπορέσω να φορτώσω την εγγραφή: 1, ,56, Baltetsiou st.,kostas,kostantinou, θα πρέπει το ',' στη διεύθυνση να δηλωθεί ότι είναι μέρος της διεύθυνσης και όχι τέλος πεδίου. Αυτό γίνεται βάζοντας τον χαρακτήρα διαφυγής (escape) μπροστά: 1, ,56\, Baltetsiou st.,kostas,kostantinou, Αν ο escape χαρακτήρας που χρησιμοποιήθηκε στο αρχείο ήταν άλλος πχ. το '#' τότε η εντολή φόρτωσης θα έπρεπε να είναι η: LOAD DATA LOCAL INFILE 'C:\\Users\\luke\\Desktop\\kallipos\\Customer.txt' INTO TABLE Customer COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '#' LINES TERMINATED BY '\r\n'; Αντίστοιχη μέριμνα πρέπει να ληφθεί όταν σε πεδίο που περικλείεται από " θέλουμε να περιλάβουμε το χαρακτήρα: ". Τέλος αν στην τιμή ενός πεδίου στο αρχείο εγγραφών θέλουμε να περιλάβουμε τον escape χαρακτήρα, πρέπει να αναγράφεται ο χαρακτήρας δύο φορές πχ. η εγγραφή: 1, ,56#, ##Baltetsiou st.##,kostas,kostantinou, θα φορτωθεί σαν:

6 cid afm address name sname dateofbirth , #Baltetsiou st.# Kostas Kostantinou Εντολές επισκόπησης πινάκων Σε αυτήν την κατηγορία περιλαμβάνονται εντολές που ξεκινούν με τη λέξη SHOW. Για την περιγραφή των εντολών θα χρησιμοποιήσουμε ως παράδειγμα τον πίνακα Customer. SHOW TABLES; Εμφανίζει τους πίνακες στη ΒΔ. SHOW TABLE STATUS; Εμφανίζει τους πίνακες της ΒΔ μαζί με επιπλέον πληροφορίες κατάστασης για κάθε πίνακα που αφορούν πχ. το πλήθος των εγγραφών, το μέγεθος των εγγραφών, χρόνο δημιουργίας, τροποποίησης κλπ. SHOW TABLE STATUS LIKE 'Customer'; Ίδια όπως η SHOW TABLE STATUS με τη διαφορά ότι επιστρέφει τις πληροφορίες κατάστασης μόνο για τον πίνακα Customer. SHOW CREATE TABLE Customer; Εμφανίζει τον τρόπο με τον οποίο έχει δημιουργηθεί ο πίνακας Customer. Αν ο πίνακας έχει φτιαχτεί όπως περιγράφηκε στο Κεφ. 3 τότε το αποτέλεσμα της εντολής θα μοιάζει με: customer CREATE TABLE `customer` ( `cid` int(11) NOT NULL AUTO_INCREMENT, `afm` char(10) DEFAULT NULL, `address` varchar(50) DEFAULT 'Unknown', `name` char(20) NOT NULL DEFAULT 'Unknown', `sname` char(20) NOT NULL DEFAULT 'Unknown', `dateofbirth` date DEFAULT NULL, PRIMARY KEY (`cid`), UNIQUE KEY `afm` (`afm`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 Παρατηρήστε ότι στην τελευταία γραμμή της CREATE TABLE υπάρχουν 3 ορίσματα που δεν είχαν περιγραφεί στο Κεφ. 3: ENGINE: δηλώνει τον τρόπο με τον οποίο αποθηκεύεται ο πίνακας. Το default engine που χρησιμοποιείται είναι το InnoDB. Άλλο διαδεδομένο είναι το MyISAM. Περισσότερα για τους μηχανισμούς αποθήκευσης σε επόμενο κεφάλαιο. AUTO_INCREMENT: η τρέχουσα τιμή του. DEFAULT CHARSET: το σετ χαρακτήρων που χρησιμοποιείται. Το default είναι το UTF8. Είναι προφανές ότι στην αντίστοιχη CREATE TABLE δήλωση μπορούμε να επιλέξουμε άλλες τιμές στις παραπάνω 3 επιλογές. Για παράδειγμα για να ορίσουμε τον πίνακα Customer με τιμή εκκίνησης του AUTO_INCREMENT το 1000 και μηχανισμό αποθήκευσης το MyISAM θα δίναμε: CREATE TABLE Customer ( ) ENGINE=MyISAM AUTO_INCREMENT=5; SHOW [FULL] COLUMNS FROM Customer; Εμφανίζει τα πεδία του Customer και πληροφορίες δημιουργίας για αυτά (τύπος, αν επιτρέπει NULL, αν είναι PRIMARY ή UNIQUE KEY, τη default τιμή, αν είναι AUTO_INCREMENT). Με την επιλογή FULL εμφανίζονται επιπλέον πληροφορίες για τα πεδία πχ. δικαιώματα κλπ.

7 SHOW [FULL] COLUMNS FROM Customer LIKE 'address'; Ίδια με την προηγούμενη εντολή μόνο που θα επιστραφούν στοιχεία μόνο για το πεδίο address. EXPLAIN Customer; Ίδια με τη SHOW COLUMNS FROM Customer. Αντί για τη λέξη EXPLAIN μπορεί να χρησιμοποιηθούν ισοδύναμα τα DESCRIBE και DESC. Να σημειωθεί ότι η εντολή EXPLAIN μπορεί να χρησιμοποιηθεί για να πάρουμε πληροφορίες σχετικά με κάποιο ερώτημα πχ. EXPLAIN SELECT * FROM Customer; Η συγκεκριμένη χρήση δε θα μας απασχολήσει στα πλαίσια του εργαστηρίου. Για περισσότερες πληροφορίες σχετικά με τη σύνταξη και χρήση της εντολής ο αναγνώστης μπορεί να ανατρέξει στο Κεφ του manual της MySQL5.7. {EXPLAIN DESCRIBE DESC} Customer address; Ίδια με την παραπάνω μόνο που επιστρέφει πληροφορίες μόνο για το πεδίο address Η εντολή ALTER TABLE Έχοντας ορίσει έναν πίνακα μπορούμε να αλλάξουμε τα χαρακτηριστικά του με την εντολή ALTER TABLE. Η βασική σύνταξη και λειτουργικότητα της εντολής είναι το αντικείμενο αυτής της υποενότητας. Για περισσότερες πληροφορίες ο αναγνώστης μπορεί να ανατρέξει στο Κεφ του manual της MySQL5.7. ALTER TABLE όνομα_πίνακα είδος_αλλαγής; Ως προς το είδος_αλλαγής ξεχωρίζουμε τις εξής τρεις: ADD: Για να προσθέσουμε στον πίνακα. Κύριες επιτρεπτές προσθέσεις: πεδίο, PRIMARY, UNIQUE ή FOREIGN KEY. DROP: Για να αφαιρέσουμε από τον πίνακα. Κύριες επιτρεπτές αφαιρέσεις: πεδίο, PRIMARY, UNIQUE ή FOREIGN KEY. CHANGE: Για να αλλάξουμε τον ορισμό πεδίου. Παραδείγματα χρήσης ALTER TABLE Customer DROP name; Προαιρετικά θα μπορούσε να γραφεί DROP COLUMN name. Διαγράφει το πεδίο name από τον πίνακα εφόσον δεν παραβιάζεται ξένο κλειδί. ALTER TABLE Phones DROP FOREIGN KEY phones_ibfk_1; Για να διαγράψουμε περιορισμό foreign key, θα πρέπει να διαγραφεί με το όνομα του περιορισμού. Δίνοντας SHOW CREATE TABLE Phones; μπορούμε να δούμε ότι ο περιορισμός ξένου κλειδιού για το cid έχει το όνομα phones_ibfk_1. Γενικά όταν ορίζουμε περιορισμούς ξένου κλειδιού σε πίνακα φτιαγμένο στο ENGINE=InnoDB που είναι το default, η ονομασία των περιορισμών είναι της μορφής: όνομαπίνακα_ibfk_αύξοναριθμόςπεριορισμού. Το ibfk είναι συντομογραφία για το InnoDB foreign key. Έτσι αν είχα δύο FOREIGN KEY στον πίνακα Phones, τα ονόματα των περιορισμών θα ήταν phones_ibfk_1 και phones_ibfk_2. ALTER TABLE Phones DROP PRIMARY KEY; Διαγράφει το πρωτεύον κλειδί στον πίνακα Phones. Το πεδίο που ήταν πρωτεύον κλειδί (cid) εξακολουθεί να υπάρχει απλά δεν ορίζεται πλέον σαν πρωτεύον. ALTER TABLE Customer DROP KEY afm; Διαγράφει τον περιορισμό με όνομα afm. Στη δημιουργία του πίνακα Customer θέσαμε το afm να είναι UNIQUE KEY. Ο αντίστοιχος περιορισμός είναι το ίδιο το όνομα του πεδίου (μπορoύμε να το δούμε δίνοντας SHOW CREATE TABLE). ALTER TABLE Customer ADD COLUMN name CHAR(20) NOT NULL DEFAULT 'Unknown'; Υποθέτοντας ότι το name είχε σβηστεί από τον πίνακα Customer, το ξαναδημιουργούμε δίνοντας τη δήλωση του πεδίου όπως θα κάναμε στην CREATE TABLE. Η λέξη COLUMN στην παραπάνω εντολή είναι προαιρετική. Το πεδίο δημιουργείται και η σειρά που

8 καταλαμβάνει είναι η τελευταία. Αν θέλαμε να είναι πρώτο στον πίνακα θα μπορούσαμε να το είχαμε δημιουργήσει με την εντολή: ALTER TABLE Customer ADD COLUMN name CHAR(20) NOT NULL DEFAULT 'Unknown' FIRST; ενώ αν θέλαμε να καταλάμβανε την ίδια σειρά με αυτήν που είχε στην CREATE TABLE της προηγούμενης υποενότητας θα δίναμε: ALTER TABLE Customer ADD COLUMN name CHAR(20) NOT NULL DEFAULT 'Unknown' AFTER address; ALTER TABLE Phones ADD PRIMARY KEY (cid); Δηλώνει στον πίνακα Phones ότι PRIMARY KEY είναι το cid. Το/τα πεδία στη δήλωση του PRIMARY KEY πρέπει να υπάρχουν στον πίνακα και να μην υπάρχει δηλωμένο άλλο PRIMARY KEY. ALTER TABLE Customer ADD UNIQUE KEY (afm); Δηλώνει ως UNIQUE KEY το afm στον πίνακα Customer. Το/τα πεδία που δηλώνονται ως UNIQUE KEY πρέπει να υπάρχουν στον πίνακα. Αν είναι ήδη δηλωμένο το afm ως UNIQUE KEY τότε δημιουργείται δεύτερος περιορισμός με όνομα afm_2 και δίνεται warning. Σε μελλοντικές εκδόσεις οι ταυτόσημες επαναδηλώσεις αναμένεται να απαγορευτούν. ALTER TABLE Phones ADD FOREIGN KEY (cid) REFERENCES Customer (cid) ON UPDATE CASCADE ON DELETE RESTRICT; Δηλώνει FOREIGN KEY στον πίνακα phones ακολουθώντας το συντακτικό που παρουσιάστηκε στο Κεφ. 3. Αν είναι ήδη δηλωμένο το cid ως FOREIGN KEY θα δούμε να δημιουργείται δεύτερος ίδιος περιορισμός χωρίς warning. ALTER TABLE Customer CHANGE sname surname CHAR(30) NOT NULL DEFAULT 'Unknown'; Η σύνταξη του CHANGE έχει ως εξής: CHANGE υπάρχον_πεδίο νέος_ορισμός_πεδίου. Στο νέο_ορισμό_πεδίου ακολουθούμε το συντακτικό που παρουσιάστηκε στο Κεφ. 3 για τον ορισμό πεδίων στην CREATE TABLE. Η εντολή του παραδείγματος αλλάζει το πεδίο sname του Customer σε surname, αλλάζοντας ταυτόχρονα και τον τύπο του από CHAR(20) σε CHAR(30). Προσοχή: Αν θέλαμε απλά να αλλάξουμε το όνομα του πεδίου sname και όχι τον τύπο του θα ήταν λάθος να γράφαμε: ALTER TABLE Customer CHANGE sname surname; Η CHANGE περιμένει νέα δήλωση πεδίου όχι μόνο το νέο όνομα. Αν θέλουμε να αλλάξουμε τον τύπο χωρίς να αλλάξουμε το όνομα μπορούμε χρησιμοποιώντας το ίδιο όνομα με το υπάρχον στο νέο_ορισμό_πεδίου. Για παράδειγμα: ALTER TABLE Customer CHANGE sname sname CHAR(30) NOT NULL DEFAULT 'Unknown'; Ακολουθούν κάποια επιπλέον είδη_αλλαγής πέραν των ADD, DROP, CHANGE. Επιλογές Πίνακα: Αναθέτουμε νέα τιμή σε κάποια από τις επιλογές πίνακα όπως ENGINE, AUTO_COMMIT κλπ. Για παράδειγμα η ALTER TABLE Phones ENGINE=MyISAM; αλλάζει τον τρόπο αποθήκευσης του πίνακα Phones, ενώ ή ALTER TABLE Customer AUTO_COMMIT=1000; αλλάζει την τιμή του AUTO_COMMIT στον πίνακα Customer. Για περισσότερες επιλογές πίνακα ο αναγνώστης μπορεί να δει το κομμάτι table_option στη δήλωση της CREATE TABLE (Κεφ του manual). RENAME: Μπορούμε να μετονομάσουμε έναν πίνακα, πχ.: ALTER TABLE Customer RENAME OurCustomers; ή έναν περιορισμό UNIQUE KEY πχ.: ALTER TABLE Customer RENAME afm TO theafm; Για τη μετονομασία πίνακα υπάρχει και η ξεχωριστή (έξω από την ALTER TABLE) εντολή RENAME TABLE (Κεφ του manual). Για παράδειγμα για να αλλάξω το όνομα του Customer σε OurCustomers θα μπορούσα εναλλακτικά να δώσω την εντολή: RENAME TABLE Customer TO OurCustomers;

9 Στην εντολή RENAME TABLE μπορώ να έχω πολλές μετονομασίες πινάκων κάθε μια χωρισμένη με κόμμα πχ.: RENAME TABLE Customer TO OurCustomers, Phones TO OurPhones;

10 4.2 Παράδειγμα Εργαστηριακής Άσκησης Εκφώνηση: Στην Βάση Δεδομένων του ΑΕΙ/ΑΤΕΙ της εργαστηριακής άσκησης 3 θα πρέπει να εκτελέσετε τις ακόλουθες ενέργειες: 1. Δείτε τους διαθέσιμους πίνακες με χρήση της SHOW TABLES. 2. Δείτε την δομή του κάθε πίνακα με χρήση της DESC. 3. Δείτε την εντολή CREATE που δημιουργεί τον κάθε πίνακα με χρήση της SHOW CREATE TABLE. 4. Καταχωρήστε 5 φοιτητές, 5 μαθήματα, 5 καθηγητές, 5 βαθμολογίες, 5 τηλέφωνα και ένα προαπαιτούμενο μάθημα. 5. Με χρήση την εντολής LOAD DATA INFILE φορτώστε δεδομένα στο σχήμα σας χρησιμοποιώντας αρχεία που φέρουν το όνομα του πίνακα και την επέκταση txt. 6. Δημιουργήστε έναν ακόμη πίνακα Tesis στον οποίο θα αποθηκεύονται οι διπλωματικές εργασίες κάθε φοιτητή. Ο πίνακας θα έχει κωδικό εργασίας (SID), τίτλο, κωδικό φοιτητή και επιβλέποντα καθηγητή. 7. Μετονομάστε τον πίνακα Τesis σε Τhesis. 8. Προσθέστε μία επιπλέον στήλη με την ημερομηνία έναρξης της διπλωματικής εργασίας με χρήση της ALTER TABLE. 9. Προσθέστε στον πίνακα Student τα ακόλουθα πεδία: , όνομα και κωδικό πρόσβασης στα υπολογιστικά συστήματα, καθώς και το οικογενειακό εισόδημα (πιθανώς για να υπολογιστεί το στεγαστικό επίδομα). 10. Αλλάξτε τον τύπο της ηλικίας από ακέραιο σε αλφαριθμητικό. 11. Αλλάξτε τον τύπο του κωδικού σε char(10). 12. Διαγράψτε την στήλη των κωδικών. 13. Εισάγετε πάλι τη στήλη των κωδικών με τύπο varchar(20). 14. Εξάγετε το σχήμα university στο αρχείο University.sql με χρήση του προγράμματος MYSQLDUMP. 15. Εισαγωγή ενός σχήματος πχ. University.sql με χρήση του προγράμματος MYSQL (MySQL Workbench). Ζητούμενα: Εκτέλεση των κατάλληλων εντολών SQL για την επίτευξη των διαφόρων λειτουργιών To σχεσιακό σχήμα της εργαστηριακής άσκησης 3 (Κεφ. 3.2) είναι το ακόλουθο: Student (ΑΜ, Firstname, Lastname, YearOfStudy) Course (Cid, Title, KK) Professor (KK, Firstname, Lastname) Exam (ΑΜ, Cid, Date, Grade). Requires (Cid1, Cid2) Telephone (AM, TelphoneNumber) Στη συνέχεια δίνεται ο κώδικας SQL δημιουργίας της βάσης δεδομένων και των πινάκων. CREATE SCHEMA `university`; USE `university`;

11 -- Table `university`.`student` CREATE TABLE `university`.`student` ( `AM` INT NOT NULL AUTO_INCREMENT, `Firstname` VARCHAR(45) NOT NULL, `Lastname` VARCHAR(45) NOT NULL, `YearOfStudy` INT NOT NULL, PRIMARY KEY (`AM`) ); -- Table `university`.`professor` CREATE TABLE `university`.`professor` ( `KK` INT NOT NULL AUTO_INCREMENT, `Firstname` VARCHAR(45) NOT NULL, `Lastname` VARCHAR(45) NOT NULL, PRIMARY KEY (`KK`) ); -- Table `university`.`course` CREATE TABLE `university`.`course` ( `CID` INT NOT NULL AUTO_INCREMENT, `Title` VARCHAR(45) NOT NULL, `KK` INT NOT NULL, PRIMARY KEY (`CID`), CONSTRAINT `fk_course_professor` FOREIGN KEY (`KK`) REFERENCES `university`.`professor` (`KK`) ON DELETE NO ACTION ON UPDATE NO ACTION ); -- Table `university`.`exam` CREATE TABLE `university`.`exam` ( `AM` INT NOT NULL, `Cid` INT NOT NULL, `Date` DATE NOT NULL, `Grade` FLOAT NOT NULL, PRIMARY KEY (`AM`, `Cid`, `Date`), CONSTRAINT `fk_student_exam` FOREIGN KEY (`AM`) REFERENCES `university`.`student` (`AM`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_exam_course` FOREIGN KEY (`Cid`) REFERENCES `university`.`course` (`CID`) ON DELETE NO ACTION ON UPDATE NO ACTION ); -- Table `university`.`telephone` CREATE TABLE `university`.`telephone` ( `AM` INT NOT NULL, `TelephoneNumber` VARCHAR(10) NOT NULL, PRIMARY KEY (`TelephoneNumber`, `AM`),

12 CONSTRAINT `fk_telephone_student` FOREIGN KEY (`AM`) REFERENCES `university`.`student` (`AM`) ON DELETE NO ACTION ON UPDATE NO ACTION ); -- Table `university`.`requires` CREATE TABLE `university`.`requires` ( `Cid1` INT NOT NULL, `Cid2` INT NOT NULL, PRIMARY KEY (`Cid1`, `Cid2`), CONSTRAINT `fk_coursea_requires` FOREIGN KEY (`Cid1`) REFERENCES `university`.`course` (`CID`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_requires_courseb` FOREIGN KEY (`Cid2`) REFERENCES `university`.`course` (`CID`) ON DELETE NO ACTION ON UPDATE NO ACTION ); Ζητούμενο 1: Δείτε τους διαθέσιμους πίνακες με χρήση της SHOW TABLES. Δίνουμε: SHOW TABLES; Παράδειγμα αποτελέσματος φαίνεται στην Εικόνα 4.1. Εικόνα 4.1: Η εντολή SHOW TABLES.

13 Ζητούμενο 2: Δείτε την δομή του κάθε πίνακα με χρήση της DESC. Δίνουμε: DESC Student; DESC Professor; DESC Course; DESC Telephone; DESC Exam; DESC Requires; Παράδειγμα αποτελέσματος για τον πίνακα Student φαίνεται στην Εικόνα 4.2. Εικόνα 4.2: Η εντολή DESC. Ζητούμενο 3: Δείτε την εντολή που δημιουργεί τον κάθε πίνακα με χρήση της SHOW CREATE TABLE. Δίνουμε: SHOW CREATE TABLE Student; SHOW CREATE TABLE Professor; SHOW CREATE TABLE Course; SHOW CREATE TABLE Telephone; SHOW CREATE TABLE Exam; SHOW CREATE TABLE Requires; Παράδειγμα αποτελέσματος για τον πίνακα Exam φαίνεται στην Εικόνα 4.3.

14 Εικόνα 4.3: Η εντολή SHOW CREATE TABLE. Ζητούμενο 4: Καταχωρήστε 5 φοιτητές, 5 μαθήματα, 5 καθηγητές, 5 βαθμολογίες, 5 τηλέφωνα και ένα προαπαιτούμενο μάθημα. INSERT INTO Student(Firstname, Lastname, YearOfStudy) VALUES ( Alexandros, Theocharis, 3 ); INSERT INTO Student(Firstname, Lastname, YearOfStudy) VALUES ( Maria, Karagianni, 2 ); INSERT INTO Student(Firstname, Lastname, YearOfStudy) VALUES ( Eleni, Karaxaliou, 4 ); INSERT INTO Student(Firstname, Lastname, YearOfStudy) VALUES ( Kosmas, Pitas, 4 ); INSERT INTO Student(Firstname, Lastname, YearOfStudy) VALUES ( Nikos, Kouris, 2 ); INSERT INTO Course(Title, KK) VALUES ( Baseis Dedomenwn, 1); INSERT INTO Course(Title, KK) VALUES ( Domes Dedomenwn, 2); INSERT INTO Course(Title, KK) VALUES ( Programmatismos I, 3); INSERT INTO Course(Title, KK) VALUES ( Programmatismos II, 4); INSERT INTO Course(Title, KK) VALUES ( Texnologies Diadiktuou, 5); INSERT INTO Professor(Firstname, Lastname) VALUES ( Panos, Tzimas ); INSERT INTO Professor(Firstname, Lastname) VALUES ( Eleni, Andriopoulou ); INSERT INTO Professor(Firstname, Lastname)

15 VALUES ( Nikos, Theocharopoulos ); INSERT INTO Professor(Firstname, Lastname) VALUES ( Loukas, Mpakos ); INSERT INTO Professor(Firstname, Lastname) VALUES ( Eleni, Anagnwstopoulou ); INSERT INTO Exam(AM, Cid, Date, Grade) VALUES (1, 3, , 6); INSERT INTO Exam(AM, Cid, Date, Grade) VALUES (2, 4, , 8); INSERT INTO Exam(AM, Cid, Date, Grade) VALUES (3, 5, , 3); INSERT INTO Exam(AM, Cid, Date, Grade) VALUES (4, 4, , 5); INSERT INTO Exam(AM, Cid, Date, Grade) VALUES (5, 4, , 2); INSERT INTO Telephone(AM, TelephoneNumber) VALUES (1, ); INSERT INTO Telephone(AM, TelephoneNumber)) VALUES (2, ); INSERT INTO Telephone(AM, TelephoneNumber)) VALUES (3, ); INSERT INTO Telephone(AM, TelephoneNumber)) VALUES (4, ); INSERT INTO Telephone(AM, TelephoneNumber)) VALUES (5, ); INSERT INTO Requires(Cid1, Cid2) VALUES (3, 4); Θεωρούμε ότι το μάθημα Programmatismos II έχει προαπαιτούμενο το μάθημα με τίτλο Programmatismos I. Ζητούμενο 5: Με χρήση την εντολής LOAD DATA INFILE φορτώστε δεδομένα στο σχήμα σας χρησιμοποιώντας αρχεία που φέρουν το όνομα του πίνακα και την επέκταση txt. Ένας δεύτερος τρόπος όπως εξηγήθηκε για να εισάγουμε τιμές σε έναν πίνακα είναι χρησιμοποιώντας ένα αρχείο στο οποίο έχουμε γράψει τις τιμές για τα πεδία, που το φορτώνουμε στον πίνακα με την εντολή LOAD DATA INFILE. Δίνουμε λοιπόν: LOAD DATA INFILE student.txt INTO TABLE Student; LOAD DATA INFILE course.txt INTO TABLE Course; LOAD DATA INFILE professor.txt INTO TABLE Professor; LOAD DATA INFILE exam.txt INTO TABLE Exam; Ζητούμενο 6: Δημιουργήστε έναν ακόμη πίνακα Tesis στον οποίο θα αποθηκεύονται οι διπλωματικές εργασίες κάθε φοιτητή. Ο πίνακας θα έχει κωδικό εργασίας (SID), τίτλο, κωδικό φοιτητή και επιβλέποντα καθηγητή.

16 Στον πίνακα πρωτεύον κλειδί θα είναι το SID ενώ οι κωδικοί φοιτητή και καθηγητή θα είναι ξένα κλειδιά. Ακολουθεί η δημιουργία του πίνακα: -- Table `university`.`tesis` CREATE TABLE `university`.`tesis` ( `SID` INT NOT NULL AUTO_INCREMENT, `Title` VARCHAR(45) NOT NULL, `AM` INT NOT NULL, `KK` INT NOT NULL, PRIMARY KEY (`SID`), CONSTRAINT `fk_tesis_student` FOREIGN KEY (`AM`) REFERENCES `university`.`student` (`AM`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_tesis_professor` FOREIGN KEY (`KK`) REFERENCES `university`.`professor` (`KK`) ON DELETE NO ACTION ON UPDATE NO ACTION ); Ζητούμενο 7: Μετονομάστε τον πίνακα Τesis σε Τhesis. Δίνουμε: RENAME TABLE Tesis TO Thesis; Ζητούμενο 8: Προσθέστε μία επιπλέον στήλη με την ημερομηνία έναρξης της διπλωματικής εργασίας με χρήση της ALTER TABLE. Δίνουμε: ALTER TABLE Thesis ADD Arxiki_Date DATE; Ζητούμενο 9: Προσθέστε στον πίνακα Student τα ακόλουθα πεδία: , όνομα και κωδικό πρόσβασης στα υπολογιστικά συστήματα, καθώς και το οικογενειακό εισόδημα (πιθανώς για να υπολογιστεί το στεγαστικό επίδομα). Δίνουμε: ALTER TABLE Student ADD ( varchar(45), username_system varchar(45), insert_code varchar(20) not null, family_income int(20)); Ζητούμενο 10: Αλλάξτε τον τύπο της ηλικίας από ακέραιο σε αλφαριθμητικό. Δίνουμε: ALTER TABLE Student MODIFY YearOfStudy varchar(45); Ζητούμενο 11: Αλλάξτε τον τύπο του κωδικού σε char(10). Δίνουμε: ALTER TABLE Student MODIFY AM char(10);

17 Εικόνα 4.4: Τρέχοντας την εντολή εμφανίζεται λάθος, καθώς το AM είναι ξένο κλειδί σε άλλους πίνακες. Τρέχοντας την εντολή επιστρέφει λάθος (Error Code: 1833), όπως παρατηρούμε στην Εικόνα 4.4. Αυτό συμβαίνει διότι το ΑΜ χρησιμοποιείται ως ξένο κλειδί στον πίνακα Exam, Telephone και Thesis. Για να τρέξουμε την εντολή πρέπει πρώτα να βγάλουμε το ΑΜ ως ξένο κλειδί (μαζί με τους περιορισμούς) από όλους τους πίνακες που συμμετέχει ως ξένο κλειδί, Εικόνες , να εκτελέσουμε την εντολή(προσοχή: Την εντολή «ALTER TABLE Student MODIFY AM char(10);» την εκτελούμε για όλους τους πίνακες που εμφανίζεται το AM, όχι μόνο για τον Student, Εικόνες ) και να ξαναβάλουμε το ΑΜ ως ξένο κλειδί στους πίνακες που υπήρχε, Εικόνες Εικόνα 4.5: Αφαιρούμε το ξένο κλειδί AM από τον πίνακα Exam. Εικόνα 4.6: Αφαιρούμε το ξένο κλειδί AM από τον πίνακα Telephone.

18 Εικόνα 4.7: Αφαιρούμε το ξένο κλειδί AM από τον πίνακα Thesis. Εικόνα 4.8: Τρέχουμε την εντολή για τον πίνακα Student. Εικόνα 4.9: Τρέχουμε την εντολή για τον πίνακα Exam.

19 Εικόνα 4.10: Τρέχουμε την εντολή για τον πίνακα Telephone. Εικόνα 4.11: Τρέχουμε την εντολή για τον πίνακα Thesis. Εικόνα 4.12: Επαναφορά του ξένου κλειδιού AM στον πίνακα Exam.

20 Εικόνα 4.13: Επαναφορά του ξένου κλειδιού AM στον πίνακα Telephone. Εικόνα 4.14: Επαναφορά του ξένου κλειδιού AM στον πίνακα Thesis. Ζητούμενο 12: Διαγράψτε την στήλη των κωδικών. Δίνουμε: ALTER TABLE Student DROP AM; Ακολουθείτε την ίδια διαδικασία με το προηγούμενο ερώτημα. Ζητούμενο 13: Εισάγετε πάλι τη στήλη των κωδικών με τύπο varchar(20). Δίνουμε: ALTER TABLE Student ADD AM varchar(20); Ζητούμενο 14: Εξάγετε το σχήμα university στο αρχείο University.sql με χρήση του προγράμματος MYSQLDUMP.

21 Εικόνα 4.15: Εξαγωγή σχήματος university στο αρχείο University.sql. Εικόνα 4.16: Επιτυχής εξαγωγή σχήματος. Ζητούμενο 15: Εισαγωγή ενός σχήματος πχ. University.sql με χρήση του προγράμματος MYSQL (MySQL Workbench). Εικόνα 4.17: Εισαγωγή σχήματος.

22 4.3 Άλυτες Εργαστηριακές Ασκήσεις Άσκηση 1 Δημιουργήστε μια Βάση Δεδομένων για μια επιχείρηση: Κάθε διευθυντής έχει Όνομα, Επώνυμο, Έτη εμπειρίας και . Η εταιρεία έχει Επωνυμία, Έτος ίδρυσης και Διεύθυνση. Ο εργαζόμενος έχει Όνομα, Επώνυμο, Προϋπηρεσία και Ημερομηνία πρόσληψης. Μια εταιρεία μπορεί να έχει μόνο έναν διευθυντή και πολλούς εργαζομένους. Κάθε εργαζόμενος δουλεύει σε μία και μόνο εταιρεία. Ζητούμενα: 1. Εξαγωγή των βασικών οντοτήτων του προβλήματος, των χαρακτηριστικών της κάθε οντότητας καθώς και των συσχετίσεων μεταξύ τους. 2. Σχεδιασμός του διαγράμματος Οντοτήτων-Συσχετίσεων (ER diagram). 3. Δημιουργήστε τους πίνακες του παραπάνω προβλήματος. 4. Εισάγετε από 5 εγγραφές σε κάθε πίνακα. 5. Προσθέστε στον πίνακα Εταιρεία το πεδίο Αριθμός υπαλλήλων. 6. Δημιουργήστε τον πίνακα Promitheutis, με χαρακτηριστικά , Επώνυμο και Προϋπηρεσία. 7. Αλλάξτε το όνομα του πίνακα σε Promitheftis. Άσκηση 2 Θέλουμε να φτιάξουμε μια βάση δεδομένων που να περιέχει όλες τις ταινίες που παίχτηκαν το 2015, τους σκηνοθέτες τους και τους θεατές που τις παρακολούθησαν. Κάθε ταινία θα έχει τίτλο, πρωταγωνιστή, σκηνοθέτη και αριθμό θεατών που την παρακολούθησε. Κάθε σκηνοθέτης θα έχει ονοματεπώνυμο, ηλικία και αριθμό ταινιών που έχει σκηνοθετήσει. Ο θεατής θα έχει username, βαθμολογία και αριθμό ταινιών που έχει παρακολουθήσει. Υποθέτουμε ότι κάθε ταινία έχει ένα σκηνοθέτη. Ζητούμενα: 1. Δημιουργήστε το διάγραμμα E-R της βάσης δεδομένων. 2. Δημιουργήστε τη βάση δεδομένων. 3. Δημιουργήστε τους πίνακες του προβλήματος. 4. Εισάγετε από 5 εγγραφές σε κάθε πίνακα. 5. Αλλάξτε τον τύπο δεδομένων για το χαρακτηριστικό username σε varchar(8). 6. Μετονομάστε τον πίνακα Theatis σε Viewer. 7. Δημιουργήστε τον πίνακα Krites, με χαρακτηριστικά kritisid, βαθμολογία και ηλικία. Άσκηση 3 Δημιουργήστε μια βάση δεδομένων για ένα τουρνουά τένις. Για αυτή τη βάση δεδομένων θέλουμε να κρατάμε στοιχεία για τους παίκτες, το τουρνουά και τα αποτελέσματα. Για κάθε παίκτη θέλουμε το ονοματεπώνυμο, την ηλικία και έτος νίκης σε κάθε τουρνουά. Για κάθε

23 τουρνουά θέλουμε την επωνυμία (Roland Garros, US Open, Australian Open), τη χώρα που διεξάγεται, έτος ίδρυσης και έτος διεξαγωγής. Για τα αποτελέσματα θέλουμε να κρατάμε το νικητή του κάθε τουρνουά και πόσα σετ πήρε ο ηττημένος. Ζητούμενα: 1. Δημιουργήστε το διάγραμμα E-R της βάσης δεδομένων. 2. Δημιουργήστε τη βάση δεδομένων. 3. Δημιουργήστε τους πίνακες του προβλήματος. 4. Εισάγετε από 5 εγγραφές σε κάθε πίνακα. 5. Προσθέστε στον πίνακα τουρνουά το νικητή για το έτος Αλλάξτε τον τύπο δεδομένων για το επώνυμο του παίκτη σε varchar(40). 7. Δημιουργήστε τον πίνακα Kritis, με χαρακτηριστικά ονοματεπώνυμο και εμπειρία. Κάθε κριτής μπορεί να συμμετέχει μόνο σε ένα τουρνουά το χρόνο. 8. Διαγράψτε από τον πίνακα Kritis τη στήλη εμπειρία. 9. Προσθέστε στον πίνακα Kritis το χαρακτηριστικό ηλικία.

24 Βιβλιογραφία/Αναφορές R. Elmasri, S.B. Navathe "Θεμελιώδεις Αρχές Συστημάτων ΒΔ - 4η Έκδοση". Κεφάλαιο 8. R. Ramakrishnan and J. Gehrke Database Management Systems (3 ed.). McGraw- Hill, Inc., New York, NY, USA. Κεφάλαιο 5. Data Definition. Data Manipulation. LOAD DATA. ALTER TABLE. DELETE FROM TABLE. UPDATE TABLE. INSERT. ON DELETE, ON UPDATE.

Κεφάλαιο 11 Ενημέρωση Δεδομένων και Συνολική Επισκόπηση Ερωτημάτων

Κεφάλαιο 11 Ενημέρωση Δεδομένων και Συνολική Επισκόπηση Ερωτημάτων Κεφάλαιο 11 Ενημέρωση Δεδομένων και Συνολική Επισκόπηση Ερωτημάτων Σύνοψη Στο παρόν κεφάλαιο θα παρουσιασθούν οι εντολές UPDATE και DELETE για ενημέρωση και διαγραφή εγγραφών σε έναν ή περισσότερους πίνακες.

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

Κεφάλαιο 3 Δημιουργία Πινάκων Data Definition Language (DDL)

Κεφάλαιο 3 Δημιουργία Πινάκων Data Definition Language (DDL) Κεφάλαιο 3 Δημιουργία Πινάκων Data Definition Language (DDL) Σύνοψη Στο παρόν κεφάλαιο θα παρουσιασθούν βασικά στοιχεία του Data Definition Language (DDL). Πιο συγκεκριμένα θα παρουσιασθεί ο τρόπος δημιουργίας

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

Κεφάλαιο 9 Συναθροίσεις

Κεφάλαιο 9 Συναθροίσεις Κεφάλαιο 9 Συναθροίσεις Σύνοψη Στο παρόν κεφάλαιο θα παρουσιαστούν ερωτήματα συνάθροισης χρησιμοποιώντας τις βασικές συναρτήσεις MAX, MIN, AVG, SUM και COUNT. Θα παρουσιαστεί η χρήση της ομαδοποίησης εγγραφών

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

Κεφάλαιο 10 Άλλες Πράξεις Θεωρίας Συνόλων

Κεφάλαιο 10 Άλλες Πράξεις Θεωρίας Συνόλων Κεφάλαιο 10 Άλλες Πράξεις Θεωρίας Συνόλων Σύνοψη Στο παρόν κεφάλαιο θα παρουσιαστεί η πράξη της διαίρεσης. Στο κομμάτι των ασκήσεων θα γίνει συνολική επισκόπηση ερωτημάτων που εμπλέκουν πράξεις συνόλων.

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο Βάσεων Δεδομένων Εργαστήριο Βάσεων Δεδομένων Άσκηση 2 Σκοπός της άσκησης είναι: 1. Με δεδομένο το σχεσιακό διάγραμμα, η υλοποίηση μιας βάσης σε MySQL. 2. Η εισαγωγή δεδομένων στη βάση. 3. Η υλοποίηση απλών ερωτημάτων mysql

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

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

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

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

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

Εργαστήριο Βάσεων Δεδομένων Εργαστήριο Βάσεων Δεδομένων Άσκηση 2 Σκοπός της άσκησης είναι: 1. Με δεδομένο το σχεσιακό διάγραμμα, η υλοποίηση μιας βάσης σε MySQL. 2. Η εισαγωγή δεδομένων στη βάση. Για το κείμενο των προδιαγραφών της

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

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

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

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

Κεφάλαιο 6 Βασικές Πράξεις Θεωρίας Συνόλων

Κεφάλαιο 6 Βασικές Πράξεις Θεωρίας Συνόλων Κεφάλαιο 6 Βασικές Πράξεις Θεωρίας Συνόλων Σύνοψη Στο παρόν κεφάλαιο θα παρουσιασθούν οι βασικές πράξεις της θεωρίας συνόλων: καρτεσιανό γινόμενο, ένωση, τομή, διαφορά και η χρήση αυτών για να απαντηθούν

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

Κεφάλαιο 7 Η Πράξη της Συνένωσης

Κεφάλαιο 7 Η Πράξη της Συνένωσης Κεφάλαιο 7 Η Πράξη της Συνένωσης Σύνοψη Στο παρόν κεφάλαιο θα παρουσιασθεί η χρήση εσωτερικών και εξωτερικών συνενώσεων στην απάντηση ερωτημάτων που συνδυάζουν πολλαπλούς πίνακες. Προαπαιτούμενη γνώση

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

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

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση Βάσεις Δεδομένων 5η εργαστηριακή άσκηση SQL Δρ. Μαρία Ευθυμιοπούλου Εντολές sql Για να γράψετε ή να επικολλήσετε εντολές sql πηγαίνετε από το μενού SQL Workshop και επιλέγετε το SQL Commands 1. Δημιουργία

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Παράδειγμα Insert Update Delete Alter.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (2) Εργαστήριο Βάσεων Δεδομένων Εισαγωγή στη MySQL (2) 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)

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

Κεφάλαιο 8 Εμφωλευμένα Ερωτήματα

Κεφάλαιο 8 Εμφωλευμένα Ερωτήματα Κεφάλαιο 8 Εμφωλευμένα Ερωτήματα Σύνοψη Στο παρόν κεφάλαιο θα παρουσιασθεί η χρήση εμφωλευμένων ερωτημάτων ως πίνακες στο FROM και ως τιμές ή σύνολα εγγραφών στο WHERE. Προαπαιτούμενη γνώση Προαπαιτούμενα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Οδηγίες Χρήσης της MySQL

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

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

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

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

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

Οδηγίες Χρήσης της MySQL

Οδηγίες Χρήσης της MySQL ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΣΗΜΕΙΩΣΕΙΣ ΣΕ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Οδηγίες Χρήσης της MySQL Διδάσκων: Γιάννης Θεοδωρίδης Συντάκτης Κειμένου: Βαγγέλης Κατσικάρος Απρίλιος 2007 1 Περιεχόμενα Εισαγωγή...2

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

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

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

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

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

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

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

PHPMyAdmin: Σύντομος οδηγός για αρχάριους

PHPMyAdmin: Σύντομος οδηγός για αρχάριους 2014 PHPMyAdmin: Σύντομος οδηγός για αρχάριους Καρούσος Νικόλαος Επιστημονικός Συνεργάτης Παρασκευά Σταυρούλα Φοιτήτρια, Εργαστηριακή Βοηθός, τμήμα ΕΠΔΟ Μεσολογγίου 33 Έκδοση 1.1 Πρόλογος... - 2-1. Είσοδος

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

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

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

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

Εργαστήριο Βάσεων Δεδομένων. 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

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

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

1. ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΤΗΣ MySQL 1. ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΤΗΣ MySQL Τύποι στην MySQL Κείμενο Αριθμοί Ημερομηνίες και ώρες Επιλογή του τύπου Στήλες ονομάτων τύπος κειμένου Στήλες ποσών ή ποσοτήτων Αριθμητικός τύπος Στήλες ημερομηνιών τύπος ημερομηνίας

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

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση του DBDesigner. Γιώργος Πυρουνάκης - forky@di.uoa.gr

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση του DBDesigner. Γιώργος Πυρουνάκης - forky@di.uoa.gr Σχεδίαση και Χρήση Βάσεων Δεδομένων Χρήση του DBDesigner Γιώργος Πυρουνάκης - forky@di.uoa.gr Δομή Διαλέξεων Εισαγωγή στο DBDesigner Εφαρμογή στη ΒΔ Προμηθευτής-Προϊόντα Παραδείγματα μοντελοποίησης και

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

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

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

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

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

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

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

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

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση Βάσεις Δεδομένων 2η εργαστηριακή άσκηση Εισαγωγή στο περιβάλλον της oracle Δημιουργία πινάκων Δρ. Εύη Φαλιάγκα 1. Login Χρησιμοποιώντας έναν web explorer, μπαίνετε στο http://10.0.0.6:8080/apex και συμπληρώνετε

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Παράδειγμα 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)

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

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

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

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

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

Ανοικτά Ακαδημαϊκά Μαθήματα Ανοικτά Ακαδημαϊκά Μαθήματα Τεχνολογικό Εκπαιδευτικό Ίδρυμα Αθήνας 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 Περιεχόμενα

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

Οι εντολές 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 Δημιουργία πινάκων με την

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

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

ΕΠΛ 342 Βάσεις εδοµένων ΕΠΛ 342 Βάσεις εδοµένων Εργαστήριο 3 ο SQL - DML Ιωάννα Συρίµη syrimi@ucy.ac.cy Data Manipulation Language Εισαγωγή νέων Εγγραφών Insert Into ιαγραφή Εγγραφών Delete Αλλαγή υφιστάµενων Εγγραφών Update

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

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

Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης Περιεχόμενα 1 Γενική περιγραφή του προβλήματος 2 Μοντελοποίηση Ο/Σ 3 Σχεσιακό μοντέλο, SQL 4 Ερωτήματα

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

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

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

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

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση της MySQL. Γιώργος Πυρουνάκης -

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση της MySQL. Γιώργος Πυρουνάκης - Σχεδίαση και Χρήση Βάσεων Δεδομένων Χρήση της MySQL Γιώργος Πυρουνάκης - forky@di.uoa.gr Δομή Διάλεξης Παράδειγμα (Βάση Δεδομένων Προμηθευτές/Προϊόντα) Εισαγωγή στη MySQL Χρήση του mysql client Χρήση του

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

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

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

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

Φυσική Σχεδίαση Υλοποίηση βάσης

Φυσική Σχεδίαση Υλοποίηση βάσης ΕΣΔ330 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας Φυσική Σχεδίαση Υλοποίηση βάσης Περιεχόμενα Περιεχόμενα Εισαγωγή Μετασχηματισμός οντοτήτων Μετασχηματισμός συσχετίσεων Ακεραιότητα δεδομένων Παραδείγματα

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

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

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

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

Διάλεξη 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:Γλώσσα Ορισµού, Γλώσσα Τροποποίησης, Ενσωµατωµένη SQL) Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 2

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

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

Κεφάλαιο 12 Υλοποίηση Stored Procedures, Χρήση Ευρετηρίων

Κεφάλαιο 12 Υλοποίηση Stored Procedures, Χρήση Ευρετηρίων Κεφάλαιο 12 Υλοποίηση Stored Procedures, Χρήση Ευρετηρίων Σύνοψη Στο παρόν κεφάλαιο θα παρουσιασθούν βασικά στοιχεία όσον αφορά τις stored procedures και τη χρήση ευρετηρίων. Προαπαιτούμενη γνώση H ύλη

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

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL)

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL) Βασικές Εντολές SQL Θεωρία & Εντολές SQL Γραμμή Εντολών MS-DOS (MySQL) Ο καλός σχεδιασμός μιας Β.Δ είναι σημαντικός για την ανάπτυξη μιας εφαρμογής με υψηλή απόδοση. Γι αυτό τον λόγο μια Β.Δ θα πρέπει

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

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

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

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

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

Ενεργές ΒΔ. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Βάσεις Δεδομένων Ενεργές ΒΔ 1 Ενεργές ΒΔ Παύλος Εφραιμίδης pefraimi ee.duth.gr Βάσεις Δεδομένων Ενεργές ΒΔ 1 Active Databases Υποστηρίζουν την αυτόματη εκτέλεση ενεργειών όταν συμβούν συγκεκριμένα γεγονότα Ένας διαδεδομένος μηχανισμός

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

databases linux - terminal (linux / windows terminal)

databases linux - terminal (linux / windows terminal) databases linux - terminal (linux / windows terminal) 1) ανοίγουμε την mysql -> $ mysql -u root -p (enter) password (enter) TIP: αν κατά την εντολή αυτή μας γράψει, ERROR 2002 (HY000): Can't connect to

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

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

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

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

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

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

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

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

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

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

2. Εισαγωγή Δεδομένων σε Σχεσιακή Βάση Δεδομένων

2. Εισαγωγή Δεδομένων σε Σχεσιακή Βάση Δεδομένων 2. Εισαγωγή Δεδομένων σε Σχεσιακή Βάση Δεδομένων Μετά τον μετασχηματισμό των δεδομένων με τη χρήση του Excel, τα δεδομένα θα εισαχθούν σε μια σχεσιακή βάση δεδομένων (Microsoft SQL Sever 2005) ώστε να

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

ΔΟΜΕΣ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ

ΔΟΜΕΣ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΔΟΜΕΣ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΣΗΜΕΙΩΣΕΙΣ (Κατασκευή ΒΔ με τη ΓΛΩΣΣΑ MySQL) ΕΙΣΑΓΩΓΗ Βάση δεδομένων-βδ (Data Base-DB) είναι ένα πλήθος στοιχείων συναφών μεταξύ τους, τοποθετημένα και ταξινομημένα

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

Βάσεις Δεδομένων Η γλώσσα 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) Ένας από τους βασικούς λόγους της απόλυτης επικράτησης των Σχεσιακών ΒΔ Εξασφαλίζει μεταφερσιμότητα

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

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

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

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

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

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

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

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. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

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

Το Σχεσιακό μοντέλο και η γλώσσα SQL

Το Σχεσιακό μοντέλο και η γλώσσα SQL Το Σχεσιακό μοντέλο και η γλώσσα SQL Μανόλης Γεργατσούλης (manolis@ionio.gr) Αναπληρωτής Καθηγητής Ομάδα Βάσεων Δεδομένων και Πληροφοριακών Συστημάτων, Τμήμα Αρχειονομίας Βιβλιοθηκονομίας, Ιόνιο Πανεπιστήμιο

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

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

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

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

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

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

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

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

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

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

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

Βάσεις Δεδομένων 3η εργαστηριακή άσκηση Βάσεις Δεδομένων 3η εργαστηριακή άσκηση Εισαγωγή στο περιβάλλον της oracle Συσχέτιση πινάκων (εισαγωγή ξένων κλειδιών) Δρ. Μαρία Ευθυμιοπούλου 1. Εμφάνιση πινάκων στο Workspace Στο προηγούμενο εργαστήριο

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

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

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

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

Κεφάλαιο 13 Δοσοληψίες

Κεφάλαιο 13 Δοσοληψίες Κεφάλαιο 13 Δοσοληψίες Σύνοψη Στο παρόν κεφάλαιο θα παρουσιασθούν βασικά στοιχεία όσον αφορά τις δοσοληψίες, την έννοια της σειριοποιησιμότητας και των διαφόρων επιπέδων απομόνωσης. Προαπαιτούμενη γνώση

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

Ανάκτηση Δεδομένων (Information Retrieval)

Ανάκτηση Δεδομένων (Information Retrieval) Ανάκτηση Δεδομένων (Information Retrieval) Παύλος Εφραιμίδης Βάσεις Δεδομένων Ανάκτηση Δεδομένων 1 Information Retrieval (1) Βάσεις Δεδομένων: Περιέχουν δομημένη πληροφορία: Πίνακες Ανάκτηση Πληροφορίας

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

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο) TEC610 (ΣΤ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Εαρινό εξάμηνο Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά

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

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ, ΤΜΗΜΑ ΕΠΙΚΟΙΝΩΝΙΑΣ & ΣΠΟΥΔΩΝ ΔΙΑΔΙΚΤΥΟΥ ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ Ακαδημαϊκό Έτος 2011 2012, Εαρινό Εξάμηνο Καθ.: Νίκος Τσαπατσούλης ΥΠΟΔΕΙΓΜΑ

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

DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT. Ενημέρωση βάσης δεδομένων με SQL DELETE, UPDATE, INSERT Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 88 Περιεχόμενα 1 Γενικά για την αποθήκευση δεδομένων και την ενημέρωση της

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

DELETE, UPDATE, INSERT

DELETE, UPDATE, INSERT Ενημέρωση βάσης δεδομένων με SQL DELETE, UPDATE, INSERT Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr astavrak@uoi.gr @AStavrakoudis Άνοιξη 2016 1 / 103 Περιεχόμενα 1 Γενικά για την αποθήκευση

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Ενότητα: 12Η ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Δρ. ΠΑΝΤΕΛΗΣ ΑΓΓΕΛΙΔΗΣ Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

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

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου] ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου] Επιμέλεια: Καρβούνης Ευάγγελος, PhD, Επιστημονικός Συνεργάτης του Τμήματος Αντωνιάδης Νικόλαος, Καθηγητής Οκτώβριος

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL

ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL 3.1 Εντολή επιλογής δεδομένων Η εντολή επιλογής δεδομένων select έχει την γενική μορφή SELECT FROM [WHERE ] [GROUP BY ]

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

Κεφάλαιο 2. Δημιουργία Βάσης Δεδομένων και Πινάκων

Κεφάλαιο 2. Δημιουργία Βάσης Δεδομένων και Πινάκων Κεφάλαιο 2. Δημιουργία Βάσης Δεδομένων και Πινάκων Σύνοψη Σ αυτό το κεφάλαιο θα δημιουργήσουμε μια βάση δεδομένων που αφορά ένα κατάστημα ενοικίασης ψηφιακών δίσκων με το όνομα DVDClub. Θα εργαστούμε,

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