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

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

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

Transcript

1 Κεφάλαιο 7 Η Πράξη της Συνένωσης Σύνοψη Στο παρόν κεφάλαιο θα παρουσιασθεί η χρήση εσωτερικών και εξωτερικών συνενώσεων στην απάντηση ερωτημάτων που συνδυάζουν πολλαπλούς πίνακες. Προαπαιτούμενη γνώση Προαπαιτούμενα για την κατανόηση των εννοιών αλλά και την εργαστηριακή άσκηση είναι τα ακόλουθα:. Βασικές πράξεις θεωρίας συνόλων (Κεφ.6). 7.1 Εισαγωγικές Έννοιες Η πράξη του καρτεσιανού γινομένου δύο πινάκων Τ1 και Τ2 και η συνακόλουθη εφαρμογή στο WHERE κριτηρίων της μορφής aθb, όπου το a είναι πεδίο του Τ1, το b πεδίο του Τ2 και το θ κάποιος τελεστής σύγκρισης, είναι τόσο συχνή που αναφερόμαστε ξεχωριστά σε αυτή ως συνένωση-θ (θ-join) των πινάκων Τ1 και Τ2. Θεωρήστε τους ακόλουθους πίνακες Customer και Phones: Customer cid afm address name sname dateofbirth Baltetsiou st. Kostas Kostantinou Diakou st. Eleni Kostantinou Rodon st. Maria Papantoniou Phones cid pnum Το παρακάτω ερώτημα: SELECT afm FROM Customer, Phones WHERE Customer.cid=Phones.cid AND Phones.pnum LIKE '6%'; βρίσκει τα ΑΦΜ των πελατών που έχουν κινητά τηλέφωνα. Ο τρόπος σύνταξης του ερωτήματος υπονοεί ότι πρώτα θα γίνει το καρτεσιανό γινόμενο των δύο πινάκων και στη συνέχεια θα εφαρμοστούν τα κριτήρια του WHERE. Με άλλα λόγια πρώτα θα δημιουργηθούν οι 9 εγγραφές του καρτεσιανού και στη συνέχεια θα επιλεγούν αυτές που πληρούν το WHERE. Αντίθετα η χρήση της συνένωσης-θ στην παραπάνω περίπτωση θα υπονοούσε ότι δε χρειάζεται να παραχθεί πρώτα το καρτεσιανό γινόμενο αλλά το μέρος αυτού που πληροί τη συνθήκη Customer.cid=Phones.cid (3 εγγραφές) και στη συνέχεια οι εγγραφές αυτές θα ελέγχονταν ως προς τη συνθήκη Phones.pnum LIKE '6%'. Όταν η συνθήκη θ σε ένα θ-join είναι ισότητα τότε θα μιλάμε για ισοσυνένωση (equijoin). Όταν έχω ισοσυνένωση σε όλα τα κοινά πεδία των δύο πινάκων τότε μιλάμε για φυσική ισοσυνένωση (natural join). Ξαναγυρνώντας στο προηγούμενο παράδειγμα, εφαρμόζοντας θ-join στους

2 πίνακες Customer και Phones, στην ουσία εφαρμόζουμε equijoin, ενώ το ερώτημα θα μπορούσε να απαντηθεί και με natural join των δύο πινάκων. Σημείωση 1: Όλα τα DBMS τρέχουν ειδικούς αλγορίθμους με στόχο τη γρήγορη εκτέλεση joins. Ιδιαίτερη έμφαση δίνεται στη γρήγορη εκτέλεση των equijoins που είναι και η πιο συχνή περίπτωση σε ερωτήματα. Ιδιαίτερα όταν έχω equijoin σε πεδίο για το οποίο υπάρχει ευρετήριο (index), πχ., όταν το πεδίο είναι primary key σε κάποιον πίνακα ο υπολογισμός είναι πολύ γρήγορος. Σημείωση 2: Τα περισσότερα DBMS έχουν query optimizer που αποφασίζει για το βέλτιστο τρόπο εκτέλεσης ενός ερωτήματος. Στο παράδειγμα αν και ζητάμε καρτεσιανό γινόμενο των Customer και Phones (comma join) ο optimizer της MySQL5.7 θα το εκτελέσει σαν equijoin στο πεδίο cid. Αυτό δε σημαίνει ότι πάντα ο optimizer βρίσκει το καλύτερο πλάνο εκτέλεσης. Καλό είναι εφεξής για λόγους αναγνωσιμότητας και ευκολίας στη συντήρηση αλλά και για να βοηθούμε τον optimizer στις αποφάσεις του να μη χρησιμοποιούμε comma joins ή αλλιώς cross joins όταν αυτό που θέλουμε ουσιαστικά είναι θ-join. Η χρήση τους θα περιορίζεται μόνο στις περιπτώσεις που θέλουμε καρτεσιανό γινόμενο. Σαν αντιπαράδειγμα θεωρείστε την περίπτωση που έχω μια πολύπλοκη query με 10 ή 20 πίνακες η οποία πρέπει να ελεγχθεί/αλλαχθεί. Ο χρόνος που θα καταναλώσει ο προγραμματιστής για να κατανοήσει από το WHERE σε ποια πεδία συνενώνονται οι πίνακες δε θα είναι αμελητέος Συνενώσεις στην SQL και MySQL5.7 Η βασική δομή εντολής για να κάνουμε συνένωση δύο πινάκων είναι: πίνακας1 [INNER CROSS] JOIN πίνακας2 [join_συνθήκη] όπου στη join_συνθήκη μπορούμε να έχουμε τις ακόλουθες δύο επιλογές: ON λογική_συνθήκη: κατά τα πρότυπα του WHERE. USING (λίστα_πεδίων): ισότητα στα πεδία της λίστας με την προϋπόθεση να είναι κοινά και για τους δύο πίνακες. Παραδείγματα Οι ακόλουθες queries βρίσκουν τα afm των πελατών που έχουν κινητό τηλέφωνο. (I) Με comma join. SELECT afm FROM Customer, Phones WHERE Customer.cid=Phones.cid AND Phones.pnum LIKE '6%'; (II) Με INNER JOIN. SELECT afm FROM Customer INNER JOIN Phones ON Customer.cid=Phones.cid WHERE Phones.pnum LIKE '6%'; (III) Με JOIN (ισοδύναμο του INNER JOIN) SELECT afm FROM Customer JOIN Phones ON Customer.cid=Phones.cid WHERE Phones.pnum LIKE '6%'; (IV) Με CROSS JOIN SELECT afm FROM Customer CROSS JOIN Phones ON Customer.cid=Phones.cid WHERE Phones.pnum LIKE '6%'; (V) INNER JOIN χρησιμοποιώντας το USING αντί του ON. SELECT afm FROM Customer INNER JOIN Phones USING (cid) WHERE Phones.pnum LIKE '6%';

