Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεOdysseus Glavan Τροποποιήθηκε πριν 10 χρόνια
1
9 Η Γλώσσα SQL Ορισμός Δεδομένων (data definition)
Χειρισμός Δεδομένων (data manipulation)
2
Γλώσσα Ορισμού Δεδομένων
Δημιουργία νέου πίνακα: CREATE TABLE νέος-πίνακας (στήλη1 τύπος-δεδομένων, στήλη2 τύπος-δεδομένων, ... στήληN τύπος-δεδομένων, <περιορισμός-ακεραιότητας-1>, <περιορισμός-ακεραιότητας-2>, <περιορισμός-ακεραιότητας-Μ>
3
Γλώσσα Ορισμού Δεδομένων
Δημιουργία νέου πίνακα: CREATE TABLE Γνωστική_Περιοχή (κωδικός INTEGER NOT NULL, τίτλος CHAR(50) NOT NULL, αριθμός_συνδρομητών INTEGER DEFAULT 0, PRIMARY KEY (κωδικός), UNIQUE (τίτλος), CHECK (αριθμός_συνδρομητών >= 0))
4
Γλώσσα Ορισμού Δεδομένων
Δημιουργία νέου πίνακα: CREATE TABLE Πρακτικά_Συνεδρίου (κωδικός INTEGER NOT NULL, συνέδριο VARCHAR(100) NOT NULL, ημερομηνία DATE NOT NULL, χώρα CHAR(20), κωδικός_εκδοτικού_οίκου INTEGER NOT NULL, PRIMARY KEY (κωδικός), FOREIGN KEY (κωδικός_εκδοτικού_οίκου) REFERENCES Εκδοτικός_Οίκος (κωδικός) ON DELETE CASCADE ON UPDATE CASCADE )
5
Γλώσσα Ορισμού Δεδομένων
Αλλαγή δομής πίνακα: ALTER TABLE Χρησιμοποιείται για: προσθήκη νέας στήλης στον πίνακα, διαγραφή υπάρχουσας στήλης, εισαγωγή νέου περιορισμού (constraint), κατάργηση περιορισμού, αλλαγή της αρχικής τιμής στήλης (default), κατάργηση αρχικής τιμής στήλης.
6
Μεταβολή δομής πινάκων
Τροποποιείται η δομή του πίνακα με έναν από τους κάτωθι τρόπους προσθήκη μιας στήλης ALTER TABLE student ADD (hmeromhnia_orkomosias DATE); αλλαγή του τύπου, δυνατότητας χρήσης τιμών NULL ή εξ ορισμού τιμής μιας στήλης ALTER TABLE student MODIFY (am integer not null); προσθήκη ή κατάργηση περιορισμών ακεραιότητας ALTER TABLE student ADD CONSTRAINT am_not_zero CHECK (am <> 0); ALTER TABLE student DROP CONSTRAINT am_not_zero;
7
Γλώσσα Ορισμού Δεδομένων
Αλλαγή δομής πίνακα: Κατασκευή νέας στήλης ALTER TABLE Συνδρομητής ADD COLUMN ημερ/νία-γέννησης DATE NOT NULL Για την κατάργηση της στήλης ημερ/νία-γέννησης έχουμε: ALTER TABLE Συνδρομητής DROP COLUMN ημερ/νία-γέννησης
8
Καταστροφή πινάκων Μέσω της εντολής DROP TABLE
drop table grade; Ο πίνακας δεν μπορεί να καταστραφεί αν υπάρχουν περιορισμοί ακεραιότητας που τον αναφέρουν drop table student cascade constraints;
9
Κανόνες Ακεραιότητας Γενικά για την επιβολή ακεραιότητας σε επίπεδο στηλών πινάκων ισχύουν οι παρακάτω κανόνες: Nulls Unique Column Values Primary Key Values Referential Integrity Complex Integrity Checking Default Values
10
Πλεονεκτήματα από τη χρήση των περιορισμών ακεραιότητας
εύκολος ορισμός τους με χρήση εντολών SQL χωρίς επιπλέον δηλώσεις. κεντρική διαχείριση των κανόνων ακεραιότητας, που εφαρμόζονται στα δεδομένα καθώς αυτοί ορίζονται για πίνακες (και όχι για προγράμματα) και αποθηκεύονται στο data dictionary και χωρίς την ανάγκη να επαναλαμβάνονται στις εφαρμογές μέγιστη παραγωγικότητα ανάπτυξης εφαρμογών καθώς εύκολα ενημερώνονται οι περιορισμοί ακεραιότητας σε περίπτωση αλλαγής των επιχειρησιακών κανόνων. Εάν αλλάξει η φιλοσσοφία κάποιου περιορισμού ακεραιότητας, αλλάζει μόνο ο ίδιος και όχι όλες οι εφαρμογές που χρησιμοποιούν τα συγκεκριμένα δεδομένα άμεση ανάδραση στον χρήστη με βάση τα μηνύματα του ΣΔΒΔ. βελτίωση της απόδοσης κατά την εκτέλεση των ερωτημάτων (query optimizer). δυνατότητα εύκολης και γρήγορης ακύρωσης των περιορισμών ακεραιότητας προκειμένου να διευκολυνθεί η φόρτωση μεγάλων ποσοτήτων δεδομένων. Κατόπιν, μπορούν να εφαρμοσθούν οι περιορισμοί και να παραχθούν αυτόματα ο αναφορές λαθών για τις γραμμές που έχουν πρόβλημα. Μειονέκτημα: με την εφαρμογή των περιoρισμών πέφτει κάπως η απόδοση του συστήματος
11
Nulls Eίναι ένας κανόνας που εφαρμόζεται σε μια συγκεκριμένη στήλη και επιτρέπει ή αποτρέπει εισαγωγές ή ενημερώσεις γραμμών που περιέχουν null σε αυτή τη στήλη. NOT NULL
12
Unique Column Values Ο κανόνας της μοναδικής τιμής ορίζεται σε μια στήλη ή σύνολο στηλών και επιτρέπει την εισαγωγή ή ενημέρωση μιας γραμμής μόνον αν περιέχει μια μοναδική τιμή σε αυτήν ή αυτές τις στήλες. UNIQUE <attribute(s)>
13
Primary Key Values Η τιμή πρωτεύοντος κλειδιού που ορίζεται σε ένα κλειδί (μιας ή περισσότερων στηλών) σημαίνει ότι κάθε γραμμή του πίνακα μπορεί να προσδιορίζεται μοναδικά από τις τιμές του κλειδιού. PRIMARY KEY (<attribute(s)>)
14
Referential Integrity
Είναι ένας κανόνας που ορίζεται σε ένα κλειδί (μιας ή περισσότερων στηλών) ενός πίνακα και εξασφαλίζει ότι οι τιμές αυτού του κλειδιού ταιριάζουν με τις τιμές σε έναν συσχετιζόμενο πίνακα (referenced value). FOREIGN KEY <attribute> REFERENCES <table (attribute)>
15
Complex Integrity Checking
Είναι ένας κανόνας που ορίζεται από τον χρήστη για μια ή περισσότερες στήλες και επιτρέπει ή αποτρέπει την εισαγωγή, μεταβολή ή διαγραφή μιας γραμμής με βάση την τιμή (ή τιμές) που περιέχεται στην στήλη (ή στήλες). CHECK <conditional expression> e.g. YEAR INT(4) NOT NULL, DEFAULT 2003, CHECK (YEAR BETWEEN 1960 AND 2003)
16
Primary Key (απλοί κανόνες επιλογής)
Όποτε είναι δυνατόν χρησιμοποιείστε μια στήλη με σειριακούς αριθμούς. Είναι ένας κανόνας που ικανοποιεί όλους τους επόμενους Αποφεύγετετε τη χρήση composite primary keys. Παρότι η χρήση τους δεν απαγορεύεται, εντούτις η χρήση τους παραβιάζει ενίοτε κάποιους από τους κανόνες. πχ. Είναι μεγάλο κλειδί και δεν μπορούμε να εισάγουμε σειριακούς αριθμούς Χρησιμοποιείστε ένα πεδίο που οι τιμές του είναι μοναδικές. Χρησιμοποιείστε ένα πεδίο που οι τιμές του δεν αλλάζουν. Το πρωτεύον κλειδί χρησιμοπιείται μόνο για την αναγνώριση μια γραμμής και δεν πρέπει να χρειαστεί να αλλάξει. Χρησιμοποιείστε ένα πεδίο που οι τιμές δεν περιέχουν κενά. Χρησιμοποιείστε ένα πεδίο με μικρές αριθμητικές τιμές
17
Foreign Key Constraints
Ένα κλειδί αναφοράς μπορεί να αποτελείται από περισσότερες από μια στήλες. Στην περίπτωση αυτή πρέπει να αναφέρεται σε ένα κλειδί το οποίο επίσης να αποτελείται από περισσότερες από μια στήλες, ίδιες τον αριθμό και με δεδομένα του ιδίου ακριβώς τύπου. Το κλειδί aναφοράς επιτρέπει να υπάρχουν τιμές null, ακόμη και αν δεν υπάρχουν στην αναφορά του primary ή unique keys.
18
Foreign key (συνέχεια)
Μπορούμε να εισάγουμε διάφορους τρόπους αντίδρασης σε περίπτωση αλλαγής/διαγραφής του κλειδιού αναφοράς στον parent table. Μπορούμε να συνδιάσουμε τις εντολές ON DELETE ή ON UPDATE για τον κύριο πίνακα με τις εντολές CASCADE, SET NULL or SET DEFAULT: ON DELETΕ CASCADE: Σε περίπτωση διαγραφής του κλειδιού στον parent table γιαγράφονται επίσης οι εγγραφές στον child table. ΟΝ DELETE RESTRICT: Σε περίπτωση διαγραφής του κλειδιού στον parent table, επιτρέπεται η διαγραφή μόνο αν δεν υπάρχουν τιμές με εναφορά σ’ αυτό στον child table. ON DELETE SET NULL: Σε περίπτωση διαγραφής του κλειδιού στον parent table, οι τιμές στον child table που αναφέρονται σ’ αυτόν παίρνουν την τιμή null. ON DELETE SET DEFAULT: Σε περίπτωση διαγραφής του κλειδιού στον parent table, οι αντίστοιχες τιμές στον child παίρνουν την default τιμή του. Πρέπει να έχει οριστεί όμως μια default τιμή, διαφορετιά γίνεται null.
19
Foreign key (συνέχεια)
ON UPDATE CASCADE: Σε περίπτωση αλλαγής του κλειδιού στον parent table, αλλάζει επίσης και η αντίστοιχη αναφορά του στον child table. ON UPDATAE RESTRICT: Σε περίπτωση αλλαγής του κλειδιού στον parent table, η αλλαγή επιτρέπεται μόνο αν δεν υπάρχουν αναφορές του στον child table. ON UPDATE SET NULL: Όταν αλλάξει η τιμή στον parent table, α αντίστοιχη αναφορά στον child table γιέται null. ON UPDATE SET DEFAULT: Όταν αλλάξει η τιμή στον parent table, η αντίστοιχη αναφορά του στον child παίρνει την default τιμή. Πρέπει να έχει οριστεί όμως μια default τιμή, διαφορετιά γίνεται null.
20
Γλώσσα Χειρισμού Δεδομένων
Εντολές: SELECT, για διατύπωση ερωτημάτων, INSERT, για εισαγωγή νέων δεδομένων, UPDATE, για ενημέρωση δεδομένων, και DELETE, για διαγραφή δεδομένων από τη ΒΔ,
21
Γλώσσα Χειρισμού Δεδομένων
SELECT: SELECT [DISTINCT] <λίστα στηλών> FROM <λίστα πινάκων> [WHERE συνθήκη] [GROUP BY <λίστα στηλών>] [HAVING συνθήκη] [ORDER BY <λίστα στηλών> [ASCENDING | DESCENDING]]
22
Γλώσσα Χειρισμού Δεδομένων – Απλά ερωτήματα (1)
Παραδείγματα SELECT ``Να επιστραφούν όλες οι γραμμές του πίνακα Γνωστική_Περιοχή.'' SELECT * FROM Γνωστική_Περιοχή ή SELECT κωδικός, τίτλος, αριθμός_συνδρομητών
23
Γλώσσα Χειρισμού Δεδομένων – Απλά ερωτήματα (2)
Παραδείγματα SELECT ‘‘Να βρεθούν όλοι οι τίτλοι των γνωστικών περιοχών που είναι αποθηκευμένοι στη ΒΔ.’’ SELECT τίτλος FROM Γνωστική Περιοχή ‘‘Να βρεθούν τα διαφορετικά ονόματα των συνδρομητών.’’ SELECT DISTINCT όνομα FROM Συνδρομητής
24
Γλώσσα Χειρισμού Δεδομένων – Απλά ερωτήματα (3)
Να βρεθούν οι κωδικοί, τα ονόματα και οι αριθμοί πιστωτικών καρτών των συνδρομητών που βρίσκονται στην Ελλάδα, και τα αποτελέσματα να ταξινομηθούν αλφαβητικά ως προς το όνομα, και στη συνέχεια ως προς τον αριθμό πιστωτικής κάρτας.'' SELECT κωδικός, όνομα, ΑΠΚ FROM Συνδρομητής WHERE χώρα = `Ελλάδα' ORDER BY όνομα, ΑΠΚ
25
Γλώσσα Χειρισμού Δεδομένων – Απλά ερωτήματα (4)
‘‘Να βρεθούν οι κωδικοί και οι τίτλοι των άρθρων που έχουν δημοσιευθεί και σε περιοδικό και σε πρακτικά συνεδρίου.’’ SELECT κωδικός, τίτλος FROM Άρθρο WHERE κωδικός περιοδικού IS NOT NULL AND κωδικός πρακτικών συνεδρίου IS NOT NULL
26
Γλώσσα Χειρισμού Δεδομένων – Ερωτήματα Σύνδεσης (1)
``Να βρεθούν οι κωδικοί και τα ονόματα των συνδρομητών και οι τίτλοι των γνωστικών περιοχών για τις οποίες έχουν πληρώσει συνδρομή.'' SELECT Συνδρομητής.κωδικός, Συνδρομητής.όνομα, Γνωστική_Περιοχή.τίτλος FROM Συνδρομητής, Γνωστική_Περιοχή, Συνδρομή WHERE Συνδρομητής.κωδικός = Συνδρομή.κωδικός_συνδρομητή AND Συνδρομή.κωδικός_γνωστικής_περιοχής = Γνωστική_Περιοχή.κωδικός
27
Γλώσσα Χειρισμού Δεδομένων – Ερωτήματα Σύνδεσης (2)
‘‘Να βρεθούν οι τίτλοι των άρθρων και τα ονόματα των συγγραφέων που τα έχουν συγγράψει. Το αποτέλεσμα να ταξινομηθεί αλφαβητικά ως προς τους τίτλους των άρθρων’’ SELECT Άρθρο.τίτλος, Συγγραφέας.όνομα FROM Άρθρο, Συγγραφέας, Συγγραφή-Άρθρου WHERE Άρθρο.κωδικός = Συγγραφή-Άρθρου.κωδικός άρθρου AND Συγγραφή-Άρθρου.κωδικός συγγραφέα = Συγγραφέας.κωδικός ORDER BY Άρθρο.τίτλος
28
Γλώσσα Χειρισμού Δεδομένων – Ερωτήματα Σύνδεσης (3)
‘‘Να προσδιορισθεί ο τίτλος κάθε άρθρου και ο τίτλος της γνωστικής περιοχής όπου ανήκει’’ SELECT Άρθρο.τίτλος, Γνωστική Περιοχή.τίτλος FROM Άρθρο, Γνωστική Περιοχή WHERE Γνωστική Περιοχή.κωδικός = Άρθρο.κωδικός γνωστικής περιοχής ή FROM Άρθρο JOIN Γνωστική Περιοχή ON Γνωστική Περιοχή.κωδικός=Άρθρο.κωδικός γνωστικήςπεριοχής
29
Γλώσσα Χειρισμού Δεδομένων – Ένωση, Διαφορά και Τομή (1)
Ένωση, Διαφορά και Τομή (1) ‘‘Να προσδιορισθούν οι τίτλοι των συνεδρίων και οι τίτλοι των περιοδικών’’ SELECT συνέδριο FROM Πρακτικά Συνεδρίου UNION SELECT τίτλος FROM Περιοδικό
30
Γλώσσα Χειρισμού Δεδομένων – Ένωση, Διαφορά και Τομή (2)
Ένωση, Διαφορά και Τομή (2) ‘‘Να βρεθούν (αν υπάρχουν) συνδρομητές που έχουν το ίδιο όνομα με κάποιο συγγραφέα’’ SELECT όνομα FROM Συνδρομητής INTERSECT FROM Συγγραφέας
31
Γλώσσα Χειρισμού Δεδομένων – Ένωση, Διαφορά και Τομή (3)
Ένωση, Διαφορά και Τομή (3) ‘‘Να προσδιορισθούν οι κωδικοί και οι τίτλοι των άρθρων που δεν έχουν δημοσιευθεί σε κάποιο περιοδικό’’ SELECT κωδικός, τίτλος FROM Άρθρο EXCEPT WHERE κωδικός περιοδικού IS NOT NULL
32
Γλώσσα Χειρισμού Δεδομένων – Ερωτήματα με Συναρτήσεις Συγκέντρωσης(1)
Η SQL υποστηρίζει τις ακόλουθες συναρτήσεις: ΜΙΝ και MAX για την εύρεση της ελάχιστης και της μέγιστης τιμής μίας στήλης, AVG για τον υπολογισμό της μέσης τιμής μίας στήλης, SUM, για τον υπολογισμό του αθροίσματος των τιμών μίας στήλης, COUNT, για τη μέτρηση του αριθμού των γραμμών.
33
Γλώσσα Χειρισμού Δεδομένων – Ερωτήματα με Συναρτήσεις Συγκέντρωσης(2)
Παραδείγματα SELECT ‘‘Να βρεθεί ο αριθμός των άρθρων που έχει γράψει κάθε συγγραφέας’’ SELECT Συγγραφέας.όνομα, COUNT (Συγγραφή-Άρθρου.κωδικός άρθρου) FROM Συγγραφέας, Συγγραφή Άρθρου WHERE Συγγραφέας.κωδικός = Συγγραφή Άρθρου.κωδικός συγγραφέα GROUP BY Συγγραφέας.κωδικός
34
Γλώσσα Χειρισμού Δεδομένων – Ερωτήματα με Συναρτήσεις Συγκέντρωσης(3)
Παραδείγματα SELECT ‘‘Να βρεθεί ο μέσος όρος των συνδρομητών κάθε γνωστικής περιοχής’’ SELECT τίτλος, AVG (αριθμός συνδρομητών) FROM Γνωστική Περιοχή GROUP BY τίτλος
35
Γλώσσα Χειρισμού Δεδομένων – Σειρές Χαρακτήρων(1)
Για την αναζήτηση σειρών χαρακτήρων χρησιμοποιούνται οι τελεστές LIKE και NOT LIKE. SELECT * FROM Συνδρομητής WHERE όνομα LIKE ‘%όπουλος’
36
Γλώσσα Χειρισμού Δεδομένων – Υποερωτήματα (1)
Παραδείγματα SELECT ‘‘Να βρεθούν οι τίτλοι των γνωστικών περιοχών για τις οποίες ισχύει ότι ο αριθμός συνδρομητών είναι μεγαλύτερος από το μέσο όρο.’’ SELECT τίτλος FROM Γνωστική Περιοχή WHERE αριθμός συνδρομητών > (SELECT AVG(αριθμός συνδρομητών) FROM Γνωστική Περιοχή)
37
Γλώσσα Χειρισμού Δεδομένων – Υποερωτήματα (2)
Παραδείγματα SELECT ‘‘Να προσδιορισθούν οι τίτλοι των γνωστικών περιοχών όπου δεν αντιστοιχεί κάποιο άρθρο’’ SELECT τίτλος FROM Γνωστική Περιοχή WHERE κωδικός NOT IN (SELECT κωδικός γνωστικής περιοχής FROM Άρθρο)
38
Γλώσσα Χειρισμού Δεδομένων – Μετονομασία (1)
Παραδείγματα SELECT Θεωρείστε το ερώτημα που υπολογίζει το μέσο όρο του αριθμού συνδρομητών για κάθε γνωστική περιοχή: SELECT τίτλος, AVG (αριθμός συνδρομητών) FROM Γνωστική Περιοχή GROUP BY τίτλος SELECT τίτλος, AVG (αριθμός συνδρομητών) AS μέσος αριθμός συνδρομητών
39
Γλώσσα Χειρισμού Δεδομένων – Μετονομασία (2)
Παραδείγματα SELECT SELECT A.κωδικός AS κωδικόςΑ, B.κωδικός AS κωδικόςΒ FROM Γνωστική Περιοχή AS A, Γνωστική Περιοχή AS B WHERE A.αριθμός συνδρομητών < B.αριθμός συνδρομητών
40
Γλώσσα Χειρισμού Δεδομένων – Εισαγωγή Δεδομένων (1)
INSERT INTO Όνομα Πίνακα [(στήλη1,στήλη2,...,στήληΝ)] VALUES (τιμή1, τιμή2, ..., τιμήN) Π.χ INSERT INTO Γνωστική Περιοχή VALUES (10, ’Διαστημική Τεχνολογία’, 0) INSERT INTO Γνωστική Περιοχή (τίτλος,κωδικός) VALUES (’Διαστημική Τεχνολογία’, 10)
41
Γλώσσα Χειρισμού Δεδομένων – Ενημέρωση Δεδομένων (1)
UPDATE Όνομα Πίνακα SET (στήλη1=τιμή1, στήλη2=τιμή2, ..., στήληN=τιμήN) WHERE συνθήκη Π.χ UPDATE Γνωστική Περιοχή SET (τίτλος=‘Διάστημα’) WHERE κωδικός=10 SET (αριθμός συνδρομητών=0)
42
Γλώσσα Χειρισμού Δεδομένων – Διαγραφή Δεδομένων (1)
DELETE FROM Όνομα Πίνακα WHERE συνθήκη Π.χ DELETE FROM Άρθρο DELETE FROM Γνωστική Περιοχή WHERE αριθμός συνδρομητών=0 AND Γνωστική Περιοχή.κωδικός NOT IN (SELECT DISTINCT κωδικός γνωστικής περιοχής FROM Άρθρο)
43
Γλώσσα Χειρισμού Δεδομένων – Διαχείριση Όψεων (1)
CREATE VIEW Όνομα-Όψης AS (υποερώτημα-SQL) Π.χ. CREATE VIEW Ονόματα Περιοδικών Συνεδρίων (SELECT τίτλος FROM Περιοδικό UNION SELECT τίτλος FROM Πρακτικά Συνεδρίου) DROP VIEW Ονόματα-Περιοδικών-Συνεδρίων
44
Σύνοψη Η SQL (structured query language) προτυποποιήθηκε για πρώτη φορά 1986 και είναι η δημοφιλέστερη γλώσσα βάσεων δεδομένων. Η SQL είναι βασισμένη στη σχεσιακή άλγεβρα και διαχωρίζεται στη γλώσσα ορισμού δεδομένων και τη γλώσσα χειρισμού δεδομένων. Κάθε σχεσιακό σύστημα υποστηρίζει SQL, οπότε η διατύπωση των ερωτημάτων είναι ανεξάρτητη από το χρησιμοποιούμενο ΣΔΒΔ. Η γλώσσα χρησιμοποιείται για όλες τις λειτουργίες του ΣΔΒΔ (δημιουργία πινάκων, εισαγωγή και αναζήτηση δεδομένων, δημιουργία νέων χρηστών, κλπ.) Πολλές γλώσσες προγραμματισμού έχουν τροποποιηθεί ώστε να υποστηρίζουν διατύπωση ερωτημάτων σε SQL. Η SQL είναι έχει απλή σύνταξη, και αποδεσμεύει το χρήστη από λεπτομέρειες υλοποίησης.
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.