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

Σχετικά έγγραφα
DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT

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

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

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

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

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


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

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




1 / 150

1 / 105

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

DISTINCT, LIKE, NULL, AND, OR, BETWEEN

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

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

Βάσεις Περιβαλλοντικών Δεδομένων

Μικροβιολογία & Υγιεινή Τροφίμων

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

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

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

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

1 / 87

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ. Πιθανότητες. Συνδυαστική Ανάλυση Διδάσκων: Επίκουρος Καθηγητής Κωνσταντίνος Μπλέκας

1 / 97

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

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

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

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

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

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

Ερωτήματα επιλογής με σύζευξη πινάκων

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

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Αλγορίθμους

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Υπολογιστές Ι. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής


1 / 106

Εισαγωγή στους Αλγορίθμους

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

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Ιστορία της μετάφρασης

Βάσεις Περιβαλλοντικών Δεδομένων

Εργαστήριο Χημείας Ενώσεων Συναρμογής

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

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

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

ΓΕΝΙΚΗ ΚΑΙ ΑΝΟΡΓΑΝΗ ΧΗΜΕΙΑ

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

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Εκκλησιαστικό Δίκαιο

Ηλεκτρισμός & Μαγνητισμός

Βάσεις Περιβαλλοντικών Δεδομένων

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Εφαρμοσμένη Στατιστική

Εργαστήριο Χημείας Ενώσεων Συναρμογής

Εκκλησιαστικό Δίκαιο

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δείκτες Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Ηλεκτρισμός & Μαγνητισμός

Εισαγωγή στην Διοίκηση Επιχειρήσεων

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

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Οικονομετρία. Εξειδίκευση του υποδείγματος. Μορφή της συνάρτησης: Πολυωνυμική, αντίστροφη και αλληλεπίδραση μεταβλητών

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

Εισαγωγή στην Διοίκηση Επιχειρήσεων

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

Εισαγωγή στους Αλγορίθμους

Ηλεκτρισμός & Μαγνητισμός

Μηχανολογικό Σχέδιο Ι

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Διοικητική Λογιστική

Εισαγωγή στην Διοίκηση Επιχειρήσεων

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

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

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

Κβαντική Επεξεργασία Πληροφορίας

Ιστορία της μετάφρασης

Κβαντική Επεξεργασία Πληροφορίας

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Β. Διαφορικός Λογισμός

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

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Βασικές Αρχές Φαρμακοκινητικής

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

Οικονομία των ΜΜΕ. Ενότητα 7: Μορφές αγοράς και συγκέντρωση των ΜΜΕ

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Διπλωματική Ιστορία Ενότητα 2η:

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Ενημέρωση βάσης δεδομένων με τις εντολές INSERT, DELETE, UPDATE Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

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

Περιεχόμενα 1 Γενικά για την αποθήκευση δεδομένων και την ενημέρωση της βάσης δεδομένων 2 Διαγραφή δεδομένων με την εντολή DELETE 3 Τροποποίηση δεδομένων με την εντολή UPDATE 4 Εισαγωγή δεδομένων INSERT 5 Ανάλυση ενός προβλήματος 2 / 88

Σκοπός του μαθήματος Ενημέρωση είναι η τροποποίηση του περιεχομένου της βάσης δεδομένων. 3 / 88

Σκοπός του μαθήματος Ενημέρωση είναι η τροποποίηση του περιεχομένου της βάσης δεδομένων. Η γλώσσα SQL διαθέτει τρεις εντολές για το σκοπό αυτό: 4 / 88

Σκοπός του μαθήματος Ενημέρωση είναι η τροποποίηση του περιεχομένου της βάσης δεδομένων. Η γλώσσα SQL διαθέτει τρεις εντολές για το σκοπό αυτό: DELETE για τη διαγραφή εγγραφών από πίνακες, 5 / 88

Σκοπός του μαθήματος Ενημέρωση είναι η τροποποίηση του περιεχομένου της βάσης δεδομένων. Η γλώσσα SQL διαθέτει τρεις εντολές για το σκοπό αυτό: DELETE για τη διαγραφή εγγραφών από πίνακες, UPDATE για την τροποποίηση εγγραφών σε πίνακες, 6 / 88

Σκοπός του μαθήματος Ενημέρωση είναι η τροποποίηση του περιεχομένου της βάσης δεδομένων. Η γλώσσα SQL διαθέτει τρεις εντολές για το σκοπό αυτό: DELETE για τη διαγραφή εγγραφών από πίνακες, UPDATE για την τροποποίηση εγγραφών σε πίνακες, INSERT για την εισαγωγή εγγραφών σε πίνακες. 7 / 88