3 (VI) Ισοδύναμη με την (Ι) SELECT afm FROM Customer CROSS JOIN Phones WHERE Customer.cid=Phones.cid AND Phones.pnum LIKE '6%'; (VII) INNER JOIN χωρίς WHERE SELECT afm FROM Customer INNER JOIN Phones ON Customer.cid=Phones.cid AND Phones.pnum LIKE '6%'; Στη MySQL JOIN, INNER JOIN και CROSS JOIN είναι ισοδύναμα και πραγματοποιούν αυτό που ονομάζεται εσωτερική συνένωση πινάκων. Περισσότερα για τις διαφορές μεταξύ εσωτερικών και εξωτερικών συνενώσεων στην επόμενη υποενότητα. Χρησιμοποιώντας το ON μπορώ να γράψω οποιαδήποτε συνθήκη επομένως μπορώ να γράψω οποιοδήποτε θ-join ανεξαρτήτως αν το θ είναι ισότητα ή όχι. Με το USING μπορώ να γράψω μόνο equijoins. Η διαφορά μεταξύ του USING και του ΟΝ με ισότητα είναι ότι το πρώτο γυρνάει τις στήλες που περιγράφονται στη λίστα του μία φορά ενώ το δεύτερο δύο φορές μία για κάθε πίνακα. Για παράδειγμα αν στις queries (II) και (V) είχαμε αντί για SELECT afm, τα πεδία που θα γυρνούσαν θα ήταν τα εξής: (II) cid, afm, address, name, sname, dateofbirth, cid, pnum (V) cid, afm, address, name, sname, dateofbirth, pnum Στο πρότυπο της SQL η χρήση του CROSS JOIN περιορίζεται στον υπολογισμό του καρτεσιανού γινομένου και ως εκ τούτου δε δέχεται επιπλέον όρισμα ON ή USING. Στη MySQL όπως αναφέρθηκε το CROSS JOIN είναι ισοδύναμο με τα JOIN και INNER JOIN και ως εκ τούτου μπορεί να ακολουθείται από ΟΝ ή USING. Αν ένα JOIN, INNER JOIN ή CROSS JOIN δεν ακολουθείται από ON ή USING και στο WHERE δεν υπάρχει κριτήριο συνένωσης (Customer.cid=Phones.cid στο παράδειγμα) τότε επιστρέφεται το καρτεσιανό γινόμενο. Για λόγους αναγνωσιμότητας καλό είναι να χρησιμοποιείται το INNER JOIN όταν θέλουμε εσωτερική συνένωση με τα κριτήρια συνένωσης στο ΟΝ ή στο USING, αναλόγως αν θέλουμε να κρατήσουμε ή όχι σε ένα equijoin διπλές στήλες. Ο τρόπος γραφής της query (VII) θα πρέπει να αποφεύγεται καθώς πέραν της μειωμένης αναγνωσιμότητας (πιο δύσκολα καταλαβαίνει κάποιος ποιο είναι το κριτήριο συνένωσης), εισάγει αχρείαστα επιπλέον πολυπλοκότητα στον query optimizer. Τέλος για λόγους αναγνωσιμότητας καλό είναι να μη χρησιμοποιούμε CROSS JOIN όταν δε θέλουμε το καρτεσιανό γινόμενο αλλά INNER JOIN Εξωτερικές συνενώσεις στην SQL και MySQL5.7 Ας υποθέσουμε ότι στο Phones δεν είχαμε ορίσει ως ξένο κλειδί το cid και είχαμε το ακόλουθο στιγμιότυπο για τους πίνακες Customer και Phones: Customer cid afm address name sname dateofbirth Baltetsiou st. Kostas Kostantinou Diakou st. Eleni Kostantinou Rodon st. Maria Papantoniou Phones cid pnum

4 Έστω ότι θέλουμε να εμφανίσουμε τα στοιχεία των πελατών μαζί με τα τηλέφωνά τους (αν έχουν). Το ερώτημα δεν μπορεί να απαντηθεί χρησιμοποιώντας εσωτερική συνένωση όπως στην προηγούμενη υποενότητα καθώς με αυτό τον τρόπο δε θα επιστραφούν τα στοιχεία του πελάτη με cid=3 καθώς δε συνδυάζεται με καμία από τις εγγραφές στο Phones. Κάτι αντίστοιχο θα προέκυπτε εάν ζητούσαμε τα τηλέφωνα μαζί με στοιχεία για τους πελάτες που ανήκουν (αν υπάρχουν ιδιοκτήτες). Για να απαντηθούν τέτοια ερωτήματα χρησιμοποιούνται εξωτερικές συνενώσεις. Στην SQL περιγράφονται τριών ειδών εξωτερικές συνενώσεις: αριστερή (LEFT), δεξιά (RIGHT) και πλήρης (FULL). Η σύνταξη είναι αντίστοιχη της εσωτερικής συνένωσης: πίνακας1 {LEFT RIGHT FULL} [OUTER] JOIN πίνακας2 join_συνθήκη. Η αναγραφή του OUTER είναι προαιρετική και στην πράξη πολλές φορές παραλείπεται. Οι κανόνες για τα ON και USING όσον αφορά τις επιστρεφόμενες στήλες είναι ίδιοι όπως περιγράφηκαν στην προηγούμενη υποενότητα. Παραδείγματα (Ι) FROM Customer LEFT JOIN Phones ON Customer.cid=Phones.cid; Επιστρέφει: cid afm address name sname dateofbirth cid pnum Baltetsiou st. Kostas Kostantinou Baltetsiou st. Kostas Kostantinou Diakou st. Eleni Kostantinou Rodon st. Maria Papantoniou NULL NULL Όπως παρατηρούμε η εγγραφή με cid=3 του πίνακα Customer που δε συνδυάζεται με καμία εγγραφή από τον πίνακα Phones βρίσκεται στο αποτέλεσμα του LEFT JOIN, με NULL στα πεδία του Phones. FROM Customer LEFT JOIN Phones USING(cid); Επιστρέφει: cid afm address name sname dateofbirth pnum Baltetsiou st. Kostas Kostantinou Baltetsiou st. Kostas Kostantinou Diakou st. Eleni Kostantinou Rodon st. Maria Papantoniou NULL (II) FROM Customer RIGHT JOIN Phones ON Customer.cid=Phones.cid; Επιστρέφει: cid afm address name sname dateofbirth cid pnum Baltetsiou st. Kostas Kostantinou Baltetsiou st. Kostas Kostantinou Diakou st. Eleni Kostantinou NULL NULL NULL NULL NULL NULL FROM Customer RIGHT JOIN Phones USING(cid); Επιστρέφει: cid pnum afm address name sname dateofbirth Baltetsiou st. Kostas Kostantinou Baltetsiou st. Kostas Kostantinou

