4.2.3+Διαγραφή+εγγραφών+πίνακα+Σχεσιακής+ΒΔ

4.2.3 Διαγραφή Εγγραφών Πίνακα Σχεσιακής ΒΔ
**Στόχοι / Προσδοκώμενα Αποτελέσματα** Ο μαθητής/τρια πρέπει να είναι ικανός/ή:
 * να γράφει και να εκτελεί εντολές DELETE για την διαγραφή εγγραφών σε Σχεσιακό Σύστημα Διαχείρισης Βάσεων Δεδομένων

Η διαγραφή εγγραφών από πίνακα Σχεσιακής Βάσης Δεδομένων πραγματοποιείται με την εντολή **DELETE** της SQL. Η εντολή DELETE συντάσσεται στην απλούστερη μορφή της ως εξής: code format="sql" DELETE FROM <πίνακας> code

Αν για παράδειγμα θέλουμε να διαγράψουμε όλα τα μαθήματα που είναι καταχωρημένα στον πίνακα Μάθημα, γράφουμε και εκτελούμε την εντολή: code format="sql" DELETE FROM Μάθημα code

Με τον παραπάνω τρόπο διαγράφονται όλες οι γραμμές του πίνακα Μάθημα, οπότε πρέπει να είμαστε προσεκτικοί στη χρήση της εντολής DELETE.

Συχνά χρειάζεται να διαγράψουμε μερικές μόνο εγγραφές οι οποίες ικανοποιούν κάποια συνθήκη και πρέπει να αναζητηθούν από το σύστημα μέσα στον πίνακα ώστε να διαγραφούν. Σε αυτήν την περίπτωση θα χρησιμοποιήσουμε την εντολή DELETE μαζί με συνθήκη, δηλαδή μαζί με πρόταση WHERE, ως εξής:

code format="sql" DELETE FROM <πίνακας> WHERE <συνθήκη αναζήτησης> code

Αν στο παράδειγμα του Μαθητολογίου επιθυμούμε να διαγράψουμε τους γραπτούς βαθμούς του σχολικού έτους 2014-2015, τότε μπορούμε να γράψουμε την εξής εντολή σε SQL: code format="sql" DELETE FROM ΓραπτόςΒαθμόςΜαθητή WHERE Σχολ_έτος = '2014-2015' code

Η χρήση της εντολής DELETE απαιτεί προσοχή στην περίπτωση όπου έχουμε περιορισμούς αναφοράς, δηλαδή ξένα κλειδιά. Τι θα συμβεί για παράδειγμα αν προσπαθήσουμε να διαγράψουμε έναν μαθητή για τον οποίον έχουν ήδη καταχωρηθεί γραπτοί βαθμοί; Τα στοιχεία του μαθητή είναι αποθηκευμένα στον πίνακα Μαθητής, ενώ οι βαθμοί του είναι καταχωρημένοι στον πίνακα ΓραπτόςΒαθμόςΜαθητή. Οι βαθμοί έχουν καταχωρηθεί με τον Αριθμό Μητρώου (ΑΜ) του μαθητή, ο οποίος αναφέρεται στον πίνακα Μαθητής. Τι θα συμβεί λοιπόν αν προσπαθήσουμε να διαγράψουμε τον μαθητή από τον πίνακα Μαθητής; Θα πρέπει είτε να διαγραφούν και όλοι οι βαθμοί του στον πίνακα ΓραπτόςΒαθμόςΜαθητή εφόσον θα αφορούν πλέον έναν μαθητή που δεν υπάρχει, είτε δε θα πρέπει να επιτραπεί η διαγραφή του μαθητή από το σύστημα ώστε να διατηρηθεί η αναφορική ακεραιότητα των δεδομένων.

**Ερωτήσεις / Δραστηριότητες** 1)	Διαγράψτε όλες τις εγγραφές του πίνακα Μάθημα εκτελώντας την κατάλληλη εντολή σε SQL. 2)	Ποια συνθήκη αναζήτησης θα καθορίζατε για να διαγράψετε την εγγραφή του μαθητή Πηλείδη Αχιλλέα από τον πίνακα Μαθητής; 3)	Διαγράψτε την εγγραφή του μαθητή Πηλείδη Αχιλλέα από τον πίνακα Μαθητής, εκτελώντας την κατάλληλη SQL εντολή. 4)	Γράψτε και εκτελέστε τις εντολές εισαγωγής εγγραφών για τους μαθητές τα δεδομένα των οποίων συλλέξατε και εισάγατε στον πίνακα ΕγγραφήΜαθητή στα πλαίσια της Άσκησης 4 της ενότητας 4.2.1. Κατόπιν διαγράψτε μία από τις εγγραφές των μαθητών εκτελώντας την κατάλληλη εντολή SQL.