Σκοπός του μαθήματος Ενημέρωση είναι η τροποποίηση του περιεχομένου της βάσης δεδομένων. Η γλώσσα SQL διαθέτει τρεις εντολές για το σκοπό αυτό: DELETE για τη διαγραφή εγγραφών από πίνακες, UPDATE για την τροποποίηση εγγραφών σε πίνακες, INSERT για την εισαγωγή εγγραφών σε πίνακες. 8 / 88

Σκοπός του μαθήματος Ενημέρωση είναι η τροποποίηση του περιεχομένου της βάσης δεδομένων. Η γλώσσα SQL διαθέτει τρεις εντολές για το σκοπό αυτό: DELETE για τη διαγραφή εγγραφών από πίνακες, UPDATE για την τροποποίηση εγγραφών σε πίνακες, INSERT για την εισαγωγή εγγραφών σε πίνακες. Σκοπός του μαθήματος είναι να καταλάβετε τη λειτουργία ενημέρωσης μιας βάσης δεδομένων μέσα από τις εντολές DELETE, UPDATE, INSERT. 9 / 88

Διαρκής μεταβολή του περιεχομένου 10 / 88

Διαρκής μεταβολή του περιεχομένου Τι μεταβάλλεται Το πλήθος των εγγραφών ενός ή περισσότερων πινάκων. Οι τιμές ενός ή περισσότερων πεδίων σε έναν η περισσότερους πίνακες. 11 / 88

Διαρκής μεταβολή του περιεχομένου Τι μεταβάλλεται Το πλήθος των εγγραφών ενός ή περισσότερων πινάκων. Οι τιμές ενός ή περισσότερων πεδίων σε έναν η περισσότερους πίνακες. Τι δεν μεταβάλλεται Το πλήθος των πινάκων της βάσης δεδομένων (σχήμα). Η δομή των πινάκων της βάσης δεδομένων (σχήμα). 12 / 88

Σε μια απόδειξη πώλησης; Τι καταγράφεται κατά την πώληση ενός προϊόντος; Εικόνα από: http://en.wikipedia.org/wiki/receipt 13 / 88

Που καταγράφεται; Που καταγράφεται η πώληση ενός προϊόντος; 14 / 88

Συναλλαγές στο ΑΤΜ Τι καταγράφεται σε μια συναλλαγή σε ένα ΑΤΜ; Εικόνα από: http://en.wikipedia.org/wiki/automated_teller_machine 15 / 88

Καταγραφή τραπεζικών συναλλαγών. Που καταγράφονται οι τραπεζικές συναλλαγές; 16 / 88

Στο facebook; Τι καταγράφεται κατά την εγγραφή στο facebook; 17 / 88

Στο facebook; Που καταγράφονται τα μηνύματα του facebook; 18 / 88

Στο facebook; Που καταγράφονται τα μηνύματα του facebook; 19 / 88

Στο facebook; Που καταγράφονται τα μηνύματα του facebook; 20 / 88

Στο facebook; Που καταγράφονται τα μηνύματα του facebook; 1 Πόσο «ρεύμα» πληρώνει η εταιρεία facebook; 2 Πόση ενέργεια καταναλώνεται παγκοσμίως για τις ανάγκες του διαδικτύου; 3 Τι ξέρετε για τη Βόρεια Καρολίνα; 21 / 88

Περιεχόμενα 1 Γενικά για την αποθήκευση δεδομένων και την ενημέρωση της βάσης δεδομένων 2 Διαγραφή δεδομένων με την εντολή DELETE 3 Τροποποίηση δεδομένων με την εντολή UPDATE 4 Εισαγωγή δεδομένων INSERT 5 Ανάλυση ενός προβλήματος 22 / 88

Διαγραφή εγγραφών με την εντολή DELETE DELETE FROM πίνακας WHERE παράσταση 23 / 88

Διαγραφή εγγραφών με την εντολή DELETE DELETE FROM πίνακας WHERE παράσταση Παρατηρήσεις για την εντολή DELETE 1 Χρειάζεται έγκυρο όνομα πίνακα που ακολουθεί φράση DELETE. 24 / 88

Διαγραφή εγγραφών με την εντολή DELETE DELETE FROM πίνακας WHERE παράσταση Παρατηρήσεις για την εντολή DELETE 1 Χρειάζεται έγκυρο όνομα πίνακα που ακολουθεί φράση DELETE. 2 Χρειάζεται έγκυρο όνομα πεδίου που ακολουθεί φράση WHERE. 25 / 88

Διαγραφή εγγραφών με την εντολή DELETE DELETE FROM πίνακας WHERE παράσταση Παρατηρήσεις για την εντολή DELETE 1 Χρειάζεται έγκυρο όνομα πίνακα που ακολουθεί φράση DELETE. 2 Χρειάζεται έγκυρο όνομα πεδίου που ακολουθεί φράση WHERE. 3 Η διαγραφή γίνεται κατά πλειάδες (εγγραφές) και όχι μεμονωμένα. 26 / 88