5 Diakou st. Eleni Kostantinou NULL NULL NULL NULL NULL Στη MySQL5.7 όταν κάνουμε RIGHT JOIN με χρήση του USING επιστρέφεται το ισοδύναμο αποτέλεσμα με αυτό που θα είχαμε εάν γράφαμε τους πίνακες με ανάποδη σειρά και κάναμε LEFT JOIN. (III) FROM Customer FULL JOIN Phones ON Customer.cid=Phones.cid; Επιστρέφει: cid afm address name sname dateofbirth cid pnum Baltetsiou st. Kostas Kostantinou Baltetsiou st. Kostas Kostantinou Diakou st. Eleni Kostantinou Rodon st. Maria Papantoniou NULL NULL NULL NULL NULL NULL NULL NULL Παρατηρούμε ότι τόσο οι εγγραφές του Customer που δε συνδυάζονται, όσο και οι αντίστοιχες εγγραφές του Phones εμφανίζονται στο αποτέλεσμα με NULL στα πεδία του άλλου πίνακα. FROM Customer FULL JOIN Phones USING(cid); Επιστρέφει: cid afm address name sname dateofbirth pnum Baltetsiou st. Kostas Kostantinou Baltetsiou st. Kostas Kostantinou Diakou st. Eleni Kostantinou Rodon st. Maria Papantoniou NULL 4 NULL NULL NULL NULL NULL Όπως και στο LEFT/RIGHT JOIN USING έτσι και στο FULL εμφανίζεται η στήλη cid μία φορά. Ο κανόνας είναι ότι αν οι δύο στήλες που αντιστοιχούν στο πεδίο του join έχουν τιμή στη στήλη του αποτελέσματος κρατιέται η τιμή, πχ. στην πρώτη εγγραφή Customer.cid=Phones.cid=1. Aν και οι δύο στήλες είναι NULL, η στήλη του αποτελέσματος παίρνει τιμή NULL (δεν υπάρχει στο παραπάνω παράδειγμα παρόμοια περίπτωση). Αν η μία στήλη είναι NULL και η άλλη έχει τιμή τότε κρατιέται η τιμή. Για παράδειγμα η εγγραφή με cid 3 του Customer στην αντίστοιχή στήλη Phones.cid έχει NULL για το λόγο αυτό στο τελικό cid του αποτελέσματος υπάρχει η τιμή 3. Ομοίως για την εγγραφή με Phones.cid=4. Σημείωση 1: Η ύπαρξη join_συνθήκης (ΟΝ ή USING) στη MySQL5.7, όπως συζητήθηκε, είναι προαιρετική για τις πράξεις JOIN, INNER JOIN, CROSS JOIN, στην οποία περίπτωση επιστρέφεται το καρτεσιανό γινόμενο (εκτός και υπάρχει αντίστοιχη της join_συνθήκης στο WHERE. Στις εξωτερικές συνενώσεις όμως είναι υποχρεωτική. Για παράδειγμα το: FROM Customer LEFT JOIN Phones; οδηγεί σε συντακτικό σφάλμα. Σημείωση 2: Η MySQL5.7 δεν υποστηρίζει την πράξη του FULL OUTER JOIN. Υπάρχει τρόπος να υλοποιηθεί μέσω άλλων πράξεων όπως θα εξηγηθεί στη συνέχεια. Σημείωση 3: Καλό είναι για λόγους αναγνωσιμότητας να μη γράφουμε queries που έχουν και LEFT και RIGHT JOIN. Καλό είναι οι queries μας να γράφονται ή δυνατόν με LEFT JOIN. Σημείωση 4: Χρειάζεται προσοχή όταν πραγματοποιούμε INNER JOIN σε πεδίο που περιέχει NULL τιμές. Αν γραφτεί join_συνθήκη και δε γραφτεί στο WHERE τότε οι σύγκριση μεταξύ NULL και τιμής θα είναι UNKNOWN ή FALSE (αναλόγως του τελεστή σύγκρισης) και ως εκ τούτου δε θα επιστραφεί η εγγραφή. Η κατάσταση αυτή εύκολα προκύπτει όταν χρησιμοποιούμε το αποτέλεσμα μιας εξωτερικής συνένωσης για να πραγματοποιήσουμε εσωτερική συνένωση.

6 7.1.3 NATURAL JOIN και STRAIGHT_JOIN Οι φυσικές συνενώσεις είναι συνενώσεις σε όλα τα κοινά πεδία των πινάκων. Τα κοινά πεδία αναγράφονται μία φορά το καθένα στο αποτέλεσμα. Η MySQL5.7 υποστηρίζει την πράξη NATURAL JOIN τόσο για εξωτερικές όσο και για εσωτερικές συνενώσεις. Ακολουθούν αντίστοιχα παραδείγματα χρήσης. Παραδείγματα: (I) FROM Customer NATURAL JOIN Phones; Φυσική εσωτερική συνένωση. Ισοδύναμο με: FROM Customer INNER JOIN Phones USING(cid); (II) FROM Customer NATURAL LEFT JOIN Phones; Αριστερή εξωτερική φυσική συνένωση. Ισοδύναμο με: FROM Customer LEFT JOIN Phones USING(cid); Αντίστοιχα θα μπορούσε να είχε γραφτεί: NATURAL LEFT OUTER JOIN. (III) FROM Customer NATURAL RIGHT JOIN Phones; Αριστερή εξωτερική φυσική συνένωση. Ισοδύναμο με: FROM Customer RIGHT JOIN Phones USING(cid); Αντίστοιχα θα μπορούσε να είχε γραφτεί: NATURAL RIGHT OUTER JOIN. Η χρήση του NATURAL JOIN καθιστά τον κώδικα δυσκολότερα συντηρήσιμο. Για παράδειγμα θεωρήστε τους ακόλουθους πίνακες: Customer (cid, afm, address, name, sname, dateofbirth) Account (accid, balance, dateofcreation) Owns (cid, accid) και τις εξής δύο queries: (A) SELECT Customer.* -- επιστρέφει τα πεδία του Customer FROM Customer INNER JOIN Owns ON Customer.cid=Owns.cid INNER JOIN Account ON Owns.accid=Account.accid; Με -- και κενό μπαίνουν σχολιάζεται γραμμή και είναι αντίστοιχο του // στη C++. Με /* */ σχολιάζεται οτιδήποτε είναι ανάμεσα όπως στη C. (B) SELECT Customer.* FROM Customer NATURAL JOIN Owns NATURAL JOIN Account; Οι δύο παραπάνω queries επιστρέφουν τους πελάτες που έχουν κάποιο λογαριασμό. Αν αποφασίζαμε να προσθέσουμε στο Account ένα πεδίο address με τη διεύθυνση του υποκαταστήματος που ανοίχθηκε ο λογαριασμός, τότε ενώ η πρώτη query θα εξακολουθούσε να λειτουργεί σωστά η δεύτερη θα έπρεπε να αλλαχθεί καθώς το Account δε θα συνενώνονταν μόνο ως προς accid αλλά και ως προς address.

7 Οι συνενώσεις στην MySQL5.7 στη γενικότερη περίπτωση εκτελούνται με nested loop όπου κάθε εγγραφή του ενός πίνακα ελέγχεται αν ανήκει στον άλλο πίνακα. Η σειρά με την οποία θα διαβαστούν οι πίνακες δηλ. ποιος θα είναι στο εξωτερικό loop και ποιος στο εσωτερικό, παίζει ρόλο στον τελικό χρόνο εκτέλεσης. Καθοριστικό ρόλο επίσης παίζει η ύπαρξη ευρετηρίου στο/ά πεδίο/α του join. Συνήθως ευρετήρια είναι δομές δεδομένων που δεικτοδοτούν στο δίσκο και απαντούν γρήγορα σε ερώτημα ισότητας. Τέτοιου είδους ευρετήρια φτιάχνονται αυτόματα στα πεδία των PRIMARY και UNIQUE KEY. Σε επόμενο κεφάλαιο θα δούμε πώς μπορούμε να δημιουργούμε και άλλα ευρετήρια. Έστω τώρα ότι έχω το join: T1 INNER JOIN T2 ON T1.a=T2.a. Αν για το a υπάρχει ευρετήριο στον Τ1 αλλά όχι στο Τ2, τότε το να έχω στο εξωτερικό loop το Τ2 θα είναι τις περισσότερες φορές καλύτερο αφού ο έλεγχος κάθε εγγραφής του Τ2 για το αν συνδυάζεται με το Τ1 εκμεταλλεύεται το ευρετήριο, ενώ στην αντίθετη περίπτωση που στο εξωτερικό loop ήταν το Τ1 το ευρετήριο θα έμενε δυνητικά ανεκμετάλλευτο. Μπορούμε να δούμε το πλάνο εκτέλεσης μιας query χρησιμοποιώντας την εντολή EXPLΑΙΝ, γράφοντας EXPLAIN ή EXPLAIN EXTENDED, πριν το SELECT. Παράδειγμα: EXPLAIN EXTENDED SELECT Customer.* FROM Customer INNER JOIN Owns ON Customer.cid=Owns.cid INNER JOIN Account ON Owns.accid=Account.accid INNER JOIN Transfer ON Account.accid=Transfer.accidSource; Επιστρέφονται διάφορα πεδία των οποίων η πλήρης εξήγηση ξεφεύγει από το σκοπό του συγγράμματος (o αναγνώστης που επιθυμεί περισσότερες πληροφορίες μπορεί να αναφερθεί στο Κεφ του manual). Αν παρατηρήσουμε το πεδίο table που δείχνει τον πίνακα στον οποίο δουλεύει η query θα παρατηρήσουμε ότι η σειρά με την οποία διαβάζονται οι πίνακες είναι η εξής: Transfer, Owns, Account, Customer. Καθώς η εσωτερική συνένωση είναι πράξη αντιμεταθετική και προσεταιριστική ο optimizer της MySQL5.7 θα εκτελέσει τις συνενώσεις με τη σειρά που θεωρεί ότι θα είναι βέλτιστη. Μπορούμε να επιβάλουμε τη σειρά με την οποία θα εκτελεστούν τα join σε μία query με τη χρήση του STRAIGHT_JOIN που έχει την ίδια σύνταξη και λειτουργία με το INNER JOIN, με τη διαφορά ότι επιβάλλει πρώτα να διαβαστεί ο πίνακας που βρίσκεται αριστερά του STRAIGHT_JOIN και μετά αυτός από τα δεξιά. Παραδείγματα: EXPLAIN EXTENDED SELECT Customer.* FROM Customer STRAIGHT_JOIN Owns ON Customer.cid=Owns.cid STRAIGHT_JOIN Account ON Owns.accid=Account.accid STRAIGHT_JOIN Transfer ON Account.accid=Transfer.accidSource; H σειρά με την οποία διαβάζονται οι πίνακες είναι η εξής: Customer, Owns, Account, Transfer καθώς έχουμε προσδιορίσει πλήρως την επιθυμητή σειρά. EXPLAIN EXTENDED SELECT Customer.* FROM Customer STRAIGHT_JOIN Owns ON Customer.cid=Owns.cid INNER JOIN Account ON Owns.accid=Account.accid INNER JOIN Transfer ON Account.accid=Transfer.accidSource; H σειρά με την οποία διαβάζονται οι πίνακες είναι η εξής: Transfer, Account, Customer, Owns. Παρατηρήστε ότι το STRAIGHT_JOIN επέβαλε τη σειρά μεταξύ Customer και Owns και όχι τη γενικότερη σειρά του Customer.

8 Εναλλακτικά μπορούμε να καθορίσουμε τη σειρά με την οποία θα προσπελαστούν οι πίνακες, χρησιμοποιώντας STRAIGHT_JOIN στο SELECT. Για παράδειγμα: EXPLAIN EXTENDED SELECT STRAIGHT_JOIN Customer.* FROM Customer INNER JOIN Owns ON Customer.cid=Owns.cid INNER JOIN Account ON Owns.accid=Account.accid INNER JOIN Transfer ON Account.accid=Transfer.accidSource; Επιβάλει ότι τα joins θα γίνουν με τη σειρά που αναγράφονται, είναι δηλαδή ισοδύναμο με το να έγραφα STRAIGHT_JOIN στη θέση κάθε INNER_JOIN. Ως εκ τούτου η σειρά με την οποία διαβάζονται οι πίνακες είναι η εξής: Customer, Owns, Account, Transfer. Τέλος αξίζει να σημειωθεί ότι η MySQL5.7 επιβάλει συγκεκριμένη σειρά με την οποία θα εκτελεστούν οι εξωτερικές συνενώσεις καθώς στη γενικότερη περίπτωση δεν είναι αντιμεταθετικές και προσεταιριστικές πράξεις. Έτσι στην έκφραση: T1 LEFT JOIN T2 ON Τ1.a=T2.a πρώτα θα προσπελαστεί ο αριστερός πίνακας (Τ1) και μετά ο δεξιά (Τ2). Αυτό σημαίνει ότι σε μία σειρά από LEFT JOIN οι προσπελάσεις θα είναι σύμφωνα με τον τρόπο που γράφονται. Για παράδειγμα: EXPLAIN EXTENDED SELECT Customer.* FROM Customer LEFT JOIN Owns ON Customer.cid=Owns.cid LEFT JOIN Account ON Owns.accid=Account.accid LEFT JOIN Transfer ON Account.accid=Transfer.accidSource; H σειρά με την οποία διαβάζονται οι πίνακες είναι η: Customer, Owns, Account, Transfer. Μοναδική εξαίρεση στον κανόνα είναι αν στο ΟΝ απαιτείται προσπέλαση σε άλλον πίνακα. Παράδειγμα EXPLAIN EXTENDED FROM Owns INNER JOIN Phones LEFT JOIN Customer ON Customer.cid=Owns.cid; H σειρά με την οποία διαβάζονται οι πίνακες είναι η: Owns, Customer, Phones Υλοποίηση INTERSECT, EXCEPT και FULL JOIN Οι πράξεις INTERSECT, EXCEPT και FULL JOIN όπως έχει ήδη αναφερθεί δεν υποστηρίζονται από τη MySQL5.7, μπορούν όμως να υλοποιηθούν μέσω άλλων πράξεων. Σε αυτήν την υποενότητα δείχνουμε πώς μπορούν να υλοποιηθούν με χρήση άλλων join. Η πράξη INTERSECT Το INTERSECT είναι αντίστοιχο του INNER JOIN με τη διαφορά ότι στο INTERSECT δεν επιστρέφονται διπλές εγγραφές, ενώ στο αντίστοιχο INNER JOIN αν μία εγγραφή από τον αριστερό πίνακα συνδυάζεται με πολλές εγγραφές από το δεξιό πίνακα στο αποτέλεσμα θα εμφανίζεται η εγγραφή πολλές φορές. Παράδειγμα Το παρακάτω ερώτημα βρίσκει τους πελάτες που τους λένε Maria και έχουν κινητό τηλέφωνο. (SELECT cid FROM Customer WHERE name='maria') INTERSECT (SELECT cid FROM Phones WHERE pnum LIKE '6%'); Ισοδύναμο ερώτημα με INNER JOIN SELECT DISTINCT cid FROM Customer INNER JOIN Phones USING(cid) WHERE name='maria' AND pnum LIKE '6%';

9 Η πράξη EXCEPT To EXCEPT μπορεί να υλοποιηθεί με χρήση LEFT JOIN. Το LEFT JOIN μας επιστρέφει όλες τις εγγραφές του αριστερού πίνακα. Αυτές που υπάρχουν και στο δεξιό θα εμφανίζονται με ίδιες τιμές στα πεδία του join. Επομένως ζητώντας στο WHERE τα πεδία του join στο δεξιό πίνακα να είναι NULL θα κρατηθούν οι εγγραφές του αριστερού πίνακα που δεν υπάρχουν στο δεξιό. Παράδειγμα Το παρακάτω ερώτημα βρίσκει τους πελάτες που τους λένε Maria και δεν έχουν κινητό τηλέφωνο. (SELECT cid FROM Customer WHERE name='maria') EXCEPT (SELECT cid FROM Phones WHERE pnum LIKE '6%'); Ισοδύναμο ερώτημα με LEFT JOIN και subqueries: SELECT T1.cid AS cid -- DISTINCT not needed FROM (SELECT cid FROM Customer WHERE name='maria') T1 LEFT JOIN (SELECT cid FROM Phones WHERE pnum LIKE '6%') T2 ON T1.cid=T2.cid WHERE T2.cid IS NULL; Κάνω την πρώτη subquery LEFT JOIN με τη δεύτερη. Στο αποτέλεσμα θα υπάρχουν εγγραφές της μορφής (T1.cid, T2.cid) με όλες τις εγγραφές της Τ1 να εμφανίζονται. Δύο περιπτώσεις θα έχουμε όσον αφορά το Τ2.cid. Ή θα ισχύει Τ2.cid=T1.cid στην οποία περίπτωση το cid αυτό θα το έπαιρνα με το INNER JOIN των δύο subquery, που σημαίνει ότι αντιστοιχεί σε κινητό τηλέφωνο ή το Τ2.cid θα είναι NULL. Η τελευταία περίπτωση είναι αυτή που θα μας επιστρέψει και το σωστό αποτέλεσμα της αφαίρεσης. Προσέξτε ότι δεν υπάρχει περίπτωση διπλών εγγραφών καθώς το join γίνεται σε PRIMARY KEY οπότε δε χρειάζεται το DISTINCT. Γενικά μιλώντας καλό είναι να χρησιμοποιούμε το DISTINCT μόνο όταν χρειάζεται απαραίτητα, καθώς η εκτέλεσή του κοστίζει σε χρόνο (μπορεί να επιβάλει την ταξινόμηση των εγγραφών του αποτελέσματος). Ισοδύναμο ερώτημα με LEFT JOIN χωρίς subqueries: SELECT Customer.cid AS cid FROM Customer LEFT JOIN Phones ON Customer.cid=Phones.cid AND pnum LIKE '6%' WHERE name='maria' AND Phones.cid IS NULL; Στην παραπάνω query μεταφέραμε τα κριτήρια του WHERE της subquery που αφαιρείται στην join_συνθήκη επιτρέποντάς μας να γράψουμε την query χωρίς να χρησιμοποιήσουμε subqueries. Αναλόγως της περίπτωσης η χρήση ή όχι υποερωτημάτων μπορεί να οδηγήσει σε αργότερη ή γρηγορότερη εκτέλεση. Στο παράδειγμά μας αν χρησιμοποιούσαμε την EXPLAIN EXTENDED για την προηγούμενη query που χρησιμοποιεί υποερωτήματα και κατόπιν δίναμε θα παρατηρούσαμε ότι βγαίνουν warnings. Με SHOW WARNINGS; θα διαπιστώναμε ότι η query μετατράπηκε από τον optimizer στην παραπάνω μορφή δηλ. χωρίς υποερωτήματα. Η πράξη FULL JOIN Μπορούμε να υλοποιήσουμε FULL JOIN στη MySQL5.7 ενώνοντας τα αποτελέσματα ενός LEFT και ενός RIGHT JOIN. Έστω ότι θέλουμε να υλοποιήσουμε το ακόλουθο: FROM Phones FULL JOIN Customer ON Phones.cid=Customer.cid; Πρώτη προσπάθεια: ( FROM Phones LEFT JOIN Customer on Phones.cid=Customer.cid) UNION ( FROM Phones RIGHT JOIN Customer on Phones.cid=Customer.cid); Τρέχοντας την παραπάνω query κόβονται από το αποτέλεσμα οι διπλές εγγραφές. Έτσι αν οι εγγραφές που υπήρχαν στους πίνακες ήταν όπως στους παρακάτω πίνακες το αποτέλεσμα θα ήταν σωστό.

10 Customer cid afm address name sname dateofbirth Baltetsiou st. Kostas Kostantinou Diakou st. Eleni Kostantinou Rodon st. Maria Papantoniou Phones cid pnum Ας θεωρήσουμε χάριν παραδείγματος ότι στον πίνακα Phones υπάρχει μία διπλή εγγραφή (μπορούμε να το πετύχουμε απενεργοποιώντας το primary key) έστω: Phones cid pnum Σε αυτήν την περίπτωση στο FULL JOIN θα πρέπει να υπάρξουν δύο εγγραφές <4, , NULL,.., NULL>, αλλά με την προηγούμενη query θα υπάρξει μόνο μία. Αν και το να υπάρξουν διπλές εγγραφές σε πίνακα είναι εξαιρετικά απίθανο στην πράξη, εντούτοις μπορεί να προκύψει παρόμοια περίπτωση αν το FULL JOIN γίνεται σε πεδίο/α που δεν είναι μοναδικό/α. Ο τρόπος για να κρατήσουμε τις διπλές εγγραφές με το UNION είναι να χρησιμοποιήσουμε UNION ALL αντί του DISTINCT που είναι το default. Σε αυτήν την περίπτωση όμως θα εμφανιστούν δύο φορές οι εγγραφές που ανήκουν στο INNER JOIN μία ως αποτέλεσμα του πρώτου υποερωτήματος και μία του δεύτερου. Θα πρέπει λοιπόν τώρα να διώξουμε από το δεύτερο υποερώτημα τα αποτελέσματα του πρώτου. Ο τρόπος είναι αυτός που παρουσιάστηκε στην υλοποίηση του EXCEPT δηλ. με τη χρήση του IS NULL στο WHERE. Τελική απάντηση: ( FROM Phones LEFT JOIN Customer on Phones.cid=Customer.cid) UNION ALL ( FROM Phones RIGHT JOIN Customer on Phones.cid=Customer.cid WHERE Phones.cid IS NULL);

11 7.2 Παράδειγμα Εργαστηριακής Άσκησης Εκφώνηση: Στην Βάση Δεδομένων του ΑΕΙ/ΑΤΕΙ της εργαστηριακής άσκησης 4 θα πρέπει να εκτελέσετε τις ακόλουθες ενέργειες: Σετ ερωτήσεων Α (Εσωτερικές Συνενώσεις INNER Joins) 1. Εμφανίστε τα ονόματα όλων των φοιτητών μαζί με τα τηλέφωνά τους. Δείξτε μόνο τους φοιτητές που διαθέτουν κινητό τηλέφωνο. 2. Εμφανίστε τους φοιτητές που έχουν περάσει το μάθημα ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ μαζί με το βαθμό τους. 3. Εμφανίστε τους καθηγητές μαζί με τα μαθήματα που διδάσκουν. Σετ ερωτήσεων B (Εξωτερικές Συνενώσεις Outer Joins) 1. Εμφανίστε όλους τους φοιτητές μαζί με τα τηλέφωνά τους. 2. Εμφανίστε όλα τα μαθήματα μαζί με τους κωδικούς τυχόν προαπαιτούμενων που έχουν. Ζητούμενα: Εσωτερικές συνενώσεις, εσωτερικές φυσικές συνενώσεις, σύγκριση μεταξύ καρτεσιανού γινομένου και φυσικής συνένωσης, εξωτερικές συνενώσεις Σετ ερωτήσεων Α (Εσωτερικές Συνενώσεις INNER Joins) Ζητούμενο A1: Εμφανίστε τα ονόματα όλων των φοιτητών μαζί με τα τηλέφωνά τους. Δείξτε μόνο τους φοιτητές που διαθέτουν κινητό τηλέφωνο. Δίνουμε: SELECT S.Firstname, T.TelephoneNumber FROM Student as S INNER JOIN Telephone as T ON S.AM=T.AM AND T.TelephoneNumber LIKE 69% ; Παράδειγμα αποτελέσματος φαίνεται στην Εικόνα 7.1. Εικόνα 7.1: Οι φοιτητές που έχουν κινητά τηλέφωνα.

12 Ζητούμενο A2: Εμφανίστε τους φοιτητές που έχουν δώσει το μάθημα ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ μαζί με το βαθμό τους. Για την υλοποίηση του συγκεκριμένου ερωτήματος χρειαζόμαστε στοιχεία από τρεις τους: Student, Exam και Course. Δίνουμε: SELECT S.Lastname, E.Grade FROM Student as S INNER JOIN Exam as E ON S.AM=E.AM INNER JOIN Course as C ON E.Cid=C.Cid WHERE C.Title= Baseis Dedomenwn ; Παράδειγμα αποτελέσματος φαίνεται στην Εικόνα 7.2. Εικόνα 7.2: Ένας φοιτητής έχει περάσει το μάθημα ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Ζητούμενο A3: Εμφανίστε τους καθηγητές μαζί με τα μαθήματα που διδάσκουν. Δίνουμε: SELECT P.Lastname, C.Title FROM Professor as P INNER JOIN Course as C ON C.KK=P.KK; Παράδειγμα αποτελέσματος φαίνεται στην Εικόνα 7.3.

13 Εικόνα 7.3: Οι καθηγητές και τα μαθήματά τους. Σετ ερωτήσεων B (Εξωτερικές Συνενώσεις Outer Joins) Ζητούμενο B1: Εμφανίστε όλους τους φοιτητές μαζί με τα τηλέφωνά τους. Το LEFT JOIN επιστρέφει όλες τις γραμμές των πεδίων του αριστερού πίνακα (Student) και όλες τις ταιριαστές γραμμές του δεξιού πίνακα (Telephone). Όταν δεν υπάρχει ταίριασμα στις γραμμές τότε επιστρέφει NULL. Δίνουμε: SELECT S.Lastname, T.TelephoneNumber FROM Student as S LEFT OUTER JOIN Telephone as T ON S.AM=T.AM; Παράδειγμα αποτελέσματος φαίνεται στην Εικόνα 7.4.

14 Εικόνα 7.4: Όλοι οι φοιτητές έχουν τηλέφωνο κατά συνέπεια στο αποτέλεσμα δεν υπάρχει NULL στο τηλέφωνο. Ζητούμενο B2: Εμφανίστε όλα τα μαθήματα μαζί με τους κωδικούς τυχόν προαπαιτούμενων που έχουν. Δίνουμε: SELECT A.Title, R.Cid2 FROM Course as A LEFT OUTER JOIN Requires as R ON A.Cid=R.Cid1 LEFT OUTER JOIN Course as B ON R.Cid2=B.Cid; Παράδειγμα αποτελέσματος φαίνεται στην Εικόνα 7.5. Εικόνα 7.5: Το μόνο μάθημα που έχει προαπαιτούμενο είναι ο Προγραμματισμός ΙΙ που έχει ως προαπαιτούμενο το μάθημα Προγραμματισμός Ι (Cid2=5).

15 7.3 Άλυτες Εργαστηριακές Ασκήσεις Άσκηση 1 Χρησιμοποιώντας τη βάση δεδομένων που δημιουργήσατε στο κεφάλαιο 4 (άλυτη άσκηση 1), απαντήστε στα ακόλουθα ερωτήματα: 1. Εμφανίστε τους εργαζόμενους που δουλεύουν στην εταιρία Advance. 2. Εμφανίστε τους προμηθευτές και τις εταιρίες με τις οποίες έχουν συνεργαστεί. 3. Εμφανίστε τις εταιρίες με τις διευθύνσεις τους(η διεύθυνση είναι ξεχωριστός πίνακας). 4. Εμφανίστε τις εταιρίες που δουλεύουν διευθυντές με 13 χρόνια προϋπηρεσίας. Άσκηση 2 Χρησιμοποιώντας τη βάση δεδομένων που δημιουργήσατε στο κεφάλαιο 4 (άλυτη άσκηση 2), απαντήστε στα ακόλουθα ερωτήματα: 1. Εμφανίστε τους σκηνοθέτες και τις ταινίες που έχουν σκηνοθετήσει. 2. Εμφανίστε τους θεατές και τις ταινίες που έχουν βαθμολογήσει με βαθμό μεγαλύτερο του Εμφανίστε τους κριτές μαζί με τις ταινίες που έχουν βαθμολογήσει. 4. Εμφανίστε τις ταινίες που είχαν τους περισσότερους θεατές(και πόσοι ήταν αυτοί). Άσκηση 3 Χρησιμοποιώντας τη βάση δεδομένων που δημιουργήσατε στο κεφάλαιο 4 (άλυτη άσκηση 3), απαντήστε στα ακόλουθα ερωτήματα: 1. Εμφανίστε τα τουρνουά μαζί με τους νικητές τους για το έτος Εμφανίστε τους παίκτες που συμμετείχαν σε τουρνουά της Γαλλίας. 3. Εμφανίστε τους νικητές του Roland Garros από το 2010 μέχρι σήμερα. 4. Εμφανίστε τα τουρνουά στα οποία συμμετείχε ο παίκτης Rafael Nadal το 2015.

16 Βιβλιογραφία/Αναφορές R. Elmasri, S.B. Navathe "Θεμελιώδεις Αρχές Συστημάτων ΒΔ - 4η Έκδοση". Κεφάλαια 8 και 9. R. Ramakrishnan and J. Gehrke Database Management Systems (3 ed.). McGraw- Hill, Inc., New York, NY, USA. Κεφάλαιο 5. JOIN. INNER JOIN. LEFT JOIN. RIGHT JOIN. FULL JOIN. FULL JOIN και MySQL.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι Απλά ερωτήματα Επιλογής Ερωτήματα με Ενώσεις πινάκων Ερωτήματα με Παραμετρικά Κριτήρια Ερωτήματα με Υπολογιζόμενα πεδία Απλά ερωτήματα Επιλογής Τα Ερωτήματα μας επιτρέπουν

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

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

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

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

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός 7 Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός Σχεσιακή Άλγεβρα H Σχεσιακή Άλγεβρα (relational algebra) ορίζει ένα σύνολο πράξεων που εφαρμόζονται σε μία ή περισσότερες σχέσεις

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

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

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

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

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα Database System Concepts, 6 th Ed. Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-use Παράδειγμα Σχέσης attributes

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

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

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

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

Εργαστήριο 8o. Ερωτήματα επιλογής Παραμετρικά ερωτήματα Ερωτήματα δημιουργίας πεδίων. Ευάγγελος Γ. Καραπιδάκης

Εργαστήριο 8o. Ερωτήματα επιλογής Παραμετρικά ερωτήματα Ερωτήματα δημιουργίας πεδίων. Ευάγγελος Γ. Καραπιδάκης Εργαστήριο 8o Ερωτήματα επιλογής Παραμετρικά ερωτήματα Ερωτήματα δημιουργίας πεδίων Ερωτήματα Τα Ερωτήματα μας επιτρέπουν να βλέπουμε τα δεδομένα που επιθυμούμε, με τη σειρά που επιθυμούμε. Μας δίνουν

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

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

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων 1 Επεξεργασία Ερωτήσεων Θα δούμε την «πορεία» μιας SQL ερώτησης (πως εκτελείται) Ερώτηση SQL Ερώτηση ΣΒΔ Αποτέλεσμα 2 Βήματα Επεξεργασίας Τα βασικά βήματα στην επεξεργασία

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

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

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

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

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

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

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

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

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

Σχεσιακή Άλγεβρα. Παύλος Εφραιμίδης. Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 1

Σχεσιακή Άλγεβρα. Παύλος Εφραιμίδης. Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 1 Σχεσιακή Άλγεβρα Παύλος Εφραιμίδης Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 1 Θεμελίωση της Σχεσιακού Μοντέλου Δεδομένων Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός Στο μάθημα θα πούμε για Σχεσιακή Άλγεβρα Βάσεις Δεδομένων

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

Σχεσιακή Άλγεβρα Σχεδιασμός Βάσεων Δεδομένων

Σχεσιακή Άλγεβρα Σχεδιασμός Βάσεων Δεδομένων Σχεσιακή Άλγεβρα Σχεδιασμός Βάσεων Δεδομένων Μαρία Χαλκίδη Εισαγωγή Εννοιολογικός Σχεδιασμός Βάσεων Δεδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων) Λογικός Σχεδιασμός Βάσεων Δεδομένων (με χρήση

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

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

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

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

SQL: Αιτήματα. Κεφάλαιο 5. Database Management Systems, R. Ramakrishnan and J. Gehrke

SQL: Αιτήματα. Κεφάλαιο 5. Database Management Systems, R. Ramakrishnan and J. Gehrke SQL: Αιτήματα Κεφάλαιο 5 Database Management Systems, R. Ramakrishnan and J. Gehrke Στιγμιότυπα Στιγμιότυπα των σχέσεων Sailors Reserves και Boats. Αν στο κλειδί της σχέσης Reserved δε συμμετείχε το γνώρισμα

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

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

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

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

SQL Data Manipulation Language

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

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

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

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

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

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

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

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

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

Τμήμα Πληροφορικής ΑΠΘ Βάσεις Δεδομένων Εργαστήριο ΙΙI Τμήμα Πληροφορικής ΑΠΘ 2013-2014 2 Σκοπός του 3 ου εργαστηρίου Σκοπός αυτού του εργαστηρίου είναι: η μελέτη ερωτημάτων επιλογής, προβολής και απλών συνδέσεων σε δύο ή περισσότερες

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

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

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

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

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

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

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

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

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

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

Σχεσιακή Άλγεβρα. Συνολοθεωρητικές Πράξεις. Εκφράσεις. Ειδικές Πράξεις. Θεμελίωση της Σχεσιακού Μοντέλου Δεδομένων. Σχεσιακός Λογισμός

Σχεσιακή Άλγεβρα. Συνολοθεωρητικές Πράξεις. Εκφράσεις. Ειδικές Πράξεις. Θεμελίωση της Σχεσιακού Μοντέλου Δεδομένων. Σχεσιακός Λογισμός Σχεσιακή Άλγεβρα Παύλος Εφραιμίδης Θεμελίωση της Σχεσιακού Μοντέλου Δεδομένων Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός ΣτομάθημαθαπούμεγιαΣχεσιακή Άλγεβρα Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 1 Βάσεις Δεδομένων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005 ΛΥΣΕΙΣ Ι. Βασιλείου -----------------------------------------------------------------------------------------------------

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

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Βάσεις Δεδομένων Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Βάσεις Δεδομένων», 2015-2016 Κεφάλαιο 6: Structured Query Language (SQL) Μια γλώσσα Βάσεων

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

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

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

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

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

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

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

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

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

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

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

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

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

1 / 150

1 / 150 Ερωτήματα SQL με σύζευξη πινάκων Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 150 Περιεχόμενα 1 Γενικά για τη σύζευξη πινάκων 2 Καρτεσιανό γινόμενο και θ σύζευξη 3 Φυσική σύζευξη

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

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

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

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

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 09: Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός (Relational Algebra/Calculus) Ι Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: Σχεσιακή Πληρότητα Σχεσιακή Άλγεβρα

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

Πανεπιστήμιο Πειραιώς, Τμήμα Πληροφορικής

Πανεπιστήμιο Πειραιώς, Τμήμα Πληροφορικής Πανεπιστήμιο Πειραιώς, Τμήμα Πληροφορικής Ακαδημαϊκό έτος 2009-10 ΣΥΓΦΡΟΝΑ ΘΔΜΑΤΑ ΒΑΣΔΩΝ ΓΔΓΟΜΔΝΩΝ 1 η ΔΡΓΑΣΙΑ ΔΞΑΜΗΝΟΥ ομάδες των 2-3 ατόμων Εισαγωγή Έστω η βάση δεδομένων μιας επιχείρησης (θα μπορούσε

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

1 / 105

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Επεξεργασία Ερωτήσεων ΜΕΡΟΣ 1 Γενική Εικόνα του Μαθήματος 1. Μοντελοποίηση (Μοντέλο Ο/Σ, Σχεσιακό, Λογικός Σχεδιασμός) 2. Προγραμματισμός (Σχεσιακή Άλγεβρα, SQL) ημιουργία/κατασκευή Εισαγωγή εδομένων

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

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

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

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

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

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

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

Βάσεις εδοµένων. Συνολοθεωρητικές Πράξεις. Ειδικές Πράξεις. Εκφράσεις. Θεµελίωση της Σχεσιακού Μοντέλου εδοµένων. Σχεσιακή Άλγεβρα Σχεσιακός Λογισµός

Βάσεις εδοµένων. Συνολοθεωρητικές Πράξεις. Ειδικές Πράξεις. Εκφράσεις. Θεµελίωση της Σχεσιακού Μοντέλου εδοµένων. Σχεσιακή Άλγεβρα Σχεσιακός Λογισµός Θεµελίωση της Σχεσιακού Μοντέλου εδοµένων Βάσεις εδοµένων Σχεσιακή Άλγεβρα Σχεσιακός Λογισµός Παύλος Εφραιµίδης pefraimi at ee.duth.gr Στο µάθηµα θα πούµε για Σχεσιακή Άλγεβρα Βάσεις εδοµένων Σχεσιακή

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Επεξεργασία Ερωτήσεων Σ Β Βάση εδομένων Η ομή ενός ΣΒ Βάσεις Δεδομένων 2006-2007 Ευαγγελία Πιτουρά 1 Βάσεις Δεδομένων 2006-2007 Ευαγγελία Πιτουρά 2 Εισαγωγή Εισαγωγή ΜΕΡΟΣ 1 (Χρήση Σ Β ) Γενική

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

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

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δεντρικά Ευρετήρια Βάσεις Δεδομένων 2017-2018 1 Δέντρα Αναζήτησης Ένα δέντρο αναζήτησης (search tree) τάξεως p είναι ένα δέντρο τέτοιο ώστε κάθε κόμβος του περιέχει το πολύ p - 1 τιμές αναζήτησης και ρ

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

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

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δεντρικά Ευρετήρια 1 Δέντρα Αναζήτησης Ένα δέντρο αναζήτησης (search tree) τάξεως p είναι ένα δέντρο τέτοιο ώστε κάθε κόμβος του περιέχει το πολύ p - 1 τιμές αναζήτησης και ρ δείκτες ως εξής P 1 K 1 P

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

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

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

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

Ερωτήματα SQL με σύζευξη πινάκων ΜΗ ΕΙΝΑΙ ΒΑΣΙΛΙΚΗΝ ΑΤΡΑΠΟΝ ΕΠΙ ΓΕΩΜΕΤΡΙΑΝ Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr 1 / 30 Σκοπός του μαθήματος Εκτελείτε ερωτήματα ανάσυρσης δεδομένων από

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

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

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Δεντρικά Ευρετήρια Ευαγγελία Πιτουρά 1 Δέντρα Αναζήτησης Ένα δέντρο αναζήτησης (search tree) τάξεως p είναι ένα δέντρο τέτοιο ώστε κάθε κόμβος του περιέχει το πολύ p - 1 τιμές αναζήτησης και ρ δείκτες

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

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

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

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

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

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

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

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

Βάσεις Δεδομένων Ι SQL Μέρος 2 ο. Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ Βάσεις Δεδομένων Ι - 04 SQL Μέρος 2 ο Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας Ερωτήματα Πολλαπλών Σχέσεων (multi-relation queries) Θα διαπιστώσετε στην πορεία ότι τα περισσότερο

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

Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL

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

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

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

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

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

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2013

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2013 1 2 3 ΟΝΟΜΑ ΣΥΝ Αρ. Μητρώου ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2013 Ι. Βασιλείου Τ. Σελλής -----------------------------------------------------------------------------------------------------

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

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

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

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

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

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

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

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

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

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

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

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

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

Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων)

Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων) Σχεσιακή Άλγεβρα Βάσεις Δεδομένων 2010-2011 Ευαγγελία Πιτουρά 1 Εισαγωγή Στα προηγούμενα μαθήματα: Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων) Λογικός Σχεδιασμός

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

