4.2.1+Εισαγωγή+δεδομένων+σε+πίνακα+Σχεσιακής+ΒΔ+με+SQL

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

Η εισαγωγή δεδομένων σε πίνακα σχεσιακής Βάσης Δεδομένων πραγματοποιείται με την εντολή INSERT INTO της SQL. Η σύνταξη της εντολής INSERT INTO στη γενική της μορφή είναι:

code format="sql" INSERT INTO <όνομα πίνακα> VALUES (τιμή_1, τιμή_2, τιμή_3, ...) code Με την παραπάνω εντολή εισάγεται μια νέα γραμμή στον πίνακα που καθορίζεται στην εντολή. Οι τιμές που εισάγονται στα πεδία του πίνακα καθορίζονται μέσα στην παρένθεση χωριζόμενες με κόμμα. Οι τιμές αυτές αντιστοιχίζονται σε όλα τα πεδία του πίνακα και με τη σειρά που αυτά έχουν καθοριστεί κατά την δημιουργία του πίνακα.


 * Εισαγωγή εγγραφών καθορίζοντας τιμές για όλα τα πεδία του πίνακα**

Για την εισαγωγή των στοιχείων του μαθητή Πηλείδη Αχιλλέα στον πίνακα Μαθητής, γράφουμε σε SQL την παρακάτω εντολή:

code format="sql" INSERT INTO Μαθητής VALUES (863, 'Πηλείδης', 'Αχιλλέας', 'Πηλέας', '1999-06-24', 'Α', 'Αθήνα') code Στο παράδειγμα αυτό θυμίζουμε ότι στην εντολή CREATE TABLE του πίνακα Μαθητής καθορίστηκαν τα πεδία με τη σειρά: ΑΜ, Επώνυμο, Όνομα, Πατρώνυμο, Ημερομηνία_γέννησης, Φύλο, Πόλη. Παρατηρούμε ότι η τιμή της ημερομηνίας εισάγεται με τη μορφή 'έτος-μήνας-ημέρα'.

Μετά την εκτέλεση της παραπάνω εντολής INSERT INTO, ο πίνακας Μαθητής θα έχει την εξής μορφή:

Εικόνα 4-6. Ο σχεσιακός πίνακας Μαθητής μετά την εισαγωγή δεδομένων με την εντολή INSERT INTO
 * ~ ΑΜ ||~ Επώνυμο ||~ Όνομα ||~ Πατρώνυμο ||~ Ημερομηνία_Γέννησης ||~ Φύλο ||~ Πόλη ||
 * 863 ||Πηλείδης ||Αχιλλέας ||Πηλέας ||1999-06-24 ||Α ||Αθήνα ||


 * Εισαγωγή εγγραφών καθορίζοντας τιμές για μερικά από τα πεδία του πίνακα**

Η εισαγωγή τιμών για μερικά μόνο από τα πεδία ενός πίνακα, ή για την αλλαγή της σειρά των πεδίων κατά την εισαγωγή τιμών, μπορεί να χρησιμοποιηθεί η εντολή INSERT INTO με τον εξής τρόπο:

code format="sql" INSERT INTO <όνομα πίνακα> (Πεδίο_1, Πεδίο_2, Πεδίο_3, …) VALUES (τιμή_1, τιμή_2, τιμή_3, ...) code Η τιμή_1 θα εισαχθεί στο Πεδίο_1 της λίστας, η τιμή_2 στο πεδίο_2 κ.ο.κ.

Στο παράδειγμά μας με τον πίνακα «Μαθητής», αν δεν γνωρίζουμε ακόμα την ημερομηνία γέννησης ενός μαθητή αλλά θέλουμε να εισάγουμε τα υπόλοιπα πεδία του, μπορούμε να χρησιμοποιήσουμε την εντολή INSERT INTO ως εξής για να εισάγουμε τα στοιχεία της μαθήτριας Ομήρου Οδύσσειας:

code format="sql" INSERT INTO Μαθητής (ΑΜ, Επώνυμο, Όνομα, Πατρώνυμο, Φύλο) VALUES (864, 'Ομήρου', 'Οδύσσεια', 'Όμηρος', 'Θ') code

