Εθνικό Μετσόβιο ολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Βάσεις Δεδομένων Βασίλειος Βεσκούκης v.vescoukis@cs.ntua.gr Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL Η γλώσσα SQL (Structured Query Language) Βασίζεται στη σχεσιακή άλγεβρα Είναι μια δηλωτική γλώσσα (μη-διαδικαστική) στην οποία περιγράφουμε τι θέλουμε κι όχι πώς θα το αποκτήσουμε Μπορεί να ενσωματωθεί σε άλλες γλώσσες προγραμματισμού Το λογισμικό του ΣΔΒΔ (optimizer - βελτιστοποιητής) αναλαμβάνει την εύρεση τουτρόπουανάκτησηςτωνδεδομένωναπότηβάση H SQL αποτελείται από δύο μέρη γλώσσα ορισμού δεδομένων (DDL) εντολές για τη δημιουργία πινάκων της ΒΔ, καθώς και ευρετηρίων πάνω σε πεδία πινάκων για ταχύτερη προσπέλαση στα δεδομένα γλώσσα χειρισμού δεδομένων (DML) εντολές για την εισαγωγή, διαγραφή ή τροποποίηση των τιμών των πλειάδων ενός πίνακα, καθώς και εντολές οριστικής καταχώρησης ή ακύρωσης των εργασιών που έγιναν στη ΒΔ 1
Η γλώσσα SQL Εντολές γλώσσας ορισμού δεδομένων (DDL) CREATE TABLE (δημιουργία πίνακα) CREATE INDEX (δημιουργία ευρετηρίου) CREATE VIEW (δημιουργία όψης) DROP TABLE (διαγραφή πίνακα) DROP INDEX (διαγραφή ευρετηρίου) DROP VIEW (διαγραφή όψης) MODIFY (τροποποίηση της δομής των αντικειμένων της βάσης, δηλ, πινάκων, ευρετηρίων, όψεων) Η γλώσσα SQL Εντολές γλώσσας ορισμού δεδομένων (DDL) αράδειγμα δημιουργίας πίνακα: CREATE TABLE πίνακας (όνομα_στήλης τύπος_στήλης, ); π.χ.: CREATE TABLE ΔΙΚΑΙΩΜΑΤΑ (ΚΑΕΚ VARCHAR(16), ΔΙΚΑΙΟΧΟΣ VARCHAR(8), ΟΣΟΣΤΟ INTEGER, ΗΜΕΡΟΜΗΝΙΑ DATE); αράδειγμα δημιουργίας ευρετηρίου: CREATE INDEX ευρετήριο ON πίνακας (όνομα_στήλης); π.χ.: CREATE INDEX ΕΡ_ΔΙΚΑΙΟΧΩΝ ΟΝ ΔΙΚΑΙΟΧΟΙ (ΕΩΝΜΟ);
SQL Γλώσσα ορισμού δεδομένων: αραδείγματα λοποίηση του σχήματος ΒΔ του παραδείγματος TEACHERS TEACHERID TFNAME TLNAME EIDIKOTHTA SCHOOL NOMOS UNIVERSITIES UCODE UNAME USTUDENTS USTAFF LOCATION PROVIDED_BY COURSE YEAR CREATE TABLE TEACHERS(TEACHERID INT, TFNAME TEXT(50), TLNAME TEXT(50), EIDIKOTHTA TEXT(0), SCHOOL TEXT(10), NOMOS TEXT(50)); CREATE TABLE UNIVERSITIES(UCODE TEXT(10), UNAME TEXT(50), USTUDENTS INT, USTAFF INT, LOCATION TEXT(50)); CREATE TABLE ( INT, TEXT(50), INT, TEXT(1)) CREATE TABLE PROVIDED_BY(COURSE INT, TEXT(10), YEAR TEXT(10)) Η γλώσσα SQL Εντολές γλώσσας χειρισμού δεδομένων (DΜL) SELECT (ανάκτηση δεδομένων από πίνακα) INSERT (εισαγωγή πλειάδων σε πίνακα) DELETE (διαγραφή πλειάδων από πίνακα) UPDATE (ενημέρωση στήλης πίνακα) COMMIT WORK (ολοκλήρωση διεργασίας) ROLLBACK WORK (κατάργηση διεργασίας, φέρει τη ΒΔ στην κατάσταση του τελευταίου COMMIT)
Η γλώσσα SQL Εντολές γλώσσας χειρισμού δεδομένων (DΜL) παράδειγμα ανάκτησης δεδομένων από πίνακες SELECT στήλη FROM πίνακας WHERE συνθήκη ; π.χ.: SELECT * FROM ΔΙΚΑΙΟΧΟΙ ; SELECT KAEK, ΕΜΒΑΔΟΝ FROM ΓΕΩΤΕΜΑΧΙΑ WHERE ΕΜΒΑΔΟΝ >.000 ; SELECT ΔΙΚΑΙΟΧΟΙ.ΕΩΝΜΟ, ΔΙΚΑΙΟΧΟΙ.ΟΝΟΜΑ FROM ΔΙΚΑΙΟΧΟΙ, ΔΙΚΑΙΩΜΑΤΑ WHERE ΔΙΚΑΙΩΜΑΤΑ.ΗΜΕΡΟΜΗΝΙΑ > 1/1/197 AND ΔΙΚΑΙΟΧΟΣ.ΚΩΔΙΚΟΣ = ΔΙΚΑΙΩΜΑΤΑ.ΔΙΚΑΙΟΧΟΣ ; Η γλώσσα SQL Εντολές γλώσσας χειρισμού δεδομένων (DΜL) Εισαγωγή γραμμών σε πίνακα INSERT INTO πίνακας [ (στήλη, ) ] VALUES (τιμή, ) ;.χ.: INSERT INTO ΔΙΚΑΙΟΧΟΙ VALUES ('56', 'ΑΟΣΤΟΛΟ', 'ΙΩΑΝΝΗΣ', 'ΑΛΣΟΣ, 78 ΔΑΦΝΗ') ; Διαγραφή γραμμών από πίνακα DELETE FROM πίνακας WHERE συνθήκη ; π.χ.: DELETE FROM ΔΙΚΑΙΟΧΟΙ WHERE ΚΩΔΙΚΟΣ = 56 ; Ενημέρωση στήλης πίνακα UPDATE πίνακας SET στήλη = τιμή WHERE συνθήκη ;.χ.: UPDATE ΓΕΩΤΕΜΑΧΙΑ SET ΕΜΒΑΔΟΝ =.580 WHERE ΚΑΕΚ = 01.00.0.0.00 ;
SELECT - βασική μορφή εντολής select A1, A,..., An from r1, r,..., rm where P Τα Ai αναπαριστούν κατηγορήματα/πεδία Τα ri αναπαριστούν σχέσεις/πίνακες Η P είναι μια συνθήκη Ισοδύναμη έκφραση σχεσιακής άλγεβρας: A1, A,..., An ( σ P (r1 1 x r x... x rm) ) Τελεστές που συνδυάζονται με τη SELECT * όλα τα πεδία της σχέσης που αναφέρεται στο FROM DISTINCT παραλείπει τις διπλές εγγραφές ΡΟΣΟΧΗ! Η SQL δεν απαλείφει αυτόματα τις διπλοεγγραφές SELECT - βασική μορφή εντολής select A1, A,..., An from r1, r,..., rm where P Η πρόταση FROM Αντιστοιχεί στην πράξη καρτεσιανού γινομένου της σχεσιακής άλγεβρας Η πρόταση WHERE Αντιστοιχεί στην πράξη επιλογής της σχεσιακής άλγεβρας Τελεστές συνθήκης >, <, <>, >=, <=, = AND, NOT, OR LIKE IS [NOT] NULL ισότητας λογικοί σύγκρισης συμβολοσειρών αναζήτησης [μη] κενών τιμών 5
SELECT - βασική μορφή : αραδείγματα Εστω η ΒΔ TEACHERS TEACHERID TFNAME FLNAME EIDIKOTHTA SCHOOL NOMOS 1 ΑΝΔΡΕΑΣ ΑΝΔΡΕΟ ΦΣΙΚΟΣ ΓΕΩΡΓΙΟΣ ΓΕΩΡΓΙΟ ΒΟΙΩΤΙΑ ΒΑΣΙΛΕΙΟΣ ΒΑΣΙΛΕΙΟ Η ΘΕΣΣΑΛΟΝΙΚΗ ΕΤΡΟ ΕΤΡΟΣ ΚΑΤΕΡΙΝΗ 5 ΔΗΜΗΤΡΙΟ ΔΗΜΗΤΡΙΟΣ Η 6 ΕΛΕΘΕΡΙΟ ΕΛΕΘΕΡΙΟΣ ΤΟΟΓΡΑΦΟΣ ΚΟΡΙΝΘΙΑ 9 ΑΝΑΓΙΩΤΟ ΑΝΑΓΙΩΤΗΣ Η ΘΡΑΚΗ UNIVERSITIES PROVIDED_BY UCODE UNAME USTUDENTS USTAFF LOCATION COURSE YEAR ΑΡΙΣΤΟΤΕΛΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 8900 50 ΘΕΣΣΑΛΟΝΙΚΗ 1980-1981 ΔΗΜΟΚΡΙΤΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΘΡΑΚΗΣ 5000 89 ΘΡΑΚΗ 1981-198 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΟΛΤΕΧΝΕΙΟ 10000 1000 198-198 ΧΑΡΟΚΟΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΑΘΗΝΩΝ 000 100 0-1 1-1985-1986 9-0 - ΜΑΘΗΜΑΤΙΚΑ 1-9-0 ΒΔ 0-1 01 ΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η 1- SELECT - βασική μορφή : αραδείγματα SELECT * from TEACHERS; TEACHERID TFNAME FLNAME EIDIKOTHTA SCHOOL NOMOS 1 5 ΑΝΔΡΕΑΣ ΓΕΩΡΓΙΟΣ ΒΑΣΙΛΕΙΟΣ ΕΤΡΟ ΔΗΜΗΤΡΙΟ ΑΝΔΡΕΟ ΓΕΩΡΓΙΟ ΒΑΣΙΛΕΙΟ ΕΤΡΟΣ ΔΗΜΗΤΡΙΟΣ ΦΣΙΚΟΣ Η Η ΒΟΙΩΤΙΑ ΘΕΣΣΑΛΟΝΙΚΗ ΚΑΤΕΡΙΝΗ ΔΩΣΕ ΜΟ ΟΛΑ ΤΑ ΣΤΟΙΧΕΙΑ ΤΩΝ ΚΑΘΗΓΗΤΩΝ 6 ΕΛΕΘΕΡΙΟ ΕΛΕΘΕΡΙΟΣ ΤΟΟΓΡΑΦΟΣ ΚΟΡΙΝΘΙΑ 9 ΑΝΑΓΙΩΤΟ ΑΝΑΓΙΩΤΗΣ Η ΘΡΑΚΗ SELECT TFNAME, TLNAME, SCHOOL FROM TEACHERS; TFNAME TLNAME SCHOOL ΑΝΔΡΕΑΣ ΑΝΔΡΕΟ ΓΕΩΡΓΙΟΣ ΓΕΩΡΓΙΟ ΒΑΣΙΛΕΙΟΣ ΕΤΡΟ ΔΗΜΗΤΡΙΟ ΕΛΕΘΕΡΙΟ ΑΝΑΓΙΩΤΟ ΒΑΣΙΛΕΙΟ ΕΤΡΟΣ ΔΗΜΗΤΡΙΟΣ ΕΛΕΘΕΡΙΟΣ ΑΝΑΓΙΩΤΗΣ ΔΩΣΕ ΜΟ ΤΟ ΟΝΟΜΑ, ΤΟ ΕΩΝΜΟ ΚΑΙ ΤΟ ΑΝΕΙΣΤΗΜΙΟ ΓΙΑ ΟΛΟΣ ΤΟΣ ΚΑΘΗΓΗΤΕΣ 6
SELECT - βασική μορφή : αραδείγματα SELECT DISTINCT EIDIKOTHTA FROM TEACHERS; EIDIKOTHTA Η ΤΟΟΓΡΑΦΟΣ ΦΣΙΚΟΣ ΟΙΕΣ ΕΙΔΙΚΟΤΗΤΕΣ ΚΑΘΗΓΗΤΩΝ ΗΡΕΤΟΝ ΣΤΑ ΑΝΕΙΣΤΗΜΙΑ; SELECT UCODE, UNAME FROM UNIVERSITIES WHERE LOCATION=' '; UCODE UNAME ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΟΛΤΕΧΝΕΙΟ ΧΑΡΟΚΟΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΟΙΑ ΑΝΕΙΣΤΗΜΙΑ ΕΧΟΝ ΕΔΡΑ ΤΗΝ ; ΟΙΑ ΡΟΑΙΡΕΤΙΚΑ ΜΑΘΗΜΑΤΑ ΜΟΡΟΝ ΝΑ ΔΙΔΑΞΟΝ ΟΙ ΚΑΘΗΓΗΤΕΣ; SELECT * FROM TEACHERS, WHERE.=''; '; TEACHERID TFNAME TLNAME EIDIKOTHTA SCHOOL NOMOS 1 ΑΝΔΡΕΑΣ ΑΝΔΡΕΟ ΦΣΙΚΟΣ ΓΕΩΡΓΙΟΣ ΓΕΩΡΓΙΟ ΒΟΙΩΤΙΑ ΒΑΣΙΛΕΙΟΣ ΒΑΣΙΛΕΙΟ Η ΘΕΣΣΑΛΟΝΙΚΗ ΕΤΡΟ ΕΤΡΟΣ ΚΑΤΕΡΙΝΗ 5 ΔΗΜΗΤΡΙΟ ΔΗΜΗΤΡΙΟΣ Η 6 ΕΛΕΘΕΡΙΟ ΕΛΕΘΕΡΙΟΣ ΤΟΟΓΡΑΦΟΣ ΚΟΡΙΝΘΙΑ 9 ΑΝΑΓΙΩΤΟ ΑΝΑΓΙΩΤΗΣ Η ΘΡΑΚΗ SELECT - γενική μορφή select A1, A,..., An,f(A, f(a), from r1, r,..., rm where P group by A1, A,..., An having Q order by Ax,.., AyA f(a) είναι μια συνάρτηση συνάθροισης (aggregate function) Q είναι μια συνθήκη που αφορά το GROUP BY 7
SELECT - γενική μορφή Διάταξη αποτελεσμάτων (order by) select A1, A,..., An from r1, r,..., rm where P order by Ax,.., Ay ASC or DESC αράδειγμα SELECT * FROM TEACHERS, WHERE.='' ORDER BY NOMOS, SCHOOL; TEACHERID TFNAME TLNAME EIDIKOTHTA SCHOOL NOMOS 5 ΔΗΜΗΤΡΙΟ ΔΗΜΗΤΡΙΟΣ Η 1 ΑΝΔΡΕΑΣ ΑΝΔΡΕΟ ΦΣΙΚΟΣ ΓΕΩΡΓΙΟΣ ΓΕΩΡΓΙΟ ΒΟΙΩΤΙΑ ΒΑΣΙΛΕΙΟΣ ΒΑΣΙΛΕΙΟ Η ΘΕΣΣΑΛΟΝΙΚΗ 9 ΑΝΑΓΙΩΤΟ ΑΝΑΓΙΩΤΗΣ Η ΘΡΑΚΗ ΕΤΡΟ ΕΤΡΟΣ ΚΑΤΕΡΙΝΗ 6 ΕΛΕΘΕΡΙΟ ΕΛΕΘΕΡΙΟΣ ΤΟΟΓΡΑΦΟΣ ΚΟΡΙΝΘΙΑ SELECT - γενική μορφή Ομαδοποίηση αποτελεσμάτων (group by) select A1, A,..., An,f(A, f(a), from r1, r,..., rm where P group by A1, A,..., An having Q Ομαδοποιεί τα αποτελέσματα εφαρμόζοντας τη συνάρτηση f(a) σε κάθε ομάδα χωριστά. Η πρότασηhaving καθορίζει συνθήκη αναζήτησης για τις ομάδες Συναρτήσεις συνάθροισης (aggregate functions) AVG(A) μέσος όρος τιμών του Α SUM(A) άθροισμα τιμών του Α MIN(A) ηελάχιστητωντιμώντουα MAX(A) ημέγιστητωντιμώντουα COUNT(A) το πλήθος των τιμών του Α 8
SELECT - γενική μορφή: αραδείγματα SELECT Avg() FROM WHERE.=''; 01 ΜΑΘΗΜΑΤΙΚΑ 1 ΒΔ ΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η Expr1000,66666666666667 SELECT Avg() AS AV_HOURS FROM WHERE.=''; ΟΙΟΣ ΕΙΝΑΙ Ο ΜΕΣΟΣ ΟΡΟΣ ΕΒΔΟΜΑΔΙΑΙΩΝ ΩΡΩΝ ΔΙΔΑΣΚΑΛΙΑΣ ΟΛΩΝ ΤΩΝ ΟΧΡΕΩΤΙΚΩΝ ΜΑΘΗΜΑΤΩΝ; AV_HOURS,66666666666667 SELECT, Avg() AS AV_HOURS FROM GROUP BY ; ΟΙΟΙ ΕΙΝΑΙ ΟΙ ΜΕΣΟΙ AV_HOURS ΟΡΟΙ ΤΩΝ ΕΒΔΟΜΑΔΙΑΙΩΝ ΩΡΩΝ,66666666666667 ΔΙΔΑΣΚΑΛΙΑΣ ΟΛΩΝ ΤΩΝ ΤΩΝ ΜΑΘΗΜΑΤΩΝ; SELECT - γενική μορφή: αραδείγματα Θα δουλέψουμε με το ακόλουθο στιγμιότυπο της ΒΔ UNIVERSITIES PROVIDED_BY UCODE UNAME USTUDENTS USTAFF LOCATION COURSE YEAR ΑΡΙΣΤΟΤΕΛΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 8900 50 ΘΕΣΣΑΛΟΝΙΚΗ 1980-1981 ΔΗΜΟΚΡΙΤΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΘΡΑΚΗΣ 5000 89 ΘΡΑΚΗ 1981-198 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΟΛΤΕΧΝΕΙΟ 10000 1000 198-198 ΧΑΡΟΚΟΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΑΘΗΝΩΝ 000 100 0-1 1-1985-1986 9-0 - ΜΑΘΗΜΑΤΙΚΑ 1-9-0 ΒΔ 0-1 01 ΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η 1-9
SELECT - γενική μορφή: αραδείγματα SELECT., PROVIDED_BY. FROM, PROVIDED_BY; Επιστρέφει ολόκληρο το γινόμενο των πινάκων ΜΑΖΙ με τις διπλές εγγραφές! 01 01 01... 01 01 01... SELECT - γενική μορφή: αραδείγματα SELECT DISTINCT., PROVIDED_BY. FROM, PROVIDED_BY; Επιστρέφει το καρτεσιανό γινόμενο των πινάκων (χωρίς διπλές εγγραφές) 01 01 01 01 10
SELECT - γενική μορφή: αραδείγματα SELECT DISTINCT., PROVIDED_BY. FROM, PROVIDED_BY WHERE.=PROVIDED_BY.COURSE; PROVIDED_BY COURSE YEAR 1980-1981 ΟΙΑ ΜΑΘΗΜΑΤΑ ΕΧΟΝ ΔΙΔΑΧΤΕΙ ΣΕ ΚΑΘΕ ΑΝΕΙΣΤΗΜΙΟ; 1981-198 198-198 0-1 1-1985-1986 9-0 - - 9-0 0-1 1- ΜΑΘΗΜΑΤΙΚΑ 1 ΒΔ 01 ΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η SELECT - γενική μορφή: αραδείγματα SELECT DISTINCT., PROVIDED_BY., UNIVERSITIES.UNAME FROM, PROVIDED_BY, UNIVERSITIES WHERE.=PROVIDED_BY.COURSE AND PROVIDED_BY.=UNIVERSITIES.UCODE; PROVIDED_BY COURSE UNIVERSITIES UCODE UNAME USTUDENTS USTAFF LOCATION ΑΡΙΣΤΟΤΕΛΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 8900 50 ΘΕΣΣΑΛΟΝΙΚΗ ΔΗΜΟΚΡΙΤΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΘΡΑΚΗΣ 5000 89 ΘΡΑΚΗ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΟΛΤΕΧΝΕΙΟ 10000 1000 ΧΑΡΟΚΟΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΑΘΗΝΩΝ 000 100 YEAR 1980-1981 1981-198 198-198 0-1 1-1985-1986 9-0 ΜΑΘΗΜΑΤΙΚΑ 1 ΒΔ - - 9-0 0-1 1-01 ΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η UNAME ΔΗΜΟΚΡΙΤΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΘΡΑΚΗΣ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΟΛΤΕΧΝΕΙΟ ΧΑΡΟΚΟΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΑΡΙΣΤΟΤΕΛΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΟΛΤΕΧΝΕΙΟ 11
SELECT - γενική μορφή: αραδείγματα SELECT DISTINCT., PROVIDED_BY., UNIVERSITIES.UNAME FROM, PROVIDED_BY, UNIVERSITIES WHERE.=PROVIDED_BY.COURSE AND PROVIDED_BY.=UNIVERSITIES.UCODE; PROVIDED_BY COURSE UNIVERSITIES UCODE UNAME USTUDENTS USTAFF LOCATION ΑΡΙΣΤΟΤΕΛΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 8900 50 ΘΕΣΣΑΛΟΝΙΚΗ ΔΗΜΟΚΡΙΤΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΘΡΑΚΗΣ 5000 89 ΘΡΑΚΗ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΟΛΤΕΧΝΕΙΟ 10000 1000 ΧΑΡΟΚΟΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΑΘΗΝΩΝ 000 100 YEAR 1980-1981 1981-198 198-198 0-1 1-1985-1986 9-0 ΜΑΘΗΜΑΤΙΚΑ 1 ΒΔ - - 9-0 0-1 1-01 ΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η UNAME ΔΗΜΟΚΡΙΤΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΘΡΑΚΗΣ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΟΛΤΕΧΝΕΙΟ ΧΑΡΟΚΟΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΑΡΙΣΤΟΤΕΛΕΙΟ ΑΝΕΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΟΛΤΕΧΝΕΙΟ 1