Περιεχόμενα. Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL. Συνένωση Σχέσεων στην SQL2 (3) Συνένωση Σχέσεων στην SQL2. (Join Relations Feature in SQL)

Περιεχόμενα. Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL. Συνένωση Σχέσεων στην SQL2 (3) Συνένωση Σχέσεων στην SQL2. (Join Relations Feature in SQL) Περιεχόμενα Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL Παύλος Εφραιμίδης Προχωρημένα Ερωτήματα SQL Συνένωση Συναθροιστικές Συναρτήσεις Ομαδοποίηση Βάσεις Δεδομένων SQL - Μέρος Τρίτο 1 Βάσεις Δεδομένων

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

Αντώνης Χρυσόπουλος Στέλιος Μόσχογλου Θεοδόσης Σουργκούνης MYSQL PHP ADVANCED. Χέρι χέρι με τον Καρατζαφέρη

Αντώνης Χρυσόπουλος Στέλιος Μόσχογλου Θεοδόσης Σουργκούνης MYSQL PHP ADVANCED. Χέρι χέρι με τον Καρατζαφέρη Αντώνης Χρυσόπουλος Στέλιος Μόσχογλου Θεοδόσης Σουργκούνης MYSQL PHP ADVANCED Χέρι χέρι με τον Καρατζαφέρη Τα μάθατε καλέ κυρία? 1. Ψευδώνυμα Πινάκων 2. Ένωση Πίνακα με τον εαυτό του 3. Ομαδοποίηση 4.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Επεξεργασία ερωτημάτων