Διαγραφή εγγραφών με την εντολή DELETE DELETE FROM πίνακας WHERE παράσταση Παρατηρήσεις για την εντολή DELETE 1 Χρειάζεται έγκυρο όνομα πίνακα που ακολουθεί φράση DELETE. 2 Χρειάζεται έγκυρο όνομα πεδίου που ακολουθεί φράση WHERE. 3 Η διαγραφή γίνεται κατά πλειάδες (εγγραφές) και όχι μεμονωμένα. 4 Η φράση WHERE είναι προαιρετική, αλλά χωρίς αυτή θα γίνει διαγραφή όλων των εγγραφών. 27 / 88

Διαγραφή δεδομένων ενός πίνακα Διαγραφή όλων των δεδομένων ενός πίνακα 1 DELETE 2 FROM projects; 28 / 88

Διαγραφή δεδομένων ενός πίνακα Διαγραφή όλων των δεδομένων ενός πίνακα 1 DELETE 2 FROM projects; Προσοχή: Θα διαγραφούν όλες οι εγγραφές του πίνακα. Ολες. 29 / 88

Διαγραφή δεδομένων ενός πίνακα Διαγραφή όλων των δεδομένων ενός πίνακα 1 DELETE 2 FROM projects; Προσοχή: Θα διαγραφούν όλες οι εγγραφές του πίνακα. Ολες. Σφάλμα: 1 DELETE * 2 FROM projects; 30 / 88

Επιλεκτική διαγραφή δεδομένων 31 / 88

Επιλεκτική διαγραφή δεδομένων DELETE με WHERE για τη διαγραφή υποσυνόλου των δεδομένων 1 DELETE 2 FROM projects 3 WHERE proid = 43; 32 / 88

Επιλεκτική διαγραφή δεδομένων DELETE με WHERE για τη διαγραφή υποσυνόλου των δεδομένων 1 DELETE 2 FROM projects 3 WHERE proid = 43; 1 Τι θα συμβεί αν δεν υπάρχει εγγραφή στον πίνακα projects με proid=43; 2 Τι θα συμβεί στον πίνακα workson για την απασχόληση των υπαλλήλων στο έργο με proid=43; 33 / 88

Διαγραφή δεδομένων με υποερώτημα Να διαγραφεί η συμμετοχή υπαλλήλων στο έργο με κωδικό 43 για τους υπαλλήλους με μισθό άνω των 1400 34 / 88

Διαγραφή δεδομένων με υποερώτημα Να διαγραφεί η συμμετοχή υπαλλήλων στο έργο με κωδικό 43 για τους υπαλλήλους με μισθό άνω των 1400 1 DELETE 2 FROM workson 3 WHERE proid = 43 4 AND empid 35 / 88

Διαγραφή δεδομένων με υποερώτημα Να διαγραφεί η συμμετοχή υπαλλήλων στο έργο με κωδικό 43 για τους υπαλλήλους με μισθό άνω των 1400 1 DELETE 2 FROM workson 3 WHERE proid = 43 4 AND empid IN (SELECT empid 5 FROM employees 6 WHERE salary > 1400); 36 / 88

Διαγραφή δεδομένων με υποερώτημα σύζευξης Να διαγραφούν οι υπάλληλοι που δεν συμμετέχουν σε κανένα έργο 37 / 88

Διαγραφή δεδομένων με υποερώτημα σύζευξης Να διαγραφούν οι υπάλληλοι που δεν συμμετέχουν σε κανένα έργο 1 DELETE 2 FROM employees 3 WHERE empid IN 38 / 88

Διαγραφή δεδομένων με υποερώτημα σύζευξης Να διαγραφούν οι υπάλληλοι που δεν συμμετέχουν σε κανένα έργο 1 DELETE 2 FROM employees 3 WHERE empid IN 4 (SELECT e.empid 5 FROM employees e LEFT JOIN workson w 6 ON e.empid = w.empid 7 WHERE w.empid IS NULL); 39 / 88

Περιεχόμενα 1 Γενικά για την αποθήκευση δεδομένων και την ενημέρωση της βάσης δεδομένων 2 Διαγραφή δεδομένων με την εντολή DELETE 3 Τροποποίηση δεδομένων με την εντολή UPDATE 4 Εισαγωγή δεδομένων INSERT 5 Ανάλυση ενός προβλήματος 40 / 88

Ενημέρωση εγγραφών με την εντολή UPDATE UPDATE πίνακας SET πεδίο=τιμή WHERE παράσταση 41 / 88

