Βάςεισ Δεδομζνων Λ Ενότθτα 8: SQL Γλώςςα χειριςμοφ δεδομζνων Δρ. Σςιμπίρθσ Αλκιβιάδθσ
Άδειεσ Χριςθσ Σο παρόν εκπαιδευτικό υλικό υπόκειται ςε άδειεσ χριςθσ Creative Commons. Για εκπαιδευτικό υλικό, όπωσ εικόνεσ, που υπόκειται ςε άλλου τφπου άδειασ χριςθσ, θ άδεια χριςθσ αναφζρεται ρθτώσ. Βάςεισ Δεδομζνων Λ-
Χρθματοδότθςθ Σο παρόν εκπαιδευτικό υλικό ζχει αναπτυχκεί ςτα πλαίςια του εκπαιδευτικοφ ζργου του διδάςκοντα. Σο ζργο «Ανοικτά Ακαδθμαϊκά Μακιματα ςτο ΣΕΛ Κεντρικισ Μακεδονίασ» ζχει χρθματοδοτιςει μόνο τθ αναδιαμόρφωςθ του εκπαιδευτικοφ υλικοφ. Σο ζργο υλοποιείται ςτο πλαίςιο του Επιχειρθςιακοφ Προγράμματοσ «Εκπαίδευςθ και Δια Βίου Μάκθςθ» και ςυγχρθματοδοτείται από τθν Ευρωπαϊκι Ζνωςθ (Ευρωπαϊκό Κοινωνικό Σαμείο) και από εκνικοφσ πόρουσ. Βάςεισ Δεδομζνων Λ-
Ενότθτα 8 SQL-Γλώςςα χειριςμοφ δεδομζνων Δρ. Σςιμπίρθσ Αλκιβιάδθσ
Περιεχόμενα ενότθτασ Προβολι δεδομζνων πίνακα Πράξεισ με Σελεςτζσ (Αρικμθτικοί, υγκριτικοί, Λογικοί) Πράξεισ υνόλων 5
Σκοποί ενότθτασ τθν ενότθτα αυτι παρουςιάηονται οι εντολζσ τθσ Γλώςςασ Χειριςμοφ δεδομζνων για Προβολι δεδομζνων πίνακα με χριςθ τελεςτών (Αρικμθτικοί, υγκριτικοί, Λογικοί). Επίςθσ παρουςιάηονται και εντολζσ για Πράξεισ υνόλων. 6
Η γλώςςα SQL Θ standard γλώςςα για ςχεςιακζσ βάςεισ δεδομζνων. αρχικά ονομάηονταν Sequel ςτθν IBM ωσ μζροσ του System R ιμερα ονομάηεται SQL από τα αρχικά των λζξεων ( Stuctured Query Language ) SQL--89, SQL--92, SQL-99 7
Εντολζσ SQL χειριςμοφ δεδομζνων Insert Update Delete Select ειςαγωγι εγγραφών ενθμζρωςθ τιμών πεδίων Διαγραφι εγγραφών πίνακα (drop?) 8
Ειςαγωγι δεδομζνων Insert into Πίνακασ Values (τιμθ1, τιμι2 ) Ειςαγωγι των τιμών ςτα αντίςτοιχα πεδία του πίνακα. Insert into Πίνακασ(field2, filed1) Values (τιμι2, τιμι1) Ειςαγωγι των τιμών ςτα ςυγκεκριμζνα πεδία του πίνακα με άλλθ ςειρά. Insert into Πίνακασ1 Select F1,F2.. From Πινακα2 Ειςαγωγι τιμών ςτα αντίςτοιχα πεδία του πίνακα1 που προζρχονται από τον πίνακα2. Insert into πουδαςτισ Values (3, 22, ΕΡΡΕ, 1/1/1980 ) Ειςαγωγι των τιμών ςτα αντίςτοιχα πεδία του πίνακα. κείμενο θμερομθνία ι #θμερομθνία# 9
Ενθμζρωςθ δεδομζνων Update ΠΛΝΑΚΑ Set ΠΕΔΛΟ= ΣΛΜΘ Κα αλλάξει όλεσ τισ τιμζσ του ςυγκεκριμζνου πεδίου ςε όλο τον πίνακα Σπουδαςτισ ΑEM Επίκετο Πόλθ Θμ _ γζννθςθσ 1 AA ΕΡΡΕ 1/1/1980 2 BB ΑΚΘΝΑ 30/10/1990 Χριςθ περιοριςμών με τθν εντολι WHERE 3 CC ΑΚΘΝΑ 6/1/1993 Update πουδαςτισ Set Πόλθ = Ακινα Κα αλλάξει για όλουσ τουσ ςπουδαςτζσ τθν πόλθ. Update πουδαςτισ Set Πόλθ = Βόλοσ Where AEM=3 Κα αλλάξει για τον ςπουδαςτι με ΑΕΜ=3 τθν πόλθ. 10
Συνκικεσ τθν εντολισ Where Συγκριτικοί τελεςτζσ: =, >, <, >=, <=, <>, Between, Not Between, In, Not in, Like, NOT Like (ανάμεςα ςε αρικμθτικζσ εκφράςεισ, ςυμβολοςειρζσ ( strings ) και ειδικοφσ τφπουσ). Λογικοί τελεςτζσ: AND, OR, NOT 11
Ενθμζρωςθ δεδομζνων Παράδειγμα: Αφξθςθ όλων των μιςκών των εργαηομζνων που είναι μεγαλφτεροι ι ιςοι των 1000 κατά 5% update ΕΡΓΑΗΟΜΕΝΟΛ set Μιςκόσ= Μιςκόσ* 1.05 where Μιςκόσ >= 1000 update ΕΡΓΑΗΟΜΕΝΟΛ set Μιςκόσ= Μιςκόσ* 1.10 where Μιςκόσ <1000 12
Ενθμζρωςθ δεδομζνων Παράδειγμα: Αφξηςη ςτουσ υπαλλήλουσ που ζχουν μιςθό < 1.000 η εταιρεία δίνει 5% και ςτουσ υπαλλήλουσ που ζχουν μιςθό > 1.000 δίνει 9%: update ΕΡΓΑΗΟΜΕΝΟΛ set Μιςκόσ = Μιςκόσ * 1.05 where Μιςκόσ < 1.000 update ΕΡΓΑΗΟΜΕΝΟΛ set Μιςκόσ = Μιςκόσ * 1.09 where Μιςκόσ >= 1.000 Ποιο update πρζπει να τρζξουμε πρώτα; 13
Ενθμζρωςθ δεδομζνων Παράδειγμα: Αφξθςθ όλων των μιςκών που είναι μεγαλφτεροι από τον μζςο όρο κατά 5% update ΕΡΓΑΗΟΜΕΝΟΛ set Μιςκόσ = Μιςκόσ * 1.05 where Μιςκόσ > select avg(μιςκόσ ) from ΕΡΓΑΗΟΜΕΝΟΛ 14
Βαςικι ςφνταξθ γλώςςασ χειριςμοφ δεδομζνων Βαςικι φνταξθ Γλώςςασ Χειριςμοφ Δεδομζνων (ΓΧΔ): ονόματα γνωριςμάτων select Α 1, Α 2,.., Α n from R 1, R 2, R m where P ονόματα ςχζςεων ςυνκικθ Λςοδφναμο του: Π A1, A 2,.., A n (ς P (R 1 x R 2 x R m )) 15
Βαςικι ςφνταξθ γλώςςασ χειριςμοφ δεδομζνων select Α1, Α2,.., Αn from R 1, R 2, R m where P select αντιςτοιχεί ςτθν πράξθ τθσ προβολισ τθσ ςχεςιακισ άλγεβρασ. Ποια γνωρίςματα κζλουμε να υπάρχουν ςτο αποτζλεςμα τθσ ερώτθςθσ. π A 1, A 2,.., A n (σ P (R 1 x R 2 x R m )) 16
Βαςικι ςφνταξθ γλώςςασ χειριςμοφ δεδομζνων select Α 1, Α 2,.., Α n from R1, R2, Rm where P from αντιςτοιχεί ςτθν πράξθ του καρτεςιανοφ γινομζνου τθσ ςχεςιακισ άλγεβρασ. Ποιεσ ςχζςεισ κα χρθςιμοποιθκοφν για τον υπολογιςμό του αποτελζςματοσ. π A 1, A 2,.., A n (σ P (R 1 x R 2 x R m )) 17
Βαςικι ςφνταξθ γλώςςασ χειριςμοφ δεδομζνων select Α 1, Α 2,.., Α n from R1, R2, Rm where P where αντιςτοιχεί ςτθ ςυνκικθ τθσ πράξθσ τθσ επιλογισ ςτθ ςχεςιακι άλγεβρα. Σο κατθγόρθμα P ζχει γνωρίςματα των ςχζςεων που εμφανίηονται ςτο from. π A 1, A 2,.., A n (σ P (R 1 x R 2 x R m )) 18
Βαςικι ςφνταξθ γλώςςασ χειριςμοφ δεδομζνων Συμβουλζσ Είτε γράφετε με μικρά είτε με κεφαλαία ςτθν είναι το ίδιο. τθν SQL δεν είναι ζτοιμοι οι πίνακεσ εςείσ τουσ δθμιουργείτε με εντολζσ. Όταν δεν υπάρχει το where, το P κεωρείται ότι ιςχφει. Προςοχι δεν γίνεται απαλοιφι των διπλών εμφανίςεων. Για απαλοιφι διπλών εμφανίςεων: Select distinct Όνομα _ Πεδίου From Πίνακασ 19
Τιμι Null H λζξθ κλειδί is null (is not null) ςε μια ςυνκικθ υπάρχει για να διαπιςτωκεί αν μια τιμι είναι null (κενι). Εάν υπάρχει τιμι τότε είναι not null. 20
Πράξεισ με ςυμβολοςειρζσ Θ πιο ςυνθκιςμζνθ πράξθ είναι το ταίριαςμα προτφπων: Επί τισ εκατό % Ή Αςτεράκι * ταιριάηει οποιαδιποτε ςυμβολοςειρά (String) Κάτω παφλα _ Ι Ερωτθματικό αγγλικό? ταιριάηει οποιοδιποτε χαρακτιρα Δίεςθ # για θμερομθνίεσ φγκριςθ χρθςιμοποιώντασ το like, not like ΣΧΟΛΙΟ! Γίνεται διάκριςθ ανάμεςα ςε κεφαλαία και μικρά. 21
Παραδείγματα πράξεων με ςυμβολοςειρζσ Εμφανίςτε όλουσ τουσ ςπουδαςτζσ που ςτο επίκετό τουσ εμπεριζχετε το γράμμα. Select * From πουδαςτζσ Where ΕΠΛΚΕΣΟ Like %% Εμφανίςτε όλουσ τουσ ςπουδαςτζσ που ςτο επίκετό τουσ αρχίηει με το γράμμα. Select * From πουδαςτζσ Where ΕΠΛΚΕΣΟ Like % Όταν τελειώνει: % Εμφανίςτε όλουσ τουσ ςπουδαςτζσ που ςτο επίκετό τουσ αρχίηει και τελειώνει με το γράμμα. Select * From πουδαςτζσ Where ΕΠΛΚΕΣΟ Like % 22
Διάταξθ πεδίων SELECT ORDER BY F1, F2 Θ διάταξθ των πεδίων ςε: αφξουςα ςειρά ASC φκίνουςα ςειρά DESC Παράδειγμα: Σαξινομιςτε τουσ ςπουδαςτζσ κατά αφξουςα ςειρά βάςθ επικζτου. Select * From πουδαςτζσ Order By Επίκετο ASC 23
Τελεςτισ IN SELECT * FROM ΦΟΛΣΘΣΕ WHERE ΠΟΛΘ IN ('ΕΡΡΕ', 'ΚΕΑΛΟΝΛΚΘ') 24
Πράξεισ ςυνόλων Πράξεισ: union intersection except εφαρμόηονται ςε ςυμβατζσ ςχζςεισ (δθλ. Ίςο πλικοσ πεδίων του ίδιου τφπου δεδομζνων). 25