Επεξεργασία ερωτημάτων Επεξεργασία ερωτημάτων Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη Σε τι αφορά η επεξεργασία ερωτημάτων? Αναφέρεται στο σύνολο των δραστηριοτήτων που περιλαμβάνονται στην ανάκτηση δεδομένων από μία βάση δεδομένων

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

ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ MYSQL

ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ MYSQL Αντώνης Χρυσόπουλος Χριστίνα Αυδίκου Στέλιος Μόσχογλου Θεοδόσης Σουργκούνης ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ MYSQL MySQL For Pros Διαλέχτε, καλέ κυρία, Διαλέχτε 1. Ταξινόμηση 2. Περιορισμοί 3. Τελεστές LIKE, IN, BETWEEN

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΑΡΧΗ 1ης ΣΕΛΙ ΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 ΘΕΜΑ Α : Α1. Να

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

ΗΥ360 Αρχεία και Βάσεις Δεδομένων. Φροντιστήριο στην Σχεσιακή Άλγεβρα.

ΗΥ360 Αρχεία και Βάσεις Δεδομένων. Φροντιστήριο στην Σχεσιακή Άλγεβρα. ΗΥ360 Αρχεία και Βάσεις Δεδομένων Φροντιστήριο στην Σχεσιακή Άλγεβρα. Σχεσιακή Άλγεβρα Εισαγωγή Σύνολο τελεστών που εφαρμόζονται σε μία ή περισσότερες σχέσεις Όλες οι πράξεις της σχεσιακής άλγεβρας επιστρέφουν

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