Ενημέρωση εγγραφών με την εντολή UPDATE UPDATE πίνακας SET πεδίο=τιμή WHERE παράσταση Παρατηρήσεις για την εντολή UPDATE 1 Χρειάζεται έγκυρο όνομα πίνακα που ακολουθεί φράση UPDATE. 42 / 88

Ενημέρωση εγγραφών με την εντολή UPDATE UPDATE πίνακας SET πεδίο=τιμή WHERE παράσταση Παρατηρήσεις για την εντολή UPDATE 1 Χρειάζεται έγκυρο όνομα πίνακα που ακολουθεί φράση UPDATE. 2 Χρειάζεται έγκυρο όνομα πεδίου που ακολουθεί φράση SET. 43 / 88

Ενημέρωση εγγραφών με την εντολή UPDATE UPDATE πίνακας SET πεδίο=τιμή WHERE παράσταση Παρατηρήσεις για την εντολή UPDATE 1 Χρειάζεται έγκυρο όνομα πίνακα που ακολουθεί φράση UPDATE. 2 Χρειάζεται έγκυρο όνομα πεδίου που ακολουθεί φράση SET. 3 Τήρηση κανόνων ακεραιότητας. 44 / 88

Ενημέρωση εγγραφών με την εντολή UPDATE UPDATE πίνακας SET πεδίο=τιμή WHERE παράσταση Παρατηρήσεις για την εντολή UPDATE 1 Χρειάζεται έγκυρο όνομα πίνακα που ακολουθεί φράση UPDATE. 2 Χρειάζεται έγκυρο όνομα πεδίου που ακολουθεί φράση SET. 3 Τήρηση κανόνων ακεραιότητας. 4 Ταυτόχρονη αλλαγή δύο ή περισσότερων πεδίων. 45 / 88

Ενημέρωση εγγραφών με την εντολή UPDATE UPDATE πίνακας SET πεδίο=τιμή WHERE παράσταση Παρατηρήσεις για την εντολή UPDATE 1 Χρειάζεται έγκυρο όνομα πίνακα που ακολουθεί φράση UPDATE. 2 Χρειάζεται έγκυρο όνομα πεδίου που ακολουθεί φράση SET. 3 Τήρηση κανόνων ακεραιότητας. 4 Ταυτόχρονη αλλαγή δύο ή περισσότερων πεδίων. 5 Η ενημέρωση γίνεται κατά πλειάδες (εγγραφές) και όχι μεμονωμένα. 46 / 88

Ενημέρωση εγγραφών με την εντολή UPDATE UPDATE πίνακας SET πεδίο=τιμή WHERE παράσταση Παρατηρήσεις για την εντολή UPDATE 1 Χρειάζεται έγκυρο όνομα πίνακα που ακολουθεί φράση UPDATE. 2 Χρειάζεται έγκυρο όνομα πεδίου που ακολουθεί φράση SET. 3 Τήρηση κανόνων ακεραιότητας. 4 Ταυτόχρονη αλλαγή δύο ή περισσότερων πεδίων. 5 Η ενημέρωση γίνεται κατά πλειάδες (εγγραφές) και όχι μεμονωμένα. 6 Η φράση WHERE είναι προαιρετική, αλλά χωρίς αυτή θα γίνει τροποποίηση όλων των εγγραφών. 47 / 88

Παράδειγμα ενημέρωσης Αύξηση μισθού κατά 100 του υπαλλήλου με κωδικό 153 48 / 88

Παράδειγμα ενημέρωσης Αύξηση μισθού κατά 100 του υπαλλήλου με κωδικό 153 1 UPDATE employees 2 SET salary = salary + 100 3 WHERE empid = 153; 49 / 88

Παράδειγμα ενημέρωσης Αύξηση μισθού κατά 100 του υπαλλήλου με κωδικό 153 1 UPDATE employees 2 SET salary = salary + 100 3 WHERE empid = 153; Πριν την ενημέρωση 1 SELECT empid, salary 2 FROM employees 3 WHERE empid = 153; 4 5 empid salary 6 --------------- 7 153 1321.92 50 / 88

Παράδειγμα ενημέρωσης Αύξηση μισθού κατά 100 του υπαλλήλου με κωδικό 153 1 UPDATE employees 2 SET salary = salary + 100 3 WHERE empid = 153; Πριν την ενημέρωση 1 SELECT empid, salary 2 FROM employees 3 WHERE empid = 153; 4 5 empid salary 6 --------------- 7 153 1321.92 Μετά την ενημέρωση 1 SELECT empid, salary 2 FROM employees 3 WHERE empid = 153; 4 5 empid salary 6 --------------- 7 153 1421.92 51 / 88

Τροποποίηση δεδομένων με υποερώτημα Να δοθεί αύξηση 7% στους υπαλλήλους που απασχολούνται σε περισσότερα από 2 έργα 52 / 88

