DELETE, UPDATE, INSERT.

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

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


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

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




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

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

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

1 / 150

1 / 105

DISTINCT, LIKE, NULL, AND, OR, BETWEEN

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

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

1 / 87

1 / 97

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

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

1 / 106


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

Πρόλογος Μέρος Ι Μια βόλτα στις βάσεις δεδομένων Μια βόλτα στις βάσεις δεδομένων...25

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) ΤΕΙ ΔυτικήςΜακεδονίας


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

Η SQL ως γλώσσα τροποποίησης Δεδομένων

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


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

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

10 η Διάλεξη Python Βάσεις δεδομένων στη python

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

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

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

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

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

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

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

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

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

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

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

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

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

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

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

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

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

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

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

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

ΘΕΜΑΤΑ. Θέμα 1 ο Σύμφωνα με τους παραπάνω πίνακες και τη θέση που έχουν τα ξένα κλειδιά βρείτε τους

ΕΝΑΥΣΜΑΤΑ ΣΤΗΝ POSTGRES

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


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


1 / 106

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

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

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

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

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

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

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

MySQL + Γλώσσα Προγραμματισμού. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

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

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

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

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

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

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

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

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

Transcript:

Ενημέρωση βάσης δεδομένων με 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