Βελτιστοποίηση ερωτημάτων Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

Βελτιστοποίηση ερωτημάτων Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη Βελτιστοποίηση ερωτημάτων Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη με βάση slides από A. Silberschatz, H. Korth, S. Sudarshan, Database System Concepts, 5 th edition Εισαγωγή (1) Εναλλακτικοί τρόποι για

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

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Σ Β Σύνολο από προγράμματα για τη διαχείριση της Β Επεξεργασία Ερωτήσεων Αρχεία ευρετηρίου Κατάλογος συστήματος Αρχεία δεδομένων ΒΑΣΗ Ε ΟΜΕΝΩΝ Σύστημα Βάσεων εδομένων (ΣΒ ) Βάσεις Δεδομένων 2007-2008

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

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

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

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

ΗΥ460 Συστήµατα Διαχείρισης Βάσεων Δεδοµένων Χειµερινό Εξάµηνο 2016 Διδάσκοντες: Βασίλης Χριστοφίδης

ΗΥ460 Συστήµατα Διαχείρισης Βάσεων Δεδοµένων Χειµερινό Εξάµηνο 2016 Διδάσκοντες: Βασίλης Χριστοφίδης ΗΥ460 Συστήµατα Διαχείρισης Βάσεων Δεδοµένων Χειµερινό Εξάµηνο 2016 Διδάσκοντες: Βασίλης Χριστοφίδης 2 η Σειρά Ασκήσεων Ηµεροµηνία Παράδοσης: 14/11/2016 Άσκηση 1 (10 µονάδες) Εξωτερική Ταξινόµηση Θεωρείστε

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