Τροποποίηση δεδομένων με υποερώτημα Να δοθεί αύξηση 7% στους υπαλλήλους που απασχολούνται σε περισσότερα από 2 έργα 1 UPDATE employees 2 SET salary = salary*1.07 3 WHERE empid IN 53 / 88

Τροποποίηση δεδομένων με υποερώτημα Να δοθεί αύξηση 7% στους υπαλλήλους που απασχολούνται σε περισσότερα από 2 έργα 1 UPDATE employees 2 SET salary = salary*1.07 3 WHERE empid IN (SELECT empid 4 FROM workson 5 GROUP BY empid 6 HAVING COUNT(*) > 2); 54 / 88

Τροποποίηση δεδομένων με υποερώτημα Να δοθεί αύξηση 7% στους υπαλλήλους που απασχολούνται σε περισσότερα από 2 έργα 1 UPDATE employees 2 SET salary = salary*1.07 3 WHERE empid IN (SELECT empid 4 FROM workson 5 GROUP BY empid 6 HAVING COUNT(*) > 2); 1 Θα εκτελεστεί πρώτα το υποερώτημα και θα επιστρέψει μια λίστα τιμών empid. 2 Θα εκτελεστεί ενημέρωση των εγγραφών του πίνακα employees για όλες τι τιμές της λίστας empid που επιστρέφονται από το υποερώτημα. 55 / 88

Ενημέρωση σύνθετου κλειδιού Μετάθεση υπαλλήλου 419 από το έργο 43 στο έργο 5 56 / 88

Ενημέρωση σύνθετου κλειδιού Μετάθεση υπαλλήλου 419 από το έργο 43 στο έργο 5 1 UPDATE workson 2 SET proid = 5 3 WHERE proid = 43 AND empid = 419; 57 / 88

Ενημέρωση σύνθετου κλειδιού Αν ο υπάλληλος με κωδικό 419, απασχολείται σε 2 έργα, τότε ο δεύτερος τρόπος θα παράξει διπλότυπες τιμές στο πρωτεύον κλειδί του πίνακα workson και η ενημέρωση θα αποτύχει. 58 / 88 Μετάθεση υπαλλήλου 419 από το έργο 43 στο έργο 5 1 UPDATE workson 2 SET proid = 5 3 WHERE proid = 43 AND empid = 419; Λάθος ενημέρωση της βάσης 1 UPDATE workson 2 SET proid = 5 3 WHERE empid = 419;

Περιεχόμενα 1 Γενικά για την αποθήκευση δεδομένων και την ενημέρωση της βάσης δεδομένων 2 Διαγραφή δεδομένων με την εντολή DELETE 3 Τροποποίηση δεδομένων με την εντολή UPDATE 4 Εισαγωγή δεδομένων INSERT 5 Ανάλυση ενός προβλήματος 59 / 88

Η εντολή INSERT για την εισαγωγή δεδομένων Γενική μορφή της εντολής INSERT 1 INSERT INTO tablename(column1, column2,..., columnn) 2 VALUES (value1, value2,..., valuen); 60 / 88

Η εντολή INSERT για την εισαγωγή δεδομένων Γενική μορφή της εντολής INSERT 1 INSERT INTO tablename(column1, column2,..., columnn) 2 VALUES (value1, value2,..., valuen); Γενικές παρατηρήσεις για την εντολή INSERT 1 Χρειάζεται έγκυρο όνομα πίνακα/πεδίων μετά τον όρο INSERT INTO. 61 / 88

Η εντολή INSERT για την εισαγωγή δεδομένων Γενική μορφή της εντολής INSERT 1 INSERT INTO tablename(column1, column2,..., columnn) 2 VALUES (value1, value2,..., valuen); Γενικές παρατηρήσεις για την εντολή INSERT 1 Χρειάζεται έγκυρο όνομα πίνακα/πεδίων μετά τον όρο INSERT INTO. 2 Δίνουμε το όνομα του πίνακα και μέσα σε παρενθέσεις τη λίστα πεδίων. 62 / 88

Η εντολή INSERT για την εισαγωγή δεδομένων Γενική μορφή της εντολής INSERT 1 INSERT INTO tablename(column1, column2,..., columnn) 2 VALUES (value1, value2,..., valuen); Γενικές παρατηρήσεις για την εντολή INSERT 1 Χρειάζεται έγκυρο όνομα πίνακα/πεδίων μετά τον όρο INSERT INTO. 2 Δίνουμε το όνομα του πίνακα και μέσα σε παρενθέσεις τη λίστα πεδίων. 3 Με τον όρο VALUES δίνουμε έγκυρες τιμές στα πεδία. 63 / 88