Μετά την εκτέλεση της παραπάνω εντολής INSERT INTO <πίνακας> (<πεδία>) VALUES, ο πίνακας Μαθητής θα έχει την εξής μορφή:

Εικόνα 4-7. Ο σχεσιακός πίνακας Μαθητής μετά την εισαγωγή δεδομένων με την εντολή INSERT INTO <πίνακας> (<πεδία>) VALUES
 * ~ ΑΜ ||~ Επώνυμο ||~ Όνομα ||~ Πατρώνυμο ||~ Ημερομηνία_Γέννησης ||~ Φύλο ||~ Πόλη ||
 * 863 ||Πηλείδης ||Αχιλλέας ||Πηλέας ||1999-06-24 ||Α ||Αθήνα||
 * 864 ||Ομήρου ||Οδύσσεια ||Όμηρος ||NULL ||Θ ||Αθήνα||

Παρατηρούμε ότι στο πεδίο Ημερομηνία_Γέννησης για τη μαθήτρια Ομήρου Οδύσσεια, η τιμή είναι NULL εφόσον δεν έχει εισαχθεί ακόμα. Αργότερα μπορούμε να ενημερώσουμε το πεδίο Ημερομηνία_Γέννησης για την συγκεκριμένη μαθήτρια με την εντολή UPDATE που παρουσιάζεται στην επόμενη ενότητα. Επίσης παρατηρούμε ότι στο πεδίο Πόλη, παρόλο που δεν εισάγαμε τιμή για την μαθήτρια Ομήρου Οδύσσεια, η τιμή έχει καθοριστεί σε 'Αθήνα', εφόσον κατά τη δημιουργία του πίνακα είχαμε καθορίσει ότι θα εισάγεται η συγκεκριμένη προκαθορισμένη τιμή (DEFAULT).

**Ερωτήσεις / Δραστηριότητες** 1)	Δημιουργήστε και εκτελέστε τις κατάλληλες SQL εντολές για να εισάγετε τις εξής εγγραφές στον πίνακα Μαθητής: 865, 'Γεωργίου', 'Γεώργιος', 'Δημήτριος', NULL, 'Α', 'Θεσσαλονίκη' 866, 'Μηνά', 'Μαρία', 'Μίνωας', '1998-07-05', 'Θ', 'Ηράκλειο' 867, 'Χανιωτάκη', 'Αθηνά', 'Μανούσος', '1998-07-19', 'Θ' 868, 'Ρεθυμνιωτάκης', 'Ορέστης', 'Ιούλιος', '1998-07-31', 'Α' 2)   Γράψτε και δοκιμάσετε να εκτελέσετε εντολή SQL για την εισαγωγή μαθητή με Αριθμό Μητρώου κάποιον από τους αριθμούς που έχετε ήδη εισάγει. Τι παρατηρείτε; Είναι εφικτή η εισαγωγή; Αιτιολογήστε την απάντησή σας. 3)   Συλλέξτε δεδομένα μαθητών της τάξης σας ζητώντας τη βοήθεια του/της καθηγητή/τριάς σας για την αναζήτηση των Αριθμών Μητρώου μαθητολογίου που διατηρεί το σχολείο. 4)    Δημιουργήστε και εκτελέστε τις εντολές SQL για την εισαγωγή των δεδομένων που συλλέξατε στην προηγούμενη άσκηση. 5)   Ανατρέξτε στην Άσκηση 1 της προηγούμενης ενότητας, με τα παρακάτω δεδομένα που αφορούν σε βιβλία: Γράψτε και εκτελέστε τις εντολές της SQL για την εισαγωγή των παραπάνω δεδομένων στον πίνακα που δημιουργήσατε στα πλαίσια της προηγούμενης ενότητας. //Σημείωση: Εισάγετε δεδομένα και για το κύριο κλειδί που εντοπίσατε και δημιουργήσατε στην προηγούμενη ενότητα.//
 * Ιλιάδα	||Όμηρος	||2003	||18,37||
 * Ερωτόκριτος	||Κορνάρος, Βιτσέντζος	||1985	||12,75||