Κεφάλαιο 3. Ερωτήματα SQL

Κεφάλαιο 3. Ερωτήματα SQL Κεφάλαιο 3. Ερωτήματα SQL Σύνοψη Σ αυτό το κεφάλαιο θα παρουσιάσουμε βασικά και σύνθετα ερωτήματα της SQL. Τα ερωτήματα θα υποβληθούν στην βάση δεδομένων DVDclub που δημιουργήθηκε στο προηγούμενο κεφάλαιο.

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ Θέμα Α ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ ΠΑΝΕΛΛΑΔΙΚΩΝ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ 2016-2017 Πάτρα 3/5/2017 Ονοματεπώνυμο:.. Α1. Να γράψετε στην κόλλα σας τον αριθμό

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

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

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων Θα δούμε την «πορεία» μιας SQL ερώτησης (πως εκτελείται) Ερώτηση SQL Ερώτηση ΣΒΔ Αποτέλεσμα Βάσεις

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

ΗΥ360: Αρχεία και Βάσεις Δεδομένων Διδάσκων: Πλεξουσάκης Δημήτρης. Φροντιστήριο Σχεσιακή Άλγεβρα Δημητράκη Κατερίνα

ΗΥ360: Αρχεία και Βάσεις Δεδομένων Διδάσκων: Πλεξουσάκης Δημήτρης. Φροντιστήριο Σχεσιακή Άλγεβρα Δημητράκη Κατερίνα ΗΥ360: Αρχεία και Βάσεις Δεδομένων Διδάσκων: Πλεξουσάκης Δημήτρης Φροντιστήριο Σχεσιακή Άλγεβρα Δημητράκη Κατερίνα Αντιστοίχιση Μοντέλο Οντοτήτων Σχέσεων Σχεσιακό μοντέλο ID Customer ID Name 1928 Γιώργος

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

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

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

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

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

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

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

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

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

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

#1.1 Τι είναι η Βάση Δεδομένων

#1.1 Τι είναι η Βάση Δεδομένων 1 2 #1.1 Τι είναι η Βάση Δεδομένων Βάση δεδομένων είναι ένα πλήθος στοιχείων συναφών μεταξύ τους, τοποθετημένα και ταξινομημένα με συγκεκριμένο τρόπο. Με τη χρήση μιας Βάσης Δεδομένων μπορούμε: να καταχωρούμε

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

Σχεσιακή Άλγεβρα. Βάσεις Δεδομένων : Σχεσιακή Άλγεβρα 1

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

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

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα). Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

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

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

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

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