Η εντολή INSERT για την εισαγωγή δεδομένων Γενική μορφή της εντολής INSERT 1 INSERT INTO tablename(column1, column2,..., columnn) 2 VALUES (value1, value2,..., valuen); Γενικές παρατηρήσεις για την εντολή INSERT 1 Χρειάζεται έγκυρο όνομα πίνακα/πεδίων μετά τον όρο INSERT INTO. 2 Δίνουμε το όνομα του πίνακα και μέσα σε παρενθέσεις τη λίστα πεδίων. 3 Με τον όρο VALUES δίνουμε έγκυρες τιμές στα πεδία. 4 Το πλήθος πεδίων πρέπει να ταυτίζεται με το πλήθος τιμών. 64 / 88

Η εντολή INSERT για την εισαγωγή δεδομένων Γενική μορφή της εντολής INSERT 1 INSERT INTO tablename(column1, column2,..., columnn) 2 VALUES (value1, value2,..., valuen); Γενικές παρατηρήσεις για την εντολή INSERT 1 Χρειάζεται έγκυρο όνομα πίνακα/πεδίων μετά τον όρο INSERT INTO. 2 Δίνουμε το όνομα του πίνακα και μέσα σε παρενθέσεις τη λίστα πεδίων. 3 Με τον όρο VALUES δίνουμε έγκυρες τιμές στα πεδία. 4 Το πλήθος πεδίων πρέπει να ταυτίζεται με το πλήθος τιμών. 5 Μπορούμε να παραλείψουμε από τη λίστα πεδίων όσα πεδία μπορούν να πάρουν τιμή NULL. 65 / 88

Η εντολή INSERT για την εισαγωγή δεδομένων Γενική μορφή της εντολής INSERT 1 INSERT INTO tablename(column1, column2,..., columnn) 2 VALUES (value1, value2,..., valuen); Γενικές παρατηρήσεις για την εντολή INSERT 1 Χρειάζεται έγκυρο όνομα πίνακα/πεδίων μετά τον όρο INSERT INTO. 2 Δίνουμε το όνομα του πίνακα και μέσα σε παρενθέσεις τη λίστα πεδίων. 3 Με τον όρο VALUES δίνουμε έγκυρες τιμές στα πεδία. 4 Το πλήθος πεδίων πρέπει να ταυτίζεται με το πλήθος τιμών. 5 Μπορούμε να παραλείψουμε από τη λίστα πεδίων όσα πεδία μπορούν να πάρουν τιμή NULL. 6 Αν μια τιμή αντιστοιχεί σε πεδίο κειμένου ή ημερομηνίας χρειάζονται εισαγωγικά πχ Δημήτριος ή 2005-05-10. 66 / 88

Εισαγωγή δεδομένων με INSERT Τοποθέτηση του υπαλλήλου με κωδικό 811 στο έργο με κωδικό 5 1 INSERT INTO workson (empid, proid) 2 VALUES (811, 5); Τοποθέτηση του υπαλλήλου με κωδικό 811 στο έργο με κωδικό 5 1 INSERT INTO workson (proid, empid) 2 VALUES (5, 811); Τοποθέτηση του υπαλλήλου με κωδικό 811 στο έργο με κωδικό 5 1 INSERT INTO workson 2 VALUES (811, 5); 67 / 88

Τι ισχύει για την εντολή INSERT 1 Το πλήθος πεδίων στη λίστα πεδίων πρέπει να είναι ακριβώς το ίδιο με το πλήθος της λίστας τιμών. 2 Οι τιμές της λίστας τιμών αντιστοιχίζονται ένα-προς-ένα στα πεδία της λίστας πεδίων. 3 Η σειρά εμφάνισης στη λίστα πεδίων δεν παίζει ρόλο. 4 Στη λίστα πεδίων πρέπει να συμπεριλαμβάνονται όλα τα πεδία που, κατά τη δημιουργία του πίνακα δηλώθηκαν ως NOT NULL. 5 Ολες οι τιμές της λίστας τιμών, θα πρέπει να είναι σύμφωνες με το πεδίου ορισμού όλων των των πεδίων του πίνακα. 68 / 88

Τι ισχύει για την εντολή INSERT - συνέχεια 1 Αν πρέπει να δηλωθεί η τιμή NULL κατά την εισαγωγή δεδομένων πληκτρολογείται ως NULL και όχι με εισαγωγικά NULL. 2 Αν ένα πεδίο παραληφθεί από τη λίστα πεδίων, τότε σε αυτό το πεδίο εισάγεται η προκαθορισμένη (DEFAULT) από τη δημιουργία του πίνακα τιμή. 3 Σε συσχετιζόμενους πίνακες, η εισαγωγή δεδομένων στον πατρικό πίνακα δεν έχει καμία επίδραση στον θυγατρικό πίνακα. 4 Σε συσχετιζόμενους πίνακες, η εισαγωγή δεδομένων στο θυγατρικό πίνακα, επηρεάζεται από την ακεραιότητα αναφορών. 5 Αν για οποιοδήποτε λόγο, αποτύχει η εκτέλεση μιας εντολής 69 / 88

