3. SQL. 3. Structured Query Language (SQL) 1

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

Download "3. SQL. 3. Structured Query Language (SQL) 1"

Transcript

1 3. Structured Query Language (SQL 1 3. SQL Η SQL (Structured Query Language είναι µία από τις γλώσσες διαχείρισης σχεσιακών βάσεων δεδοµένων. Ανήκει στην κατηγορία των µη διαδικαστικών γλωσσών τέταρτης γενιάς. Στις µη διαδικαστικές γλώσσες ο χρήστης δε χρειάζεται να ορίσει τη διαδικασία πρόσβασης στη βάση δεδοµένων και τον τρόπο ανάκτησης των δεδοµένων. ιατυπώνει απλώς τις απαιτήσεις του και ο ίδιος ο µηχανισµός υλοποίησης της γλώσσας αναλαµβάνει να επιλέξει το βέλτιστο τρόπο ικανοποίησης αυτών των απαιτήσεων. Οι απαιτήσεις του χρήστη εκφράζονται υπό τύπο πράξεων µεταξύ των πινάκων της βάσης δεδοµένων. Το Σ Β µεταφράζει τις απαιτήσεις του χρήστη και χρησιµοποιώντας πληροφορίες σχετικά µε το περιεχόµενο της βάσης δεδοµένων και το λεξικό δεδοµένων προσπαθεί να προσδιορίσει τη βέλτιστη διαδικασία ανάκτησης των δεδοµένων που ζητούνται. Η SQL έχει ένα µικρό, σχετικά, σύνολο εντολών και ορισµάτων, πράγµα που την κάνει εύκολη στη χρήση και την εκµάθηση της, χωρίς όµως να περιορίζει τις δυνατότητες και την ευελιξία της. Η ανάπτυξη της έγινε από την IBM στη δεκαετία του '70 στα πλαίσια της ανάπτυξης του προτύπου σχεσιακού Σ Β R. Αποτελεί διεθνές πρότυπο, το ANSI/SQL, από το 1986 και σχεδόν όλα τα προϊόντα των Σχεσιακών Σ Β συνοδεύονται από µια διάλεκτο της SQL. Τελευταίο διεθνές πρότυπο της SQL είναι το SQL2 το οποίο δηµοσιεύθηκε το εν ακολουθείται πάντοτε πιστά το διεθνές πρότυπο από τους διάφορους κατασκευαστές. Σε άλλα σηµεία µπορεί να υπάρχουν περιορισµοί σχετικά µε το διεθνές πρότυπο και σε άλλα σηµεία επεκτάσεις, αλλά ο βασικός κορµός όλων των διαλέκτων της SQL παραµένει ίδιος. Η SQL επιτρέπει τη διατύπωση της ίδιας ερώτησης στη βάση δεδοµένων µε πολλούς διαφορετικούς τρόπους. Το αποτέλεσµα είναι πάντοτε το ίδιο. Η επιλογή της συγκεκριµένης διατύπωσης γίνεται ώστε να αναδειχθεί κάθε φορά αυτό που θέλουµε να παρουσιάσουµε. Θεωρητικά οι ερµηνευτές της SQL θα πρέπει να µεταφράζουν τις διαφορετικές διατυπώσεις µε τον ίδιο τρόπο και να τις εκτελούν µε την ίδια ταχύτητα, πράγµα που δεν συµβαίνει στην πράξη. Στο κεφάλαιο αυτό και στο επόµενο, θα ασχοληθούµε µε τη σύνταξη και τον τρόπο χρησιµοποίησης της SQL. Θα ακολουθήσουµε το διεθνές πρότυπο µε παράλληλες αναφορές στην υλοποίηση της SQL από τα συστήµατα ORACLE και INGRES στα σηµεία όπου υπάρχουν σηµαντικές διαφοροποιήσεις. Για τις εντολές της SQL που συναντούµε µόνο στο ORACLE ή το INGRES θα αναφερθούµε στα αντίστοιχα κεφάλαια. Η παρουσίαση µας αναφέρεται τη διαλογική (interactive χρήση της SQL, πράγµα που συµβαδίζει µε το γενικότερο προσανατολισµό του βιβλίου. Να σηµειώσουµε ότι η SQL µπορεί να χρησιµοποιηθεί και ενσωµατωµένη (embedded SQL σε κάποια γλώσσα προγραµµατισµού τρίτης γενιάς, όπως η Visual Basic, η C++, ή η Java. Η ενσωµατωµένη SQL παρουσιάζει κάποιες διαφοροποιήσεις από τη διαλογική SQL, αλλά δεν θα µας απασχολήσει περισσότερο, αφού το βιβλίο είναι προσανατολισµένο προς τη διαλογική SQL η οποία χρησιµοποιείται και στα περιβάλλοντα ανάπτυξης εφαρµογών. εν θα περιοριστούµε στην απλή παρουσίαση της σύνταξης της SQL, αλλά θα προχωρήσουµε και στην περιγραφή των πραγµατικών λειτουργιών διαχείρισης της βάσης δεδοµένων µέσω της SQL και του τρόπου επίλυσης των προβληµάτων που προκύπτουν. Η SQL υλοποιεί και αντανακλά όλες τις δυνατότητες του ΣΣ Β, απέχει, όµως, πολύ από το να υλοποιεί πλήρως το σχεσιακό Μ, όπως το ορίζει ο Codd και το παρουσιάσαµε στο πρώτο κεφάλαιο του βιβλίου. Η SQL µπορεί να χωριστεί σε δύο τµήµατα, όπως είδαµε για τις γλώσσες δεδοµένων στο πρώτο κεφάλαιο. Στο τµήµα που αντιστοιχεί στη γλώσσα ορισµού δεδοµένων (ΓΟ και στο τµήµα που αντιστοιχεί στη γλώσσα χειρισµού δεδοµένων (ΓΧ. Μπορούµε, επίσης, να διακρίνουµε και ένα τρίτο σύνολο εντολών της SQL, τις εντολές ελέγχου των δεδοµένων, στις οποίες και αναφερόµαστε στο επόµενο κεφάλαιο. Για τη κατανόηση του τρόπου σύνταξης και χρησιµοποίησης της SQL χρησιµοποιούµε διάφορα παραδείγµατα που προέρχονται κυρίως από τη βάση δεδοµένων διαχείρισης παραγγελιών που αναλύεται στο προηγούµενο κεφάλαιο του βιβλίου. Πιο κάτω φαίνονται οι πίνακες που αποτελούν τη βάση δεδοµένων µαζί µε το περιεχόµενο που χρησιµοποιείται στα παραδείγµατα.

2 3. Structured Query Language (SQL 2 customer custcode lname fname street city 1 ΑΘΑΝΑΣΙΟΥ ΕΛΕΥΘΕΡΙΟΣ ΠΑΛΑΙΟΛΟΓΟΥ 33 ΑΘΗΝΑ 2 ΠΑΠΑΕΜΑΝΟΥΗΛ ΚΩΣΤΑΣ Β.ΟΛΓΑΣ 55 ΘΕΣ/ΝΙΚΗ 3 ΚΟΥΚΑ ΠΗΝΕΛΟΠΗ ΟΜΑΛΟΥ 53 ΧΑΝΙΑ 4 ΟΡΑΤΙΟΥ ΘΕΑΝΩ ΣΑΜΑΡΙΑΣ 25 ΧΑΝΙΑ 5 ΤΕΛΑΚΟΥ ΕΛΕΝΗ ΑΓΙΟΥ ΠΑΥΛΟΥ 12 ΑΘΗΝΑ 6 ΣΤΑΘΟΥΛΗΣ ΝΙΚΟΛΑΟΣ ΑΡΙΣΤΟΤΕΛΟΥΣ 3 ΑΘΗΝΑ orders ordernum orderdate custcode 1 15/09/ /09/ /09/ /08/94 4 orderlines parts ordernum partcode qty partcode name price totalqty ΚΑΛΤΣΕΣ Β ΚΑΛΤΣΕΣ Α ΠΟΥΚΑΜΙΣΟ ΠΟΥΛΟΒΕΡ Α ΠΟΥΛΟΒΕΡ Α ΖΩΝΗ ΑΝ ΡΙΚΗ ΖΩΝΗ ΑΝ ΡΙΚΗ Α Επίσης χρησιµοποιούνται και παραδείγµατα που αφορούν τον πίνακα stud ο οποίος έχει περιεχόµενο : studid lname fname sex birthdate 1 ΠΕΛΟΠΑ ΙΩΑΝΝΑ Θ 11/12/75 2 ΘΕΟ ΟΣΙΟΥ ΜΙΧΑΛΗΣ Α 10/01/74 3 ΠΑΝΑΡΑ ΕΛΕΝΗ Θ 15/06/74 4 ΙΩΑΝΝΟΥ ΣΤΕΛΙΟΣ Α 03/01/74 5 ΝΙΚΑΝ ΡΟΥ ΕΛΕΝΗ Θ 20/07/73

3 3. Structured Query Language (SQL 3 Τρόπος Παρουσίασης της SQL Στον τρόπο παρουσίασης της σύνταξης της SQL και των παραδειγµάτων χρησιµοποιούµε τις εξής συµβάσεις: 1. Όλες οι δεσµευµένες λέξεις που αφορούν τη σύνταξη της SQL γράφονται µε κεφαλαία. Π.χ. CREATE TABLE 2. Στα παραδείγµατα, τα ονόµατα πινάκων, στηλών κλπ που δεν αποτελούν δεσµευµένες λέξεις και καθορίζονται από το χρήστη, γράφονται µε πεζά γράµµατα. SELECT onoma FROM employee WHERE code = 2 3. Στη σύνταξη των εντολών οι αγκύλες [ ] δηλώνουν κάποιο προαιρετικό τµήµα της σύνταξης. SELECT [DISTINCT] * FROM A οι µύστακες σε συνδυασµό µε τη κάθετη γραµµή δηλώνουν επιλογή κάποιας από τις τιµές που περικλείονται σ' αυτούς. οι συνεχόµενες τελείες... δηλώνουν επανάληψη του προηγούµενου τµήµατος της σύνταξης. οι χαρακτήρες < > δηλώνουν τµήµατα της σύνταξης που πρέπει να οριστούν από το χρήστη. Μια εντολή της SQL µπορεί να γραφεί σε µια ή περισσότερες γραµµές χωρίς να απαιτείται διαφορετική σύνταξη. ιαδοχικές εντολές χωρίζονται µεταξύ τους από το χαρακτήρα ';'. Ο χαρακτήρας ';' δεν περιλαµβάνεται στη σύνταξη των εντολών της SQL, αλλά το χρειάζονται τα προγράµµατα ερµηνείας της SQL ώστε να διακρίνουν τις εντολές µεταξύ τους. Σε αυτό το βιβλίο γράφουµε συνήθως τις εντολές σε περισσότερες από µία γραµµές, ανάλογα βέβαια και µε τη σύνταξη τους για λόγους εµφάνισης και κατανόησης του περιεχοµένου τους. Να σηµειώσουµε, µε την ευκαιρία, ότι, για τη διαλογική χρήση της SQL, στο INGRES χρησιµοποιούµε το πρόγραµµα ISQL, ενώ στο ORACLE το SQL*PLUS. 3.1 Τύποι εδοµένων Οι τύποι δεδοµένων που υποστηρίζει η SQL χωρίζονται σε δύο µεγάλες κατηγορίες. Στους τύπους που αναφέρονται στα αριθµητικά δεδοµένα και στους τύπους που αναφέρονται στα αλφαριθµητικά δεδοµένα. Υπάρχει και µια τρίτη κατηγορία οι ειδικοί τύποι δεδοµένων. Με τη σειρά τους οι αριθµητικοί τύποι δεδοµένων χωρίζονται στους τύπους που εκφράζουν ακέραιες ποσότητες και σε αυτούς που εκφράζουν πραγµατικές ποσότητες µε υποδιαιρέσεις δεκαδικών. Ακέραιοι αριθµητικοί τύποι δεδοµένων του προτύπου της SQL είναι INTEGER ή INT SMALLINT Η διαφορά τους βρίσκεται στο πλήθος των ψηφιολέξεων (bytes που χρησιµοποιούν για την αναπαράσταση των αριθµών. Το INGRES υποστηρίζει και τους ακέραιους τύπους INTEGER1, INTEGER2 και INTEGER4, όπου ο αριθµός δηλώνει το πλήθος των ψηφιολέξεων που χρησιµοποιούνται για την αποθήκευση του ακεραίου. Στο ORACLE έχουµε µόνο τον τύπο INTEGER, ο οποίος πρέπει να σηµειώσουµε δεν υλοποιείται εσωτερικά ως ακέραιος, αλλά ως πραγµατικός. Οι τύποι δεδοµένων για πραγµατικούς αριθµούς του προτύπου της SQL είναι DECIMAL[(<µήκος>, <δεκαδικά>] NUMBER[(<µήκος>, <δεκαδικά>] FLOAT[(<µήκος>] DOUBLE PRECISION REAL Στο INGRES οι τύποι που αναφέρονται στους πραγµατικούς αριθµούς είναι οι FLOAT, FLOAT4 και FLOAT8. Οι διαφορές τους βρίσκονται στο πλήθος των ψηφιολέξεων που χρησιµοποιούν για την

4 3. Structured Query Language (SQL 4 υλοποίηση των αριθµών. Το ORACLE έχει µόνο τον τύπο NUMBER και υποστηρίζει συντακτικά και τους τύπους DECIMAL και FLOAT, τους οποίους και αντιστοιχεί στον τύπο NUMBER. Οι αλφαριθµητικοί τύποι δεδοµένων που υποστηρίζει το πρότυπο της SQL είναι: CHARACTER[(<µήκος>] ή CHAR[(<µήκος>] CHARACTER VARYING[(<µήκος>] Στο INGRES συναντούµε επίσης τους τύπους VCHAR, VARCHAR και C, ενώ στο ORACLE τον τύπο VARCHAR µε µέγιστο µήκος τους 255 χαρακτήρες. Στο ORACLE υπάρχει επίσης ο τύπος LONG που µπορεί να περιλάβει µέχρι χαρακτήρες και έχει τον περιορισµό ότι δεν µπορεί να δηλωθεί παρά µόνο για µία στήλη ενός πίνακα. Στη σύνταξη όλων των αλφαριθµητικών τύπων πρέπει να δηλωθεί το πλήθος των χαρακτήρων που µπορεί να περιλάβει η συµβολοσειρά. Ο µόνος ειδικός τύπος δεδοµένων που συναντούµε, τόσο στο INGRES, όσο και στο ORACLE είναι ο τύπος ηµεροµηνίας DATE. Στο INGRES υπάρχει επιπλέον ο τύπος MONEY για χρηµατικές ποσότητες και η πολύ σηµαντική δυνατότητα ορισµού δεδοµένων από τον ίδιο το χρήστη. Στο ORACLE υπάρχουν οι τύποι RAW και LONGRAW, αντίστοιχοι στο µέγεθος των τύπων CHAR και LONGCHAR µε τη διαφορά ότι µπορούν να δεχθούν σύνολα οποιωνδήποτε ψηφιολέξεων. Μπορούν να χρησιµοποιηθούν για την αποθήκευση δυαδικών δεδοµένων ή δεδοµένων που παριστούν εικόνες ή οποιαδήποτε άλλα δεδοµένα. 3.2 Υπογλώσσα Ορισµού εδοµένων Στο τµήµα της ΓΟ µπορούµε να περιλάβουµε όλες εκείνες τις εντολές που έχουν να κάνουν µε τη δηµιουργία της βάσης δεδοµένων και την τροποποίηση της. Η δηµιουργία της ίδιας της βάσης δεδοµένων µπορεί να γίνει είτε µε εξωτερική εντολή στο επίπεδο του λειτουργικού συστήµατος, όπως στο INGRES, είτε µε εντολή της SQL, όπως στο ORACLE. Γενικά, όµως, η δηµιουργία της βάσης δεδοµένων έχει κάποια ιδιαίτερα χαρακτηριστικά ανάλογα µε το Σ Β. Περισσότερες λεπτοµέρειες δίνονται στα αντίστοιχα κεφάλαια των INGRES και ORACLE ηµιουργία Πίνακα Η εντολή της SQL που δηµιουργεί ένα πίνακα είναι η CREATE TABLE και έχει την εξής σύνταξη: CREATE TABLE <όνοµα_πίνακα> (<όνοµα_στήλης> <τύπος_δεδοµένων> [(µέγεθος] [NOT NULL] [DEFAULT <τιµή>] [,<όνοµα_στήλης> <τύπος_δεδοµένων> [(µέγεθος] [NOT NULL] [DEFAULT <τιµή>] [CONSTRAINT <περιορισµός> [PRIMARY KEY (<όνοµα_στήλης> [,<όνοµα_στήλης>... ] [FOREIGN KEY (<όνοµα_στήλης> REFERENCES <όνοµα_πίνακα>] [UNIQUE (<όνοµα_στήλης> [,<όνοµα_στήλης>... ]]] Όπως παρατηρούµε από τη σύνταξη της εντολής, για τη δηµιουργία ενός πίνακα χρειάζεται να ορίσουµε : το όνοµα του πίνακα, το οποίο πρέπει να είναι µοναδικό ανάµεσα στους πίνακες της βάσης δεδοµένων. τις στήλες που θα περιλαµβάνει ο πίνακας. Για τη κάθε στήλη, πάλι, θα πρέπει να ορίσουµε το όνοµα της και τον τύπο των δεδοµένων της. Ως τύπο δεδοµένων µπορούµε να ορίσουµε κάποιο από τους επιτρεπτούς τύπους δεδοµένων, που αναφέρθηκαν στην εισαγωγή αυτής της ενότητας και αναγνωρίζει η συγκεκριµένη διάλεκτος της SQL. Οι στήλες του ίδιου πίνακα πρέπει να έχουν διαφορετικά ονόµατα, ενώ διαφορετικοί πίνακες µπορούν να έχουν στήλες µε το ίδιο όνοµα.

5 3. Structured Query Language (SQL 5 Ο προσδιορισµός NOT NULL δηλώνει ότι η στήλη δεν µπορεί να έχει απροσδιόριστες τιµές. Οι απροσδιόριστες τιµές αντιπροσωπεύονται από την ειδική τιµή NULL. Εξ ορισµού µια στήλη έχει τη δυνατότητα να περιλαµβάνει απροσδιόριστες τιµές. Ο προσδιορισµός DEFAULT δίνει τη δυνατότητα στο Σ Β, στην περίπτωση που δεν καθοριστεί τιµή για µία στήλη, να της αποδώσει µια προκαθορισµένη τιµή. Στη σύνταξη του προτύπου της SQL υπάρχει η δυνατότητα να δηλωθεί η προκαθορισµένη τιµή ξεχωριστά για κάθε στήλη. Στις διάφορες υλοποιήσεις όµως της SQL οι προκαθορισµένες τιµές είναι δεδοµένες και εξαρτώνται από το τύπο της κάθε στήλης. Η προκαθορισµένη τιµή για µια αριθµητική στήλη είναι το 0 και για µια αλφαριθµητική είναι η κενή συµβολοσειρά. Να σηµειώσουµε ότι είναι εντελώς ξεχωριστές οι τιµές NULL από την κενή συµβολοσειρά που συµβολίζεται µε ''. Αν δεν δοθεί ο προσδιορισµός NOT NULL δεν έχει νόηµα ο προσδιορισµός DEFAULT. Στη περίπτωση που για µια στήλη οι προσδιορισµοί είναι NOT NULL και NOT DEFAULT σε κάθε εισαγωγή δεδοµένων στον πίνακα θα πρέπει για τη συγκεκριµένη στήλη να προσδιορίζεται τιµή. Αυτός ο προσδιορισµός χρησιµοποιείται οπωσδήποτε για τις στήλες που συµµετέχουν στο σχηµατισµό του κλειδιού του πίνακα. Ο προσδιορισµός [NOT/WITH DEFAULT] υποστηρίζεται µόνο από το INGRES αντί του προσδιορισµού [DEFAULT <τιµή>], αλλά όχι και από το ORACLE. Ο προσδιορισµός CONSTRAINT επιτρέπει τον ορισµό του πρωτεύοντος κλειδιού, τις σχέσεις µε άλλους πίνακες και τον ορισµό ειδικών ευρετηρίων. Για τον ορισµό του πρωτεύοντος κλειδιού χρησιµοποιείται ο προσδιορισµός PRIMARY KEY και ο προσδιορισµός FOREIGN KEY επιτρέπει τον ορισµό των αλληλεξαρτήσεων µεταξύ πινάκων. Μια διαφορετική µορφή της εντολής CREATE TABLE επιτρέπει τη δηµιουργία ενός πίνακα σύµφωνα µε τη δοµή και το περιεχόµενο κάποιου άλλου πίνακα. CREATE TABLE <όνοµα_πίνακα> [(<όνοµα_στήλης> [,<όνοµα_στήλης>...]] AS <υποερώτηση> Η υποερώτηση δοµείται µε τη βοήθεια και τη σύνταξη της εντολής SELECT και επιστρέφει ένα σύνολο στηλών και γραµµών από τον πίνακα ή τους πίνακες που προσδιορίζονται. Τα ονόµατα στηλών µπορούν να χρησιµοποιηθούν ώστε να διαφοροποιήσουµε τα ονόµατα των στηλών από αυτά που ορίζει η υποερώτηση. Αν δεν προσδιοριστούν ονόµατα στηλών χρησιµοποιούνται αυτά που καθορίζει η υποερώτηση. εν υπάρχει η δυνατότητα να οριστεί διαφορετικό µήκος ή τύπος δεδοµένων. Τόσο το ORACLE, όσο και το INGRES, µέσω της εντολής CREATE TABLE, καθορίζουν και ορισµένα χαρακτηριστικά που αφορούν τη µορφή της εσωτερικής αποθήκευσης του πίνακα, πράγµα βέβαια που δεν θα µας απασχολήσει εδώ. Η εντολή CREATE TABLE µε την εκτέλεση της τοποθετεί τον ορισµό του πίνακα στο λεξικό δεδοµένων και δηµιουργεί ένα πίνακα ο οποίος δεν περιέχει καθόλου στοιχεία. Τα στοιχεία µπορούµε να τα τοποθετήσουµε αργότερα µε την κατάλληλη εντολή. Παράδειγµα Με την εντολή CREATE TABLE stud ( studid INTEGER NOT NULL, lname CHAR(20 NOT NULL, fname CHAR(10 NOT NULL, sex CHAR(1 NOT NULL, birthdate DATE CONSTRAINT pkey PRIMARY KEY (studid ; δηµιουργείται ο πίνακας stud µε πέντε στήλες. και πρωτεύον κλειδί τη στήλη studid. Οι τέσσερις πρώτες στήλες δηλώνονται µε τον προσδιορισµό NOT NULL, πράγµα που καθιστά υποχρεωτική την καταχώριση τιµών στις στήλες, ενώ η τελευταία δέχεται προκαθορισµένες τιµές σε περίπτωση που δεν καταχωρηθεί συγκεκριµένη ηµεροµηνία.

6 3. Structured Query Language (SQL 6 Για τη δηµιουργία των πινάκων customer, orders, orderlines και parts, που αποτελούν τη βάση δεδοµένων του παραδείγµατος µας, δίνουµε τις εντολές CREATE TABLE customer ( custcode INTEGER NOT NULL, lname CHAR(15 NOT NULL, fname CHAR(15 NOT NULL, street CHAR(20, city CHAR(10 NOT NULL CONSTRAINT pkey1 PRIMARY KEY (custcode ; CREATE TABLE orderlines ( ordernum INTEGER NOT NULL, partcode INTEGER NOT NULL, qty INTEGER NOT NULL CONSTRAINT pkey2 PRIMARY KEY (ordernum, partcode ; CREATE TABLE orders ( ordernum INTEGER NOT NULL, orderdate DATE NOT NULL, custcode INTEGER NOT NULL CONSTRAINT pkey3 PRIMARY KEY (ordernum, orderdate ; CREATE TABLE parts ( partcode INTEGER NOT NULL, name CHAR(20 NOT NULL, price FLOAT NOT NULL, totalqty INTEGER CONSTRAINT pkey4 PRIMARY KEY (partcode ; Τροποποίηση Πίνακα Προσθήκη Στήλης Η προσθήκη µιας καινούργιας στήλης στην ήδη υπάρχουσα δοµή ενός πίνακα γίνεται µέσω της εντολής ALTER TABLE. Η σύνταξη της εντολής είναι η εξής: ALTER TABLE <όνοµα_πίνακα> ADD [COLUMN]( <όνοµα_στήλης> <τύπος_δεδοµένων> [,<όνοµα_στήλης> <τύπος_δεδοµένων>]... Ο προσδιορισµός NOT NULL δεν µπορεί να χρησιµοποιηθεί σε ένα πίνακα που περιέχει ήδη στοιχεία αφού αυτόµατα παραβιάζεται ο κανόνας ακεραιότητας που ορίζει ο προσδιορισµός. Παράδειγµα Για να προσθέσουµε στον πίνακα stud τη στήλη address, που αναφέρεται στη διεύθυνση του σπουδαστή, δίνουµε την εντολή ALTER TABLE stud ADD COLUMN( address CHAR(25 ; Για όλες τις γραµµές του πίνακα η καινούργια στήλη παίρνει τη τιµή NULL. εν υπάρχει η δυνατότητα να δοθεί ο προσδιορισµός NOT NULL (γιατί;. Μεταβολή Στήλης Ένα είδος µεταβολής υλοποιείται µέσω της εντολής ALTER TABLE. Η µεταβολή αναφέρεται στο µήκος µιας στήλης και µπορεί να γίνει µόνο εφόσον ο πίνακας δεν περιέχει στοιχεία για την συγκεκριµένη στήλη.

7 3. Structured Query Language (SQL 7 Η σύνταξη της εντολής είναι: ALTER TABLE <όνοµα_πίνακα> ALTER COLUMN ( <όνοµα_στήλης> <τύπος_δεδοµένων> [,<όνοµα_στήλης> <τύπος_δεδοµένων>]... Για µεταβολές που αφορούν άλλα χαρακτηριστικά της στήλης, όπως το όνοµα, ο τύπος δεδοµένων ή άλλοι προσδιορισµοί, θα πρέπει να ακολουθηθεί κάποιος έµµεσος τρόπος, είτε µε τη δηµιουργία ενός καινούργιου πίνακα µε τις επιθυµητές προδιαγραφές και η αντιγραφή σε αυτόν των στοιχείων του αρχικού πίνακα, είτε µε τη δηµιουργία κάποιας όψης που θα παρουσιάζει τα δεδοµένα µε τον επιθυµητό τρόπο. Το INGRES δεν διαθέτει τη σχετική εντολή. Η τροποποίηση µπορεί να γίνει µόνο µε έµµεσο τρόπο. Παράδειγµα Για να τροποποιήσουµε τη στήλη fname ώστε να δέχεται περισσότερους χαρακτήρες δίνουµε την εντολή ALTER TABLE stud ALTER COLUMN(fname CHAR(20 Αποµάκρυνση Στήλης Η αναδιοργάνωση ενός πίνακα και η τροποποίηση της δοµής του µε την αποµάκρυνση κάποιας στήλης πραγµατοποιείται µε την βοήθεια της εντολής ALTER TABLE. Η σύνταξη της εντολής είναι: ALTER TABLE <όνοµα_πίνακα> DROP <όνοµα_στήλης> CASCADE RESTRICT Ένας άλλος τρόπος αντιµετώπισης είναι η δηµιουργία µιας όψης του πίνακα η οποία να µην περιλαµβάνει τις στήλες που δεν µας χρειάζονται. Σχετικά µε τις όψεις θα µιλήσουµε σε επόµενη ενότητα του κεφαλαίου. Με τον πρώτο τρόπο έχουµε οριστική αποµάκρυνση των στοιχείων που περιελάµβαναν οι ανεπιθύµητες στήλες, ενώ µε τον δεύτερο τα στοιχεία παραµένουν αλλά δεν φαίνονται στο χρήστη. Ποιο από τους δύο τρόπους θα ακολουθήσουµε µας το υπαγορεύει η φύση της βάσης δεδοµένων, ο όγκος των στοιχείων του πίνακα και ο λόγος της αποµάκρυνσης των στηλών. Παράδειγµα Για τη φυσική αποµάκρυνση της στήλης address από τον πίνακα stud µπορούµε να χρησιµοποιήσουµε την εντολή ALTER TABLE temp DROP address RESTRICT Μέσω όψης έχουµε το ίδιο αποτέλεσµα, για τους χρήστες της βάσης δεδοµένων, µε την εντολή CREATE VIEW stud1 AS SELECT studid, lname, fname, sex, birthdate ; Παρατηρούµε ότι αναγκαζόµαστε να αλλάξουµε το όνοµα της όψης που βλέπουν οι χρήστες, αφού δεν επιτρέπεται η όψη και ο πίνακας να έχουν το ίδιο όνοµα. Περισσότερα για τις όψεις παρουσιάζουµε σε επόµενη ενότητα ιαγραφή Πίνακα Η διαγραφή ενός πίνακα συνεπάγεται τόσο τη διαγραφή των στοιχείων που περιλαµβάνει, όσο και τη διαγραφή του ορισµού του. Μετά τη διαγραφή ενός πίνακα η επανάκτηση των στοιχείων του δεν είναι απλή

8 3. Structured Query Language (SQL 8 υπόθεση και αρκετές φορές είναι και αδύνατη. Το τι µπορεί να επανακτηθεί εξαρτάται από τις δυνατότητες επαναφοράς που προσφέρει το σύστηµα. Περισσότερα στοιχεία αναφέρουµε στην αντίστοιχη ενότητα αυτού του κεφαλαίου. Η εντολή DROP TABLE µέσω της οποίας διαγράφεται ένας πίνακας έχει την εξής σύνταξη: DROP TABLE <όνοµα_πίνακα> Η διαγραφή ενός πίνακα συνεπάγεται και τη διαγραφή όλων των όψεων, των ευρετηρίων, των κανόνων ακεραιότητας και των δικαιωµάτων που αναφέρονται στον πίνακα. Παράδειγµα Η εντολή για τη διαγραφή του πίνακα stud είναι τόσο απλή όσο και επικίνδυνη DROP TABLE stud Ευρετήρια Τα ευρετήρια σε µια βάση δεδοµένων έχουν ως πρωταρχικό σκοπό την επιτάχυνση των αναζητήσεων που αναφέρονται στα δεδοµένα των πινάκων. Σε ένα δεύτερο επίπεδο και ως παρενέργεια προσφέρουν τη δυνατότητα υλοποίησης των κλειδιών στους πίνακες που αναφέρονται. Πέρα από τα πλεονεκτήµατα τους, όµως, τα ευρετήρια παρουσιάζουν και ορισµένα µειονεκτήµατα. Πρώτα απ' όλα δεσµεύουν χώρο και δεύτερο καθυστερούν τις ενηµερώσεις, αφού απαιτούν και τα ίδια ενηµέρωση παράλληλα µε τους πίνακες. Χρειάζεται, λοιπόν, προσοχή στο σχεδιασµό µιας βάσης δεδοµένων και στον ορισµό των ευρετηρίων ώστε να µεγιστοποιηθούν τα πλεονεκτήµατα και να ελαχιστοποιηθούν τα µειονεκτήµατα. Από τη στιγµή που θα δηµιουργηθεί ένα ευρετήριο ο χρήστης δεν χρειάζεται να νοιάζεται πια γι' αυτό. Το ίδιο το Σ Β και η SQL αναλαµβάνουν να το χρησιµοποιήσουν µε τον καλύτερο δυνατό τρόπο ώστε να ικανοποιηθούν οι ερωτήσεις που απευθύνει ο χρήστης στη βάση δεδοµένων. Στην πράξη, βέβαια, ο τρόπος που διατυπώνεται µια ερώτηση έχει σηµασία στο αν θα χρησιµοποιηθεί ή όχι κάποιο ευρετήριο. Ο ορισµός και η δηµιουργία ευρετηρίων (index γίνεται µέσω της εντολής CREATE [UNIQUE] INDEX <ευρετήριο> ON <πίνακας> ( στήλη [ASC DEC] [, στήλη [ASC DEC]... ] Ο προσδιορισµός UNIQUE υποχρεώνει τον πίνακα να διαθέτει µια µοναδική τιµή σε κάθε γραµµή στην αντίστοιχη στήλη. Οι προσδιορισµοί ASC και DEC καθορίζουν την ταξινόµηση της στήλης, αύξουσα και φθίνουσα αντίστοιχα. Αν το ευρετήριο δηµιουργηθεί ενώ ο πίνακας περιέχει δεδοµένα και οριστεί ο προσδιορισµός UNIQUE θα πρέπει τα δεδοµένα του πίνακα να ανταποκρίνονται στη δέσµευση του προσδιορισµού, διαφορετικά η εντολή απορρίπτεται. Να σηµειώσουµε ότι στο ORACLE η δηµιουργία ευρετηρίων ελέγχεται από ξεχωριστό δικαίωµα που ονοµάζεται INDEX. Οπότε ένας χρήστης για να µπορεί να δηµιουργεί ευρετήρια θα πρέπει προηγουµένως να του έχει παραχωρηθεί το σχετικό δικαίωµα από το Β. Στο INGRES δεν υπάρχει τέτοιος περιορισµός. Οι χρήστες που έχουν δικαίωµα δηµιουργίας πινάκων µπορούν να ορίζουν και ευρετήρια. Από τον ορισµό ενός ευρετηρίου φαίνεται ότι το ευρετήριο µπορεί να αναφέρεται σε µία ή περισσότερες στήλες, του ίδιου πάντοτε πίνακα. DROP INDEX <ευρετήριο> Να σηµειώσουµε ότι η εντολή DROP TABLE, η οποία διαγράφει ένα πίνακα, ταυτόχρονα διαγράφει και όλα τα ευρετήρια που αναφέρονται σ' αυτόν. Με την εντολή CREATE UNIQUE INDEX studndx ON stud (studid; δηµιουργούµε το ευρετήριο studndx για τη στήλη studid και παράλληλα απαγορεύεται δύο γραµµές του πίνακα να έχουν την ίδια τιµή στη στήλη studid. Με αυτό τον τρόπο επιβάλλουµε τη µοναδικότητα στις τιµές της στήλης studid, που αποτελεί και το πρωτεύον κλειδί του πίνακα stud.

9 3. Structured Query Language (SQL Γλώσσα Χειρισµού εδοµένων - Ανάκτηση και Παρουσίαση εδοµένων Η ανάκτηση του περιεχοµένου µιας βάσης δεδοµένων πραγµατοποιείται αποκλειστικά µέσω της εντολής SELECT, η οποία αποτελεί και την πιο ισχυρή και πολύπλοκη εντολή της SQL. Εκτός από την ανάκτηση δεδοµένων η εντολή SELECT έχει και κάποιες απλές δυνατότητες παρουσίασης των δεδοµένων που ανακτά. Τη σύνταξη και τις δυνατότητες της εντολής θα τις παρουσιάσουµε τµηµατικά, αρχίζοντας από τις πιο απλές µορφές της και προχωρώντας στις πιο σύνθετες. Μέσω της εντολής SELECT η SQL υλοποιεί όλες τις εντολές της σχεσιακής άλγεβρας που έχουµε αναφέρει στο κεφάλαιο για τις γλώσσες δεδοµένων του σχεσιακού Μ. Η εντολή SELECT µπορεί να χρησιµοποιηθεί µε τον ίδιο τρόπο για την ανάκτηση στοιχείων τόσο από πίνακες, όσο και από όψεις. Στην περιγραφή της εντολής όταν χρησιµοποιούµε τη λέξη 'πίνακας', εννοούµε τόσο τον πίνακα όσο και την όψη. Στις περιπτώσεις που κάτι ισχύει µόνο για πίνακες ή µόνο για όψεις το διευκρινίζουµε ρητά Απλή αναζήτηση και παρουσίαση δεδοµένων Η πιο απλή µορφή της εντολής SELECT, που θα παρουσιάσουµε σ' αυτή την ενότητα, µπορεί να χρησιµοποιηθεί για την αναζήτηση και παρουσίαση δεδοµένων από ένα πίνακα ή όψη, σύµφωνα µε κάποια ταξινόµηση και τα οποία να πληρούν κάποια συνθήκη. Να σηµειώσουµε ότι δεν µπορούµε να ανατρέψουµε τη σειρά που παρουσιάζονται τα διάφορα τµήµατα της εντολής. Η απλή σύνταξη της εντολής είναι η εξής: SELECT [DISTINCT] {* <προσδιορισµός_δεδοµένων>} FROM <πίνακας> [WHERE <συνθήκη>] [ORDER BY <στήλη> [{ASC DEC}] [,<στήλη> [{ASC DEC}... ] Παρατηρούµε ότι τα µόνα απαραίτητα µέρη της σύνταξης της εντολής είναι το τµήµα που προσδιορίζει τις στήλες που θέλουµε να εµφανίσουµε και τον πίνακα στον οποίο ανήκουν οι στήλες. Στην πιο απλή ακόµη περίπτωση η σύνταξη περιορίζεται στη µορφή SELECT * FROM <πίνακας> όπου µε το σύµβολο '*' δηλώνουµε ότι θέλουµε να ανακτήσουµε και να εµφανίσουµε τα στοιχεία όλων των στηλών του πίνακα. Για παράδειγµα η εντολή SELECT * εµφανίζει όλα τα περιεχόµενα του πίνακα stud. Studid lname fname sex birthdate ΠΕΛΟΠΑ ΙΩΑΝΝΑ Θ 11/12/75 2 ΘΕΟ ΟΣΙΟΥ ΜΙΧΑΛΗΣ Α 10/01/74 3 ΠΑΝΑΡΑ ΕΛΕΝΗ Θ 15/06/74 4 ΙΩΑΝΝΟΥ ΣΤΕΛΙΟΣ Α 03/01/74

10 3. Structured Query Language (SQL 10 5 ΝΙΚΑΝ ΡΟΥ ΕΛΕΝΗ Θ 20/07/73 Βέβαια στις περισσότερες περιπτώσεις δεν µας ενδιαφέρουν όλες οι στήλες που περιέχονται σε ένα πίνακα, αλλά µόνο ορισµένες από αυτές. Για να πάρουµε τα στοιχεία που περιέχονται µόνο σε ορισµένες στήλες του πίνακα αρκεί να δηλώσουµε τα ονόµατα των στηλών που µας ενδιαφέρουν στη θέση που στη σύνταξη της εντολής αναφέρεται ως 'προσδιορισµός δεδοµένων'. Για να εµφανίσουµε µόνο τα δεδοµένα των στηλών studid, lname και fname δίνουµε την εντολή SELECT studid, lname, fname και έχουµε ως αποτέλεσµα Studid lname fname ΠΕΛΟΠΑ ΙΩΑΝΝΑ 2 ΘΕΟ ΟΣΙΟΥ ΜΙΧΑΛΗΣ 3 ΠΑΝΑΡΑ ΕΛΕΝΗ 4 ΙΩΑΝΝΟΥ ΣΤΕΛΙΟΣ 5 ΝΙΚΑΝ ΡΟΥ ΕΛΕΝΗ Να παρατηρήσουµε ότι, στη σύνταξη της εντολής, τα ονόµατα των στηλών χωρίζονται µεταξύ τους µε κόµµατα. Ξέρουµε από τη θεωρία ότι οι γραµµές ενός πίνακα είναι διαφορετικές µεταξύ τους, οπότε µε τον προσδιορισµό '*' παίρνουµε σίγουρα διαφορετικά στοιχεία σε κάθε γραµµή. Στην περίπτωση όµως που επιλέγουµε να παρουσιάσουµε τα δεδοµένα συγκεκριµένων στηλών υπάρχει περίπτωση τα δεδοµένα που παίρνουµε να είναι τα ίδια σε διαφορετικές γραµµές. Με την εντολή SELECT fname εµφανίζονται τα µικρά ονόµατα όλων των σπουδαστών που περιέχονται στον πίνακα stud. fname ΙΩΑΝΝΑ ΜΙΧΑΛΗΣ ΕΛΕΝΗ ΣΤΕΛΙΟΣ ΕΛΕΝΗ Είναι λογικό διάφοροι σπουδαστές να έχουν τα ίδια µικρά ονόµατα οπότε στα αποτελέσµατα της εντολής θα περιέχονται τα ίδια ονόµατα πολλές φορές (στο παράδειγµα µας το όνοµα ΕΛΕΝΗ παρουσιάζεται δύο φορές. Αν τώρα επιθυµία µας είναι να δούµε ποια διαφορετικά µικρά ονόµατα έχουν οι σπουδαστές του πίνακα µας αρκεί να προσθέσουµε στην εντολή τον προσδιορισµό DISTINCT. ηλαδή µε την εντολή SELECT DISTINCT fname απαλείφονται από την παρουσίαση οι διπλές εµφανίσεις των ονοµάτων. fname ΙΩΑΝΝΑ ΜΙΧΑΛΗΣ ΣΤΕΛΙΟΣ ΕΛΕΝΗ Ο προσδιορισµός DISTINCT, λοιπόν, απαλείφει από την παρουσίαση των αποτελεσµάτων τις διπλές εµφανίσεις γραµµών.

11 3. Structured Query Language (SQL 11 Αλλαγή ονόµατος στήλης Στη παρουσίαση των αποτελεσµάτων της εντολής SELECT παρατηρούµε ότι ως τίτλος στην κάθε στήλη εµφανίζεται το όνοµα της στήλης. Έχουµε τη δυνατότητα να αλλάξουµε το όνοµα της στήλης, κατά την εµφάνιση των δεδοµένων, µε την εντολή SELECT <προσδιορισµός_δεδοµένων> AS <όνοµα> FROM <πίνακας> Για παράδειγµα SELECT studid AS κωδικός, lname AS επώνυµο, fname AS όνοµα Στο ORACLE το ίδιο αποτέλεσµα έχουµε και µε την εντολή SELECT studid "κωδικός", lname "επώνυµο", fname "όνοµα" κωδικός επώνυµο όνοµα ΠΕΛΟΠΑ ΙΩΑΝΝΑ 2 ΘΕΟ ΟΣΙΟΥ ΜΙΧΑΛΗΣ 3 ΠΑΝΑΡΑ ΕΛΕΝΗ 4 ΙΩΑΝΝΟΥ ΣΤΕΛΙΟΣ 5 ΝΙΚΑΝ ΡΟΥ ΕΛΕΝΗ Προσδιορισµός εδοµένων Στη σύνταξη της εντολής SELECT χρησιµοποιούµε τον όρο 'προσδιορισµός δεδοµένων', πράγµα που σηµαίνει ότι εκτός από τα ονόµατα των στηλών του πίνακα µπορούµε να προσδιορίσουµε τα δεδοµένα που θα εµφανιστούν και µε άλλους τρόπους. Μπορούµε να διακρίνουµε τρεις επιπλέον κατηγορίες προσδιορισµού των δεδοµένων. Προσδιορισµός κειµένου : Έχουµε τη δυνατότητα να ορίσουµε κάποιο κείµενο το οποίο θα εµφανίζεται σε κάθε γραµµή των δεδοµένων. Για παράδειγµα µε την εντολή SELECT 'Ο σπουδαστής µε κωδικό ',studid, ' έχει επώνυµο ',lname έχουµε το αποτέλεσµα studid lname Ο σπουδαστής µε κωδικό 1 έχει επώνυµο ΠΕΛΟΠΑ Ο σπουδαστής µε κωδικό 2 έχει επώνυµο ΘΕΟ ΟΣΙΟΥ Ο σπουδαστής µε κωδικό 3 έχει επώνυµο ΠΑΝΑΡΑ Ο σπουδαστής µε κωδικό 4 έχει επώνυµο ΙΩΑΝΝΟΥ Ο σπουδαστής µε κωδικό 5 έχει επώνυµο ΝΙΚΑΝ ΡΟΥ Μπορούµε να ορίσουµε οποιοδήποτε κείµενο, το οποίο θα επαναλαµβάνετε σε κάθε γραµµή, φτάνει να το τοποθετήσουµε σε απλά εισαγωγικά. Προσδιορισµός αριθµητικών εκφράσεων : Μπορούµε να χρησιµοποιήσουµε οποιαδήποτε αριθµητική έκφραση. Οι αριθµητικοί τελεστές είναι οι γνωστοί +, -, *, / για τις πράξεις της πρόσθεσης της αφαίρεσης, του πολλαπλασιασµού και της διαίρεσης. Με την εντολή SELECT partcode, name, 0.35*qty AS ' έσµευση' FROM parts

12 3. Structured Query Language (SQL 12 προσδιορίζουµε το 35% της ποσότητας του προϊόντος και το εµφανίζουµε υπό τον τίτλο 'δέσµευση'. Προσδιορισµός απλών συναρτήσεων : Ο προσδιορισµός των δεδοµένων µπορεί να περιλαµβάνει και συναρτήσεις. Υπάρχουν διάφορες κατηγορίες συναρτήσεων, όπως µαθηµατικές, χειρισµού συµβολοσειρών και ηµεροµηνιών ή µετατροπής δεδοµένων από τον ένα τύπο δεδοµένων στον άλλο. Η κάθε διάλεκτος της SQL έχει τις δικές της συναρτήσεις που κατά κανόνα είναι διαφορετικές από αυτές των άλλων διαλέκτων. Για παράδειγµα, τόσο στο INGRES, όσο και στο ORACLE, συναντούµε τη συνάρτηση length (<συµβολοσειρά> που δίνει το µήκος µιας συµβολοσειράς σε χαρακτήρες. Με την εντολή SELECT studid, lname, length(lname AS µήκος έχουµε ως αποτέλεσµα τον πίνακα studid lname µήκος ΠΕΛΟΠΑ 6 2 ΘΕΟ ΟΣΙΟΥ 9 3 ΠΑΝΑΡΑ 6 4 ΙΩΑΝΝΟΥ 7 5 ΝΙΚΑΝ ΡΟΥ 9 Είναι προφανές ότι µπορούµε να συνδυάσουµε όλους τους τρόπους προσδιορισµού των δεδοµένων, αναµειγνύοντας ονόµατα στηλών, κείµενο, συναρτήσεις και αριθµητικές πράξεις. Ταξινόµηση Η ταξινόµηση που παρουσιάζουν τα αποτελέσµατα της εντολής SELECT εξαρτάται από το κλειδί του πίνακα, που, όπως έχουµε αναφέρει και σε προηγούµενη ενότητα, υλοποιείται έµµεσα µέσω της εσωτερικής οργάνωσης του πίνακα. Οπότε τα αποτελέσµατα µας συνήθως εµφανίζονται ταξινοµηµένα σύµφωνα µε το κλειδί του πίνακα. Μπορούµε πάντοτε να ορίσουµε τη δική µας ταξινόµηση των αποτελεσµάτων µέσω του προσδιορισµού ORDER BY της εντολής SELECT. Είναι βέβαια προφανές ότι η εντολή επηρεάζει µόνο την εµφάνιση των αποτελεσµάτων και όχι την εσωτερική οργάνωση των δεδοµένων. Αν θέλουµε τα στοιχεία των σπουδαστών που στην αρχική εκτέλεση της εντολής εµφανίσαµε ταξινοµηµένα σύµφωνα µε τη στήλη studid να εµφανιστούν ταξινοµηµένα σύµφωνα µε το επώνυµο και το όνοµα των σπουδαστών αρκεί να δώσουµε την εντολή SELECT studid, lname, fname ORDER BY lname, fname και το αποτέλεσµα είναι ο πίνακας studid lname fname ΘΕΟ ΟΣΙΟΥ ΜΙΧΑΛΗΣ 4 ΙΩΑΝΝΟΥ ΣΤΕΛΙΟΣ 5 ΝΙΚΑΝ ΡΟΥ ΕΛΕΝΗ 3 ΠΑΝΑΡΑ ΕΛΕΝΗ 1 ΠΕΛΟΠΑ ΙΩΑΝΝΑ Να παρατηρήσουµε ότι οι στήλες που εµφανίζονται µετά το ORDER BY και καθορίζουν την ταξινόµηση δεν χρειάζεται να εµφανίζονται και µετά το SELECT αρκεί να είναι στήλες του πίνακα που προσδιορίζεται µετά το FROM. Όπως βλέπουµε στη σύνταξη της εντολής µετά το ORDER BY υπάρχουν και δύο προαιρετικοί προσδιορισµοί από τους οποίους µπορεί να επιλεγεί ένας για κάθε στήλη. Οι προσδιορισµοί αυτοί ορίζουν το τρόπο που θα γίνει η ταξινόµηση. Ο προσδιορισµός ASC δηλώνει ότι η ταξινόµηση θα γίνει κατά αύξουσα σειρά και ο προσδιορισµός DESC κατά φθίνουσα, σύµφωνα πάντα µε τη κωδικοποίηση ASCII που υποστηρίζει το σύστηµα. Όταν σε µία στήλη δεν προσδιορίζεται ο τρόπος ταξινόµησης επιλέγεται από την SQL η αύξουσα ταξινόµηση.

13 3. Structured Query Language (SQL 13 Ο προσδιορισµός ORDER BY γράφεται πάντοτε τελευταίος, οποιαδήποτε µορφή και να έχει η εντολή SELECT. Πρώτα συγκεντρώνονται τα δεδοµένα που ικανοποιούν όλους τους άλλους προσδιορισµούς της εντολής SELECT και στο τελικό αποτέλεσµα εφαρµόζεται η ταξινόµηση που ορίζει ο προσδιορισµός ORDER BY. Ο τρόπος της ταξινόµησης εξαρτάται και από τον τύπο των στηλών που ορίζουν την ταξινόµηση. Αν µια στήλη είναι αριθµητική η ταξινόµηση είναι αριθµητική, ενώ αν η στήλη είναι αλφαριθµητική τότε η ταξινόµηση γίνεται σύµφωνα µε τον κώδικα χαρακτήρων που υποστηρίζει το σύστηµα (συνήθως πρόκειται για τον κώδικα ASCII. Σε οποιαδήποτε µορφή ταξινόµησης, αύξουσα ή φθίνουσα, αριθµητική ή αλφαριθµητική, οι απροσδιόριστες τιµές εµφανίζονται πάντοτε πρώτες. Ανάκτηση δεδοµένων υπό συνθήκη Η ανάκτηση δεδοµένων υπό συνθήκη καθορίζεται από τον προσδιορισµό WHERE και την συνθήκη που ακολουθεί. Η συνθήκη είναι µια έκφραση που δίνει ένα λογικό αποτέλεσµα, αληθές ή ψευδές. Στην απλή της µορφή, µια συνθήκη περιλαµβάνει ονόµατα στηλών, τελεστές σύγκρισης, λογικούς τελεστές, συναρτήσεις και σταθερές. Η συνθήκη εξετάζεται για κάθε γραµµή του πίνακα και εµφανίζονται τα δεδοµένα από τις γραµµές που επαληθεύουν την συνθήκη. Για παράδειγµα η εντολή SELECT studid, lname, ftname WHERE studid = 2 εµφανίζει τη γραµµή του πίνακα για την οποία ο κωδικός του σπουδαστή είναι ίσος µε 2, δηλαδή studid lname fname ΘΕΟ ΟΣΙΟΥ ΜΙΧΑΛΗΣ Στη κατηγορία των τελεστών διακρίνουµε τους συνήθεις τελεστές σύγκρισης ( =, <>, >, <, >=, <=, όπως επίσης και τους λογικούς τελεστές AND, OR και NOT. Εκτός από τους προηγούµενους τελεστές στην SQL υπάρχουν και οι ειδικοί τελεστές IN, BETWEEN, LIKE, ANY, EXIST, MINUS, INTERSECT και UNION. Στη συνέχεια αναφερόµαστε στους τελεστές IN, BETWEEN και LIKE. Τους τελεστές ANY και EXIST θα τους περιγράψουµε στη ενότητα που αναφέρεται στις υποερωτήσεις, ενώ οι τελεστές UNION, MINUS και INTERSECT περιγράφονται στην ενότητα που αναφέρεται στη υλοποίηση των πράξεων της σχεσιακής άλγεβρας. Ο προσδιορισµός WHERE χρησιµοποιείται µε τον ίδιο τρόπο και στις εντολές UPDATE και DELETE. Περισσότερες πληροφορίες για τις δύο εντολές δίνουµε σε επόµενες παραγράφους. Τελεστής IN Μέσω του τελεστή IN ελέγχουµε αν µια τιµή βρίσκεται σε ένα σύνολο τιµών. Το σύνολο τιµών µπορεί να αποτελείται από σταθερές ή να προκύπτει ως αποτέλεσµα µιας εντολής SELECT σε υποερώτηση. Η σύνταξη του τελεστή IN έχει τη µορφή IN (<σύνολο τιµών> Για παράδειγµα η εντολή SELECT studid, lname, fname WHERE studid ΙΝ ( 2, 4, 5 εµφανίζει τα στοιχεία των σπουδαστών µε κωδικούς 2, 4 και 5. Το ίδιο αποτέλεσµα έχουµε µε την εντολή SELECT studid, lname, fname WHERE studid = 2 OR studid = 4 OR studid = 5

14 3. Structured Query Language (SQL 14 Τελεστής BETWEEN Ο τελεστής BETWEEN ελέγχει αν µια τιµή βρίσκεται στο διάστηµα που ορίζεται, συµπεριλαµβανοµένων και των τιµών που αναφέρονται. Η σύνταξη του τελεστή έχει τη µορφή BETWEEN <σταθερά> AND <σταθερά> Για παράδειγµα η εντολή SELECT studid, lname, fname WHERE studid BETWEEN 1 AND 3 εµφανίζει τα στοιχεία των σπουδαστών µε κωδικούς µεταξύ του 1 και του 3. Το ίδιο αποτέλεσµα επιτυγχάνουµε µε την εντολή SELECT studid, lname, fname WHERE studid >= 1 AND studid <= 3 Ο τελεστής BETWEEN µας δίνει τη δυνατότητα να απλοποιήσουµε τη συνθήκη και να την κάνουµε πιο κατανοητή. Τελεστής LIKE Μέσω του τελεστή LIKE µπορούµε να ταυτοποιήσουµε µερικά τη τιµή µιας στήλης µε αλφαριθµητικό περιεχόµενο. Ο τελεστής LIKE µας παρέχει τη δυνατότητα να αναζητήσουµε δεδοµένα που δεν γνωρίζουµε επακριβώς. Για το σκοπό αυτό χρησιµοποιείται σε συνδυασµό µε τους δύο χαρακτήρες πασπαρτού, % και _. Ο χαρακτήρας % ταυτοποιεί ένα σύνολο χαρακτήρων ενώ ο χαρακτήρας _ µόνο ένα. Για την εµφάνιση των πελατών που τα ονόµατα τους αρχίζουν µε τους χαρακτήρες ΠΑΠΑ, χρησιµοποιούµε την εντολή SELECT custcode, lname, fname FROM customer WHERE lname LIKE 'ΠΑΠΑ%' και έχουµε ως αποτέλεσµα τον πίνακα custcode lname fname ΠΑΠΑΕΜΑΝΟΥΗΛ ΚΩΣΤΑΣ Μπορούν να δηµιουργηθούν πιο σύνθετες λογικές εκφράσεις µε τη χρησιµοποίηση των λογικών τελεστών NOT, AND και OR. Η εντολή SELECT custcode, lname, fname, city FROM customer WHERE lname LIKE 'ΠΑΠΑ%' OR city = 'ΧΑΝΙΑ' εµφανίζει όλους τους πελάτες που το επώνυµο τους αρχίζει από ΠΑΠΑ ή βρίσκονται στα Χανιά. custcode lname fname city ΠΑΠΑΕΜΑΝΟΥΗΛ ΚΩΣΤΑΣ ΘΕΣ/ΝΙΚΗ 3 ΚΟΥΚΑ ΠΗΝΕΛΟΠΗ ΧΑΝΙΑ 4 ΟΡΑΤΙΟΥ ΘΕΑΝΩ ΧΑΝΙΑ Απροσδιόριστες Τιµές Ο έλεγχος για τις στήλες που παίρνουν απροσδιόριστες τιµές έχει κάποια ιδιαιτερότητα. Η απροσδιόριστη τιµή συµβολίζεται µεν µε NULL αλλά δεν µπορούµε να τη χρησιµοποιήσουµε όπως τις άλλες σταθερές, π.χ. η έκφραση birthdate = NULL είναι λάθος. Για τον έλεγχο της τιµής NULL χρησιµοποιούµε τη σχέση IS [NOT] NULL Για παράδειγµα η εντολή

15 3. Structured Query Language (SQL 15 SELECT studid, lname, fname WHERE birthdate IS NOT NULL εµφανίζει όλες τις γραµµές του πίνακα stud για τις οποίες η στήλη birthdate δεν έχει απροσδιόριστη τιµή. Για το χειρισµό των απροσδιόριστων τιµών υπάρχουν και κάποιες ειδικές συναρτήσεις που επιτρέπουν, κατά την εµφάνιση των δεδοµένων, τη µετατροπή τους σε προκαθορισµένες τιµές. Το ORACLE διαθέτει τη συνάρτηση NVL και το INGRES τη IFNULL. Η σύνταξη και των δύο είναι παρόµοια, όπως και η λειτουργία τους. IFNULL(<στήλη>, <σταθερά> NVL(<στήλη>, <σταθερά> Αν η τιµή που περιέχει η στήλη είναι NULL εµφανίζει τη σταθερά που καθορίζουµε, διαφορετικά την ίδια την τιµή. Για παράδειγµα η εντολή SELECT studid, lname, fname, IFNULL(birthdate, 'Άγνωστη' εµφανίζει τη λέξη 'Άγνωστη' όταν η ηµεροµηνία γέννησης σε µια γραµµή είναι απροσδιόριστη Οµαδοποίηση Γραµµών Μέχρι τώρα χρησιµοποιήσαµε την εντολή SELECT για την ανάκτηση λεπτοµερών στοιχείων από κάποιο πίνακα. Με τον προσδιορισµό GROUP BY έχουµε την δυνατότητα να εµφανίζουµε οµαδοποιηµένα στοιχεία, σύµφωνα µε τις τιµές µιας ή περισσοτέρων στηλών. Ο τρόπος που λειτουργεί η εντολή είναι ο εξής. Επιλέγονται πρώτα όλες οι γραµµές του πίνακα που ικανοποιούν την συνθήκη του προσδιορισµού WHERE, στη συνέχεια ταξινοµούνται σύµφωνα µε τις στήλες που έχουµε ορίσει στο GROUP BY και από αυτές παραµένουν όσες ικανοποιούν την συνθήκη του προσδιορισµού HAVING. Τελικά η εντολή µας παρουσιάζει κάθε διαφορετικό συνδυασµό τιµών για τα δεδοµένα που ζητήσαµε στον προσδιορισµό δεδοµένων του SELECT. Οι στήλες που ορίζονται στον προσδιορισµό δεδοµένων θα πρέπει να εµφανίζονται και στον προσδιορισµό GROUP BY. Επίσης οι εκφράσεις που χρησιµοποιούνται στον προσδιορισµό δεδοµένων πρέπει να δίνουν µία µοναδικά τιµή για κάθε συνδυασµό τιµών των στηλών που ορίζονται στο GROUP BY. Η γενική σύνταξη της εντολής SELECT, για την οµαδοποίηση γραµµών, είναι: SELECT <προσδιορισµός_δεδοµένων> FROM <πίνακας> [WHERE <συνθήκη>] [GROUP BY <στήλες>] [HAVING <συνθήκη>] [ORDER BY <στήλη> [{ASC DEC}] [,<στήλη> [{ASC DEC}... ] Στο προσδιορισµό δεδοµένων µπορούµε να έχουµε αναφορά σε στήλες ή συναρτήσεις οµάδων, όπως και αριθµητικών εκφράσεων, φτάνει να έχουµε µια τιµή για κάθε οµάδα δεδοµένων. Στη συνθήκη που ακολουθεί το HAVING µπορούν να συγκριθούν ιδιότητες των οµάδων µε κάποια σταθερά ή ιδιότητες διαφορετικών οµάδων µέσω υποερωτήσεων. Οι Συναρτήσεις οµάδων χρησιµοποιούνται για να δώσουν συγκεντρωτικά αποτελέσµατα για οµάδες δεδοµένων. Μπορούν να χρησιµοποιηθούν τα δεδοµένα ενός πίνακα σαν µια οµάδα ή σε συνδυασµό µε τις οµάδες δεδοµένων που δηµιουργούνται µέσω του προσδιορισµού GROUP BY. COUNT([DISTINCT] <στήλη> *> SUM([DISTINCT] <έκφραση> AVG([DISTINCT] <έκφραση> MAX(<έκφραση> MIN(<έκφραση>

16 3. Structured Query Language (SQL 16 Η συνάρτηση COUNT µας δίνει το πλήθος των γραµµών που περικλείονται σε µια οµάδα, η SUM το άθροισµα τους και η AVG τον αριθµητικό µέσο όρο τους. Με τον προσδιορισµό DISTINCT και οι τρεις συναρτήσεις λαµβάνουν υπόψη στους υπολογισµούς τους µόνο τις διαφορετικές τιµές της στήλης που έχει προσδιοριστεί. Οι συναρτήσεις MIN και MAX υπολογίζουν την ελάχιστη και µέγιστη τιµή της έκφρασης σε κάθε οµάδα δεδοµένων. Το ORACLE υποστηρίζει ακόµη δύο συναρτήσεις, τις STDDEV και VARIANCE, που δίνουν την τυπική απόκλιση και τη διακύµανση, αντίστοιχα, του συνόλου των δεδοµένων που προσδιορίζονται. Η εντολή SELECT custcode, COUNT(* AS παραγγελίες FROM orders GROUP BY custcode µας δίνει το πλήθος των παραγγελιών ανά πελάτη. custcode παραγγελίες Επίσης η εντολή SELECT partcode, SUM(qty AS ποσότητα FROM orderlines GROUP BY partcode HAVING SUM(qty > 10 µας δίνει τη συνολική ποσότητα που έχει παραγγελθεί για κάθε προϊόν, ανεξάρτητα από τις παραγγελίες, αλλά µε τον περιορισµό τα κοµµάτια που έχουν παραγγελθεί να ξεπερνούν τα 10. partcode ποσότητα Να σηµειώσουµε ότι ο προσδιορισµός GROUP BY σε συνδυασµό µε τις συναρτήσεις οµάδων αποτελούν ένα εύκολο και απλό τρόπο να αντλήσουµε στατιστικά στοιχεία από τη βάση δεδοµένων Υποερωτήσεις Η υποερώτηση είναι µια ερώτηση η οποία βρίσκεται ενκυβωτισµένη µέσα σε µια άλλη και περικλείεται από παρενθέσεις. ηµιουργείται µε την εντολή SELECT και επαναλαµβάνει τη σύνταξη της. Υποερωτήσεις µπορούµε να χρησιµοποιήσουµε στις περισσότερες από τις εντολές της SQL, όπως η INSERT, η UPDATE, η DELETE και η CREATE. Στην εντολή SELECT οι υποερωτήσεις µπορούν να χρησιµοποιηθούν ως τµήµατα των συνθηκών στους προσδιορισµούς WHERE και HAVING. Μπορούµε να διακρίνουµε δύο ειδών υποερωτήσεις. Το ένα είδος είναι οι απλές υποερωτήσεις οι οποίες επιστρέφουν µόνο µία τιµή για κάθε γραµµή που εξετάζεται ή ένα σύνολο γραµµών και είναι ανεξάρτητες από την εξωτερική ερώτηση. Το δεύτερο είδος είναι οι συσχετιζόµενες υποερωτήσεις. Οι συσχετιζόµενες υποερωτήσεις εξαρτώνται από κάποια τιµή κάποιας στήλης της εξωτερικής ερώτησης. Οι απλές υποερωτήσεις υπολογίζονται µία φορά για όλη την εντολή SELECT, ενώ στις συσχετιζόµενες υποερωτήσεις έχουµε καινούριο υπολογισµό για κάθε γραµµή της εξωτερικής ερώτησης. Υπάρχει, δηλαδή, στις συσχετιζόµενες υποερωτήσεις ένα σύνολο υποψηφίων γραµµών οι οποίες εξαρτώνται από την τιµή κάποιας στήλης της εξεταζόµενης γραµµής. Στις υποερωτήσεις µπορούµε να χρησιµοποιήσουµε τους τελεστές >, <, = αν το αποτέλεσµα της είναι µια µοναδική τιµή. Για τις υποερωτήσεις που επιστρέφουν κάποιο σύνολο τιµών χρησιµοποιούµε τους τελεστές IN, ANY, ALL ή EXIST στους οποίους αναφερόµαστε στη συνέχεια. Για παράδειγµα η εντολή

17 3. Structured Query Language (SQL 17 δίνει τον πίνακα SELECT DISTINCT ordernum FROM orderlines WHERE partcode IN (SELECT partcode FROM parts WHERE price > ordernum που παρουσιάζει τους αριθµούς των παραγγελιών που περιλαµβάνουν προϊόντα που έχουν τιµή πάνω από Η υποερώτηση του παραδείγµατος ανήκει στις απλές υποερωτήσεις. Οι κωδικοί των προϊόντων µε τιµή µεγαλύτερη από µπορούν να αποµονωθούν από το αρχείο parts ανεξάρτητα από την υπόλοιπη ερώτηση. Να παρατηρήσουµε ότι κάθε σύνδεση µπορεί να γραφεί και ως µια σειρά ενκυβωτισµένων ερωτήσεων, όχι όµως και το αντίθετο. Η σύνδεση, επίσης, είναι πιο γρήγορη από άποψη εκτέλεσης. Βέβαια, το ποιος τρόπος θα χρησιµοποιηθεί, τελικά, εξαρτάται από τη φύση της ερώτησης και το πως µπορεί να διατυπωθεί µε µεγαλύτερη σαφήνεια η ερώτηση. Τελεστές ALL και ANY Η χρήση των τελεστών ALL και ANY γίνεται µε παρόµοιο τρόπο. Ο τελεστής ALL δίνει αληθή τιµή όταν για το σύνολο των τιµών στις οποίες εφαρµόζεται ισχύει η συνθήκη που εξετάζεται. Αντίθετα ο τελεστής ANY δίνει αληθή τιµή όταν για µία τουλάχιστον από τις τιµές του συνόλου στο οποίο εφαρµόζεται ισχύει η συνθήκη που εξετάζεται. Μπορούν να χρησιµοποιηθούν και οι δύο τελεστές σε συνδυασµό µε τους τελεστές σύγκρισης =, <>, >, <, >=, <=. Για παράδειγµα η προηγούµενη εντολή που έδωσε τους αριθµούς των παραγγελιών που περιλαµβάνουν προϊόντα µε τιµή µεγαλύτερη από 10000, µπορεί να διατυπωθεί µε τη χρήση του τελεστή ANY ως SELECT DISTINCT ordernum FROM orderlines WHERE partcode =ΑΝΥ (SELECT partcode FROM parts WHERE price > Με την εντολή SELECT ordernum, p.partcode, price FROM orderlines o, parts p WHERE p.partcode = o.partcode AND price >= ALL ( SELECT price FROM parts µπορούµε να εντοπίσουµε σε ποιες παραγγελίες περιλαµβάνεται το προϊόν µε τη µεγαλύτερη τιµή. Τελεστής EXISTS Ο τελεστής EXISTS επιστρέφει πάντοτε αληθή ή ψευδή τιµή. Συντάσσεται πάντοτε µε υποερώτηση και επιστρέφει αληθή τιµή αν το αποτέλεσµα της υποερώτησης είναι ένα µη κενό σύνολο τιµών. Τη λειτουργία του τελεστή επηρεάζει το συνολικό αποτέλεσµα της υποερώτησης, αν επιστρέφει ή όχι τιµές,

18 3. Structured Query Language (SQL 18 παρά οι συγκεκριµένες τιµές. Για το λόγο αυτό, ο τελεστής EXISTS είναι ο µόνος στον οποίο επιτρέπεται η υποερώτηση να περιλαµβάνει το SELECT *. Για παράδειγµα για να εντοπίσουµε τους πελάτες που έχουν παραγγείλει το προϊόν 4 δίνουµε την εντολή SELECT DISTINCT custcode FROM orders o WHERE EXISTS ( SELECT * FROM orderlines ol WHERE ol.partcode = 4 AND o.ordernum = ol.ordernum Άλλη µία χρήση του τελεστή EXISTS παρουσιάζουµε στην παράγραφο 3.6 στην υλοποίηση της πράξης της ιαίρεσης της σχεσιακής άλγεβρας Σύνδεση Πινάκων Εσωτερική Σύνδεση ύο Πινάκων Η πράξη της σύνδεσης, όπως αναφέραµε και στο κεφάλαιο για τη σχεσιακή άλγεβρα, παρουσιάζει τα περιεχόµενα δύο πινάκων συνδεδεµένα µέσω κάποιας κοινής στήλης.. Η πιο συνηθισµένη µορφή σύνδεσης είναι η ισοσύνδεση, η οποία καθορίζεται µέσω της ισότητας δύο στηλών. Η υλοποίηση της πράξης στη SQL γίνεται µέσω της εντολής SELECT και του INNER JOIN. SELECT <προσδιορισµός_δεδοµένωων> FROM <πίνακας1> [<ψευδώνυµο>] INNER JOIN <πίνακας2> [<ψευδώνυµο>] ON <πίνακας1> <ψευδώνυµο> <τελεστής> <πίνακας2> <ψευδώνυµο> Είναι δυνατόν οι δύο πίνακες να περιέχουν στήλες µε τα ίδια ονόµατα. Για να προσδιορίσουµε τον πίνακα από τον οποίο προέρχονται οι στήλες που αναφέρουµε, τόσο στον <προσδιορισµό_δεδοµένων>, όσο και στη συνθήκη της εντολής, χρησιµοποιούµε το όνοµα του, πριν από το όνοµα της στήλης και τα χωρίζουµε µε µία τελεία. Για παράδειγµα ο προσδιορισµός cust.lname αναφέρεται στη στήλη lname του πίνακα cust. Στην περίπτωση που τα ονόµατα των πινάκων είναι µακροσκελή η πλήρης παράθεση τους δηµιουργεί προβλήµατα και κουράζει το χρήστη. Σ' αυτή την περίπτωση έχουµε την δυνατότητα αντί για το πραγµατικό όνοµα του πίνακα να χρησιµοποιήσουµε κάποιο ψευδώνυµο του. Η δήλωση του ψευδωνύµου γίνεται δίπλα στο όνοµα του πίνακα. Για παράδειγµα η εντολή SELECT orders.ordernum, orderdate, orders.custcode, lname, fname FROM orders INNER JOIN customer ON orders.custcode = customer.ordernum εµφανίζει τον πίνακα ordernum orderdate custcode lname fname /09/94 1 ΑΘΑΝΑΣΙΟΥ ΕΛΕΥΘΕΡΙΟΣ 2 11/09/94 1 ΑΘΑΝΑΣΙΟΥ ΕΛΕΥΘΕΡΙΟΣ 3 16/09/94 2 ΠΑΠΑΕΜΑΝΟΥΗΛ ΚΩΣΤΑΣ 4 11/08/94 4 ΟΡΑΤΙΟΥ ΘΕΑΝΩ στον οποίο κάθε γραµµή του πίνακα orders συνδυάζεται µε τις γραµµές του πίνακα customer, που έχουν την ίδια τιµή στη στήλη custcode. Η διαφοροποίηση των δύο στηλών γίνεται µε την τοποθέτηση του ονόµατος του πίνακα πριν από το όνοµα της στήλης. Η ίδια εντολή µε τη χρήση ψευδωνύµων έχει τη µορφή SELECT o.ordernum, orderdate, o.custcode, lname, fname FROM orders o INNER JOIN customer c ON o.custcode = c.ordernum

19 3. Structured Query Language (SQL 19 Πέρα από τη διευκόλυνση στη γραφή της εντολής τα ψευδώνυµα εξυπηρετούν και µια πιο ουσιαστική ανάγκη. Υπάρχουν περιπτώσεις όπου χρειαζόµαστε να συνθέσουµε το περιεχόµενο ενός πίνακα µε τον εαυτό του. Όπως στην περίπτωση που θέλουµε να συνδυάσουµε ζευγάρια τιµών από την ίδια στήλη. Π.χ. ποιοι πελάτες, ανά δύο, εδρεύουν στην ίδια πόλη. Θα πρέπει, τότε, να υπάρχει κάποιος τρόπος ώστε να ξεχωρίζουν οι διαφορετικές αναφορές στον ίδιο πίνακα. Τη λύση σ' αυτό το πρόβληµα την δίνουν τα ψευδώνυµα. Με την εντολή SELECT o.custcode, o.lname, c.custcode, c.lname, c.city FROM customer o INNER JOIN customer c ON o.city = c.city παίρνουµε τον πίνακα custcode lname custcode lname city ΑΘΑΝΑΣΙΟΥ 1 ΑΘΑΝΑΣΙΟΥ ΑΘΗΝΑ 1 ΑΘΑΝΑΣΙΟΥ 5 ΤΕΛΑΚΟΥ ΑΘΗΝΑ 1 ΑΘΑΝΑΣΙΟΥ 6 ΣΤΑΘΟΥΛΗΣ ΑΘΗΝΑ 3 ΚΟΥΚΑ 3 ΚΟΥΚΑ ΧΑΝΙΑ 3 ΚΟΥΚΑ 4 ΟΡΑΤΙΟΥ ΧΑΝΙΑ 4 ΟΡΑΤΙΟΥ 3 ΚΟΥΚΑ ΧΑΝΙΑ 4 ΟΡΑΤΙΟΥ 4 ΟΡΑΤΙΟΥ ΧΑΝΙΑ 5 ΤΕΛΑΚΟΥ 1 ΑΘΑΝΑΣΙΟΥ ΑΘΗΝΑ 5 ΤΕΛΑΚΟΥ 5 ΤΕΛΑΚΟΥ ΑΘΗΝΑ 5 ΤΕΛΑΚΟΥ 6 ΣΤΑΘΟΥΛΗΣ ΑΘΗΝΑ 6 ΣΤΑΘΟΥΛΗΣ 1 ΑΘΑΝΑΣΙΟΥ ΑΘΗΝΑ 6 ΣΤΑΘΟΥΛΗΣ 5 ΤΕΛΑΚΟΥ ΑΘΗΝΑ 6 ΣΤΑΘΟΥΛΗΣ 6 ΣΤΑΘΟΥΛΗΣ ΑΘΗΝΑ Παρατηρούµε ότι η κάθε εγγραφή συνδυάζεται και µε τον εαυτό της. Για να εξαλείψουµε αυτό το φαινόµενο η εντολή γίνεται SELECT o.custcode, o.lname, c.custcode, c.lname, c.city FROM customer o INNER JOIN customer c ON o.city = c.city AND o.custcode <> c.custcode και το αποτέλεσµα περιορίζεται στον πίνακα custcode lname custcode lname city ΑΘΑΝΑΣΙΟΥ 5 ΤΕΛΑΚΟΥ ΑΘΗΝΑ 1 ΑΘΑΝΑΣΙΟΥ 6 ΣΤΑΘΟΥΛΗΣ ΑΘΗΝΑ 3 ΚΟΥΚΑ 4 ΟΡΑΤΙΟΥ ΧΑΝΙΑ 4 ΟΡΑΤΙΟΥ 4 ΚΟΥΚΑ ΧΑΝΙΑ 5 ΤΕΛΑΚΟΥ 1 ΑΘΑΝΑΣΙΟΥ ΑΘΗΝΑ 5 ΤΕΛΑΚΟΥ 6 ΣΤΑΘΟΥΛΗΣ ΑΘΗΝΑ 6 ΣΤΑΘΟΥΛΗΣ 1 ΑΘΑΝΑΣΙΟΥ ΑΘΗΝΑ 6 ΣΤΑΘΟΥΛΗΣ 5 ΤΕΛΑΚΟΥ ΑΘΗΝΑ όπου πάλι παρατηρούµε ότι το κάθε ζευγάρι παρουσιάζεται δύο φορές. Με την τελική µορφή της εντολής SELECT SELECT o.custcode, o.lname, c.custcode, c.lname, c.city FROM customer o INNER JOIN customer c ON o.city = c.city AND o.custcode < c.custcode παίρνουµε την τελική µορφή του πίνακα µε τα εντελώς απαραίτητα δεδοµένα. custcode lname custcode lname city ΑΘΑΝΑΣΙΟΥ 5 ΤΕΛΑΚΟΥ ΑΘΗΝΑ 1 ΑΘΑΝΑΣΙΟΥ 6 ΣΤΑΘΟΥΛΗΣ ΑΘΗΝΑ 3 ΚΟΥΚΑ 4 ΟΡΑΤΙΟΥ ΧΑΝΙΑ 5 ΤΕΛΑΚΟΥ 6 ΣΤΑΘΟΥΛΗΣ ΑΘΗΝΑ

20 3. Structured Query Language (SQL 20 Εξωτερική Σύνδεση Θα πρέπει να παρατηρήσουµε ότι στη σύνδεση δύο πινάκων εµφανίζονται µόνο οι γραµµές για τις οποίες υπάρχει αντιστοιχία ανάµεσα στους δύο πίνακες. Αν για κάποια γραµµή του ενός πίνακα δεν αντιστοιχεί κάποια γραµµή στον άλλο πίνακα αυτή δεν εµφανίζεται στο αποτέλεσµα της σύνδεσης. Υπάρχουν περιπτώσεις που θέλουµε όλες τις γραµµές ενός πίνακα συνδεδεµένες µε όσα στοιχεία υπάρχουν σε κάποιο άλλο πίνακα. Αυτή η µορφή σύνδεσης ονοµάζεται εξωτερική σύνδεση (outer join. SELECT <προσδιορισµός_δεδοµένωων> FROM <πίνακας1> [<ψευδώνυµο>] LEFT RIGHT [OUTER] JOIN <πίνακας2> [<ψευδώνυµο>] ON <πίνακας1> <ψευδώνυµο> <τελεστής> <πίνακας2> <ψευδώνυµο> Για παράδειγµα έστω ότι θέλουµε ένα κατάλογο µε όλα τα προϊόντα που διαθέτει η επιχείρηση µαζί µε τη συνολική ποσότητα που έχει παραγγελθεί για το καθένα. Η εντολή SELECT p.partcode, p.name, SUM(ol.qty AS totalqty FROM orderlines ol INNER JOIN parts p ON ol.partcode = p.partcode GROUP BY p.partcode, p.name θα µας εµφανίσει τον πίνακα partcode name totalqty ΚΑΛΤΣΕΣ Β ΚΑΛΤΣΕΣ Α ΠΟΥΚΑΜΙΣΟ 7 4 ΠΟΥΛΟΒΕΡ Α ΠΟΥΛΟΒΕΡ Α22 17 στον οποίο δεν περιλαµβάνονται τα προϊόντα για τα οποία δε υπάρχουν παραγγελίες. Για να περιληφθούν όλα τα προϊόντα στον κατάλογο η εντολή θα πρέπει να γίνει SELECT p.partcode, p.name, SUM(ol.qty AS totalqty FROM orderlines ol INNER JOIN parts p ON ol.partcode = p.partcode GROUP BY p.partcode, p.name UNION SELECT p.partcode, p.name, NULL FROM parts p WHERE NOT EXISTS (SELECT * FROM orderlines ol WHERE ol.partcode = p.partcode Χρησιµοποιώντας την ειδική µορφή της SELECT, η εξωτερική σύνδεση των πινάκων parts και orderlines πραγµατοποιείται µε την εντολή SELECT p.partcode, p.name, SUM(ol.qty AS totalqty FROM orderlines ol LEFT OUTER JOIN parts p ON ol.partcode = p.partcode GROUP BY p.partcode, p.name Ο τελικός πίνακας µε το αποτέλεσµα της εξωτερικής σύνδεσης είναι ο εξής: partcode name totalqty ΚΑΛΤΣΕΣ Β ΚΑΛΤΣΕΣ Α ΠΟΥΚΑΜΙΣΟ 7 4 ΠΟΥΛΟΒΕΡ Α ΠΟΥΛΟΒΕΡ Α ΖΩΝΗ ΑΝ ΡΙΚΗ 7 ΖΩΝΗ ΑΝ ΡΙΚΗ Α Ενέργειες Μεταβολής του Περιεχοµένου της Βάσης εδοµένων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) 1. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

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

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

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

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

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

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

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

SQL Data Manipulation Language

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

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

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

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

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

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

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

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

Υποερωτήματα στην SQL Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr 1 / 31 Η ανάγκη για υποερώτημα Ποιος υπάλληλος παίρνει το μεγαλύτερο μισθό; Αν ξέραμε το μεγαλύτερο μισθό, πχ 2000, θα γράφαμε:

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

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

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

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

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

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

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL Διδάσκων του μαθήματος 2 Δρ. Λεωνίδας Φραγγίδης Επίκουρος Καθηγητής Τμήμα Διοίκησης Επιχειρήσεων ΤΕΙ ΑΜΘ Email: fragidis@teiemt.gr Ώρες Γραφείου: Τρίτη (10:00 12:00) Προτεινόμενα

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

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

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

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

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα. ΚΕΦΑΛΑΙΟ 7 ο 1. Επιλογή της κατάλληλης γλώσσας προγραµµατισµού Εκατοντάδες γλώσσες προγραµµατισµού χρησιµοποιούνται όπως αναφέρθηκε σήµερα για την επίλυση των προβληµάτων µε τον υπολογιστή, τη δηµιουργία

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βάσεις εδοµένων 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?

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

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

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

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

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

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

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

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

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

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

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

Βάσεις δεδομένων. (7 ο μάθημα) Ηρακλής Βαρλάμης Βάσεις δεδομένων (7 ο μάθημα) Ηρακλής Βαρλάμης varlamis@hua.gr Περιεχόμενα SQL Βασικές πράξεις Πράξεις συνόλων Συνενώσεις Συναθροιστικές συναρτήσεις Ομαδοποιήσεις 10/4/2014 Βάσεις Δεδομένων 2 Η γλώσσα

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

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

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

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

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

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

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

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

Αρχεία και Βάσεις Δεδομένων ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Αρχεία και Βάσεις Δεδομένων Διάλεξη 10η: SQL Μέρος 3ο Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών SQL Data Manipulation Language Τελεστής union συνδυάζει subselects

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

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

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

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

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

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου] ΤΕΙ ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου] Χειμερινό Εξ. 2013-14 Επιμέλεια: Καρβούνης Ευάγγελος Οκτώβριος 2013 Περιεχόμενα 1 Σχεδιασμός Βάσης...

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

Certified Data Base Designer (CDBD)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος 2012-13 Κων/νος Φλώρος Απλοί τύποι δεδομένων Οι τύποι δεδομένων προσδιορίζουν τον τρόπο παράστασης των

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

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

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

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

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

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

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

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

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

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

επιµέλεια Θοδωρής Πιερράτος

επιµέλεια Θοδωρής Πιερράτος Βασικές έννοιες προγραµµατισµού Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως,

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

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

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

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

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

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

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

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

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

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

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

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

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

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

Οι εντολές 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 Περιεχόμενα

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

Υποερωτήματα SQL Παραδείγματα και εφαρμογές από τη βάση δεδομένων company Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr astavrak@uoi.gr @AStavrakoudis Άνοιξη 2016 1 / 55 Περιεχόμενα 1 Απλά υποερωτήματα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1 / 97

1 / 97 Τα πρώτα ερωτήματα SQL Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 97 Περιεχόμενα 1 Εισαγωγικά σχόλια και παρατηρήσεις 2 Απλά ερωτήματα προβολής, επιλέγοντας στήλες από ένα πίνακα

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

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

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

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

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

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

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

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples ΙΙ Ξένου Ρουμπίνη ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης Φροντιστήριο SQL Examples ΙΙ Ξένου Ρουμπίνη 1 SQL(DML) - Query Example 1 Query:1 Βρείτε τα ονόματα των έργων που δεν αφορούν το τμήμα research

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

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

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

1 / 87

1 / 87 Τα πρώτα ερωτήματα SQL Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2016 1 / 87 Δυο λόγια για την SQL Υλοποίηση του σχεσιακού μοντέλου δεδομένων του E.F. Codd, αρχικά ως DSl/Alpha, αργότερα

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

Βάσεις Δεδομένων Σύνθετα SQL queries

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

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

Βάσεις Δεδομένων. Ενότητα 7.2: Structured Query Language - 2 ο Μέρος. Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων

Βάσεις Δεδομένων. Ενότητα 7.2: Structured Query Language - 2 ο Μέρος. Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Βάσεις Δεδομένων Ενότητα 7.2: Structured Query Language - 2 ο Μέρος Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων Άδειες Χρήσης

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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

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

GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP. SQL: Ερωτήματα ομαδοποίησης και συνάθροισης GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2016 1 / 56 Περιεχόμενα 1 Εισαγωγή, γενικές

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

char name[5]; /* define a string of characters */

char name[5]; /* define a string of characters */ Συµβολοσειρές (Strings) Συµβολοσειρά (string) είναι µια σειρά αλφαριθµητικών χαρακτήρων (γενικά εκτυπώσιµων συµβόλων ASCII). Όταν λέµε σειρά εννοούµε διαδοχικές θέσεις µνήµης που µπορούν να αντιµετωπισθούν

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

Βασικά στοιχεία της Java

Βασικά στοιχεία της Java Βασικά στοιχεία της Java προτάσεις, εκφράσεις, µεταβλητές, σταθερές, τελεστές Ορισµοί Πρόταση (statement) είναι µία απλή εντολή σε µία γλώσσα προγραµµατισµού. Γιαπαράδειγµα: int x=12; Έκφραση (expression)

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

Βάσεις Δεδομένων Σύνθετα SQL queries. Ψευδώνυμα (Aliases) (2) Ψευδώνυμα (Aliases) (1) Ασάφεια και Πλήρη Ονόματα. Ερώτημα χωρίς τον όρο WHERE (1)

Βάσεις Δεδομένων Σύνθετα SQL queries. Ψευδώνυμα (Aliases) (2) Ψευδώνυμα (Aliases) (1) Ασάφεια και Πλήρη Ονόματα. Ερώτημα χωρίς τον όρο WHERE (1) Ασάφεια και Πλήρη Ονόματα Βάσεις Δεδομένων Σύνθετα SQL queries Παύλος Εφραιμίδης Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 1 Ονόματα Πεδίων: Στην SQL, τα ονόματα των πεδίων (γνωρισμάτων) σε κάθε σχέση είναι

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

Κεφάλαιο 9 Συσχετίσεις

Κεφάλαιο 9 Συσχετίσεις Κεφάλαιο 9 Συσχετίσεις Το κεφάλαιο αυτό διαπραγµατεύεται τη δηµιουργία και διαχείριση των συσχετίσεων που υφίστανται ανάµεσα στους πίνακες µιας σχεσιακής βάσης δεδοµένων. Όπως έχει ήδη αναφερθεί, ο ρόλος

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

3. Σηµειώσεις Access. # Εισαγωγή ψηφίου ή κενού διαστήµατος. Επιτρέπονται τα ση-

3. Σηµειώσεις Access. # Εισαγωγή ψηφίου ή κενού διαστήµατος. Επιτρέπονται τα ση- Μάθηµα 3 Προχωρηµένες ιδιότητες πεδίων Μάσκες εισαγωγής Οι ιδιότητες Μορφή και Μάσκα εισαγωγής περιγράφονται µαζί γιατί έχουν κοινά χαρακτηριστικά που αφορούν την εµφάνιση. Με την ιδιότητα Μορφή καθορίζουµε

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

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

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

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

Σχήµα 3.1: Εισαγωγή shift register σε βρόγχο for-loop.

Σχήµα 3.1: Εισαγωγή shift register σε βρόγχο for-loop. Η δοµή «Shift register» 1. Η δοµή «Shift register» εισάγεται στο βρόγχο for-loop αλλά και σε άλλους βρόγχους που θα δούµε στη συνέχεια, όπως ο βρόγχος «While loop». Ο τρόπος εισαγωγής και λειτουργίας της

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

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

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

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

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

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

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

Βάσεις Δεδομένων. Ενότητα 7.1: Structured Query Language - 1 ο Μέρος. Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων

Βάσεις Δεδομένων. Ενότητα 7.1: Structured Query Language - 1 ο Μέρος. Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Βάσεις Δεδομένων Ενότητα 7.1: Structured Query Language - 1 ο Μέρος Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων Άδειες Χρήσης

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

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

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

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

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων Βάσεις εδοµένων 2003-2004 Ευαγγελία Πιτουρά 1 ΜΕΡΟΣ 1 Γενική Εικόνα του Μαθήµατος Επεξεργασία Ερωτήσεων Μοντελοποίηση (Μοντέλο Ο/Σ, Σχεσιακό, Λογικός Σχεδιασµός) Προγραµµατισµός (Σχεσιακή Άλγεβρα, SQL)

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

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

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

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

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

Κεφάλαιο 5ο: Εντολές Επανάληψης

Κεφάλαιο 5ο: Εντολές Επανάληψης Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 5ο: Εντολές Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερη συχνή, αφού πλήθος προβληµάτων µπορούν να επιλυθούν µε κατάλληλες

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

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

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

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

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

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

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

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

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

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