Αποτυχία INSERT 70 / 88

Αποτυχία INSERT Λείπει το υποχρεωτικό πεδίο lastname 1 INSERT INTO employees (empid, depid, hiredate) 2 VALUES (199, 5, CURRENT_DATE()); 71 / 88

Αποτυχία INSERT Λείπει το υποχρεωτικό πεδίο lastname 1 INSERT INTO employees (empid, depid, hiredate) 2 VALUES (199, 5, CURRENT_DATE()); Λείπει η τιμή από το πεδίο lastname 1 INSERT INTO employees (empid, depid, lastname) 2 VALUES (199, 5) 72 / 88

Αποτυχία INSERT Λείπει το υποχρεωτικό πεδίο lastname 1 INSERT INTO employees (empid, depid, hiredate) 2 VALUES (199, 5, CURRENT_DATE()); Λείπει η τιμή από το πεδίο lastname 1 INSERT INTO employees (empid, depid, lastname) 2 VALUES (199, 5) Η τιμή του πρωτεύοντος κλειδιού υπάρχει ήδη 1 INSERT INTO employees (empid, depid, lastname) 2 VALUES (811, 4, Κάτου ) 73 / 88

Εναλλακτικός τρόπος για την εντολή INSERT Εισαγωγή νέας εγγραφής στον πίνακα employees 1 INSERT INTO employees 2 SET empid = 199, 3 lastname = Κάτου, 4 firstname = Αννα, 5 depid = 5, 6 salary = 1500, 7 hiredate = 2010-03-15 ; 74 / 88

Εναλλακτικός τρόπος για την εντολή INSERT Εισαγωγή νέας εγγραφής στον πίνακα employees 1 INSERT INTO employees 2 SET empid = 199, 3 lastname = Κάτου, 4 firstname = Αννα, 5 depid = 5, 6 salary = 1500, 7 hiredate = 2010-03-15 ; 1 Ο τρόπος αυτός μοιάζει με την εντολή UPDATE. 75 / 88

Εναλλακτικός τρόπος για την εντολή INSERT Εισαγωγή νέας εγγραφής στον πίνακα employees 1 INSERT INTO employees 2 SET empid = 199, 3 lastname = Κάτου, 4 firstname = Αννα, 5 depid = 5, 6 salary = 1500, 7 hiredate = 2010-03-15 ; 1 Ο τρόπος αυτός μοιάζει με την εντολή UPDATE. 2 Χρησιμοποιούμε τη γραφή SET column = value. 76 / 88

Εναλλακτικός τρόπος για την εντολή INSERT Εισαγωγή νέας εγγραφής στον πίνακα employees 1 INSERT INTO employees 2 SET empid = 199, 3 lastname = Κάτου, 4 firstname = Αννα, 5 depid = 5, 6 salary = 1500, 7 hiredate = 2010-03-15 ; 1 Ο τρόπος αυτός μοιάζει με την εντολή UPDATE. 2 Χρησιμοποιούμε τη γραφή SET column = value. 3 Χωρίζουμε τη λίστα πεδίων με κόμματα. 77 / 88

Εναλλακτικός τρόπος για την εντολή INSERT Εισαγωγή νέας εγγραφής στον πίνακα employees 1 INSERT INTO employees 2 SET empid = 199, 3 lastname = Κάτου, 4 firstname = Αννα, 5 depid = 5, 6 salary = 1500, 7 hiredate = 2010-03-15 ; 1 Ο τρόπος αυτός μοιάζει με την εντολή UPDATE. 2 Χρησιμοποιούμε τη γραφή SET column = value. 3 Χωρίζουμε τη λίστα πεδίων με κόμματα. 4 Η σειρά εμφάνισης των πεδίων δεν έχει σημασία. 78 / 88

Εναλλακτικός τρόπος για την εντολή INSERT Εισαγωγή νέας εγγραφής στον πίνακα employees 1 INSERT INTO employees 2 SET empid = 199, 3 lastname = Κάτου, 4 firstname = Αννα, 5 depid = 5, 6 salary = 1500, 7 hiredate = 2010-03-15 ; 1 Ο τρόπος αυτός μοιάζει με την εντολή UPDATE. 2 Χρησιμοποιούμε τη γραφή SET column = value. 3 Χωρίζουμε τη λίστα πεδίων με κόμματα. 4 Η σειρά εμφάνισης των πεδίων δεν έχει σημασία. 5 Ισχύουν όλοι οι περιορισμοί ακεραιότητας δεδομένων 79 / 88

Εισαγωγή δεδομένων με υποερώτημα Να τοποθετηθεί στο έργο με 5 ο υπάλληλος του τμήματος 4 που παίρνει το μεγαλύτερο μισθό 1 INSERT INTO workson(proid, empid) 2 SELECT 5, empid 3 FROM employees 4 WHERE salary = ( SELECT MAX(salary) 5 FROM employees 6 WHERE depid = 4 ); 1 Δε χρειάζεται η φράση VALUES σε υποερωτήματα μετά το INSERT. 2 Προσοχή στην παράσταση SELECT 5, empid. 3 Τι θα συμβεί αν όλοι οι υπάλληλοι του τμήματος 4 έχουν τον ίδιο μισθό; 80 / 88

Περιεχόμενα 1 Γενικά για την αποθήκευση δεδομένων και την ενημέρωση της βάσης δεδομένων 2 Διαγραφή δεδομένων με την εντολή DELETE 3 Τροποποίηση δεδομένων με την εντολή UPDATE 4 Εισαγωγή δεδομένων INSERT 5 Ανάλυση ενός προβλήματος 81 / 88

Διπλή εισαγωγή Εισαγωγή επιπλέον εγγραφής για τον ίδιο υπάλληλο 1 INSERT INTO employees(empid, lastname, depid) 2 VALUES (781, Μικράκη, 4); 82 / 88

Διπλή εισαγωγή Εισαγωγή επιπλέον εγγραφής για τον ίδιο υπάλληλο 1 INSERT INTO employees(empid, lastname, depid) 2 VALUES (781, Μικράκη, 4); Ωστόσο, η κ. Μικράκη υπάρχει ήδη στη βάση δεδομένων 1 SELECT empid, lastname, depid 2 FROM employees 3 WHERE lastname = Μικράκη ; 4 5 empid lastname depid 6 ---------------------- 7 780 Μικράκη 4 8 781 Μικράκη 4 83 / 88

Λανθασμένη διόρθωση του προβλήματος Διαγραφή της υπαλλήλου με επώνυμου ΜΙΚΡΑΚΗ 1 DELETE FROM employees 2 WHERE lastname = Μικράκη ; 3 4 Query OK, 2 rows affected (0.00 sec) 84 / 88

Λανθασμένη διόρθωση του προβλήματος Διαγραφή της υπαλλήλου με επώνυμου ΜΙΚΡΑΚΗ 1 DELETE FROM employees 2 WHERE lastname = Μικράκη ; 3 4 Query OK, 2 rows affected (0.00 sec) Τώρα η κ. ΜΙΚΡΑΚΗ δεν υπάρχει καθόλου στη βάση δεδομένων 1 SELECT empid, lastname, depid 2 FROM employees 3 WHERE lastname = Μικράκη ; 4 5 Empty set (0.01 sec) Διαγράφηκαν και οι δύο εγγραφές!! 85 / 88

Πιο προσεκτική διόρθωση του προβλήματος Διαγραφή της υπαλλήλου με κωδικό υπαλλήλου 781 1 DELETE FROM employees 2 WHERE empid=781; 3 4 Query OK, 1 row affected (0.00 sec) 86 / 88

Πιο προσεκτική διόρθωση του προβλήματος Διαγραφή της υπαλλήλου με κωδικό υπαλλήλου 781 1 DELETE FROM employees 2 WHERE empid=781; 3 4 Query OK, 1 row affected (0.00 sec) Τώρα η κ. Μικράκη υπάρχει μία φορά στη βάση δεδομένων 1 SELECT empid, lastname, depid 2 FROM employees 3 WHERE lastname = Μικράκη ; 4 5 empid lastname depid 6 ---------------------- 7 780 Μικράκη 4 87 / 88

Σχόλια και ερωτήσεις Σας ευχαριστώ για την προσοχή σας Είμαι στη διάθεσή σας για σχόλια, απορίες και ερωτήσεις 88 / 88

Τέλος Ενότητας

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Σημειώματα

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. Έχουν προηγηθεί οι κάτωθι εκδόσεις: Έκδοση 1.0 διαθέσιμη εδώ. http://ecourse.uoi.gr/course/view.php?id=1065.

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Ιωαννίνων, Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης. «Ηλεκτρονικοί Υπολογιστές II. Ενημέρωση βάσης δεδομένων με τις εντολές INSERT, DELETE, UPDATE». Έκδοση: 1.0. Ιωάννινα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://ecourse.uoi.gr/course/view.php?id=1065.

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού - Παρόμοια Διανομή, Διεθνής Έκδοση 4.0 [1] ή μεταγενέστερη. [1] https://creativecommons.org/licenses/by-sa/4.0/.