(Μέρος 3:Γλώσσα Ορισµού, Γλώσσα Τροποποίησης, Ενσωµατωµένη SQL) Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 2



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

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

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

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

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

SQL. Πριν μια σύντομη επανάληψη της σχεσιακής άλγεβρας. H SQL έχει διάφορα τμήματα: Γλώσσα Ορισμού εδομένων (ΓΟ ) Γλώσσα Χειρισμού εδομένων (ΓΧ )

Η Γλώσσα SQL. What is the average salary in the Toy department? Anonymous SQL user

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

Η Γλώσσα SQL. SQL αποτελείται από: DDL (Data Definition Language) - ορισμός, δημιουργία, τροποποίηση και διαγραφή σχήματος.

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

SQL. Πριν µια σύντοµη επανάληψη της σχεσιακής άλγεβρας. H SQL έχει διάφορα τµήµατα: Γλώσσα Χειρισµού εδοµένων (ΓΧ )

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

Η Γλώσσα SQL. Βάσεις εδοµένων Ευαγγελία Πιτουρά 1

Η γλώσσα SQL. Βάσεις Δεδομένων : SQL 1

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

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

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

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

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

Βάςεισ Δεδομζνων Ι. Ενότητα 7: Ειςαγωγή ςτην γλώςςα_sql. Δρ. Σςιμπίρθσ Αλκιβιάδθσ Σμιμα Μθχανικϊν Πλθροφορικισ ΣΕ

Βάσεις Δεδομένων. Ενότητα 6: Γλώσσα Structured Query Language -SQL. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Πως θα υλοποιήσουμε (προγραμματίσουμε) την εφαρμογή μας χρησιμοποιώντας ένα σχεσιακό Σ Β :

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

Η γλώσσα SQL. Βάσεις Δεδομένων : SQL 1

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

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

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

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

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

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

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Το σχεσιακό μοντέλο βάσεων δεδομένων

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Πως θα υλοποιήσουμε (προγραμματίσουμε) την εφαρμογή μας χρησιμοποιώντας ένα σχεσιακό Σ Β :

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

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

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

Η Γλώσσα Βάσεων εδοµένων SQL

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

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

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

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

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

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

Εισαγωγή στην πληροφορική

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

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

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

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 8: RM II. Relational Model. (Chapter )

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

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

Ενεργές ΒΔ. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Βάσεις Δεδομένων Ενεργές ΒΔ 1

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

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

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

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις

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

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

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

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

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


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

Σχεδιασμός Βάσεων Δεδομένων

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

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

Κεφάλαιο 5. Ορισµός Βάσεων εδοµένων µε SQL DDL - Άλλες Γλώσσες Σχεσιακών Βάσεων (QBE) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.

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

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

Η Γλώσσα SQL. Μέρος β. Η Γλώσσα SQL Σελίδα 1

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

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

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

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

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

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

( Boats)) ( Tempsids, bid. sname. Boats. Boats. Boats. (Reserves)/ > Reserves. Interlake' Sailors) ...

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

Η SQL ως γλώσσα ερωτημάτων. Υπενθυμίζουμε: Σχέση = Πίνακας Πλειάδα = Εγγραφή = Γραμμή (Πίνακα) Πεδίο = Γνώρισμα (Σχέσης) = Στήλη (Πίνακα)

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

Αρχεία και Βάσεις Δεδομένων

ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ (Relational Model) Μαθ. #10

Φυσική Σχεδίαση Υλοποίηση βάσης

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3

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

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]

DELETE, UPDATE, INSERT.

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

DELETE, UPDATE, INSERT

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

Το Σχεσιακό μοντέλο και η γλώσσα SQL

SQL Data Definition. REFERENCES (foreign key), CHECKκαι PRIMARY KEY (key)

SQL: Συναρτήσεις Συνάθροισης

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

H Γλώσσα SQL Σχεδιασμός Βάσεων Δεδομένων

PL/SQL. Κώστας Στεφανίδης

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

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]

Transcript:

Η Γλώσσα SQL (Μέρος 3:Γλώσσα Ορισµού, Γλώσσα Τροποποίησης, Ενσωµατωµένη SQL) Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 1 Η γλώσσα SQL H SQL έχει διάφορα τµήµατα: Γλώσσα Ορισµού εδοµένων (ΓΟ ) Γλώσσα Χειρισµού εδοµένων (ΓΧ ) Ενσωµατωµένη Γλώσσα Χειρισµού εδοµένων Ορισµό Όψεων Εξουσιοδότηση (authentication) Ακεραιότητα Έλεγχο Συναλλαγών Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 2

Γλώσσα Ορισµού εδοµένων Γλώσσα Ορισµού εδοµένων (ΓΟ ) Σχετικά µε το λογικό σχήµα, η ΓΟ SQL υποστηρίζει τους ορισµούς: του σχήµατος κάθε σχέσης του πεδίου τιµών κάθε γνωρίσµατος των περιορισµών ακεραιότητας Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 3 Γλώσσα Ορισµού εδοµένων create table R(A 1 D 1, A 2 D 2,..., A n D n ), <περιορισµός-ακεραιότητας 1 >,, <περιορισµός-ακεραιότητας k > όπου R είναι το όνοµα της σχέσης, A i τα ονόµατα των γνωρισµάτων, και D i οι τύποι των αντίστοιχων πεδίων τιµών. Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 4

Πεδία Τιµών Τύποι Πεδίου Ορισµού Για τον ορισµό του πεδίου ορισµού, οι διαθέσιµοι built-in τύποι περιλαµβάνουν: char(n) (σταθερού µήκους) varchar(n) int smallint numeric(p, d) (d από τα p ψηφία είναι στα δεξιά της υποδιαστολής) real, double precision float(n) date (ηµεροµηνία) time (ώρα) Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 5 Πεδία Τιµών Ο ορισµός πεδίου µπορεί να περιέχει τον προσδιορισµό not null Επίσης, επιτρέπεται δηµιουργία πεδίου: create domain <name> as <type-description> create domain Όνοµα-Προσώπου char(20) Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 6

Ορισµός Σχήµατος Ορισµός Σχήµατος create table R(A 1 D 1, A 2 D 2,..., A n D n ), <περιορισµός-ακεραιότητας 1 >,, <περιορισµός-ακεραιότητας k > όπου R είναι το όνοµα της σχέσης, A i τα ονόµατα των γνωρισµάτων, και D i οι τύποι των αντίστοιχων πεδίων τιµών. Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 7 Ορισµός Σχήµατος Επιτρεπτοί περιορισµοί ακεραιότητας είναι της µορφής: primary key A j1, A j2,..., A jn, (δεν επιτρέπονται επαναλαµβανόµενες τιµές και NULL τιµές) unique A j1, A j2,..., A jn, (δεν επιτρέπονται επαναλαµβανόµενες τιµέs; NULL τιµές επιτρέπονται) check P foreign key (A i ) references A j Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 8

Ορισµός Σχήµατος Παραδείγµατα (1) create table Πελάτης (Όνοµα-Πελάτη char(20) not null, Οδός char(30), Πόλη char(30), primary key (Όνοµα-Πελάτη)) Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 9 Ορισµός Σχήµατος (2) create table Λογαριασµός (Αριθµός-Λογαριασµού char(10) not null, Όνοµα-Υποκαταστήµατος char(15), Ποσό int, primary key (Αριθµός-Λογαριασµού) check (Ποσό >= 0) Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 10

Ορισµός Σχήµατος Επίσης, πιο περίπλοκες συνθήκες, π.χ., για ξένα κλειδιά: check (Όνοµα-Υποκαταστήµατος in select Όνοµα-Υποκαταστήµατος from Υποκατάστηµα) Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 11 Περιορισµοί Ακεραιότητας Περιορισµοί Αναφοράς Σύνταξη: foreign key (A i ) references A j Όταν µια πράξη παραβιάζει έναν περιορισµό αναφοράς απορρίπτεται εκτός αν έχει οριστεί: on delete cascade on update cascade Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 12

Περιορισµοί Ακεραιότητας Παράδειγµα create table.. foreign key (Όνοµα-Υποκαταστήµατος) references Υποκατάστηµα on delete cascade on update cascade Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 13 Πεδίου ορισµού Περιορισµοί Ακεραιότητας Χρησιµοποιώντας την εντολή check: Παραδείγµατα (1) Ελάχιστος ωροµίσθιο create domain Ωροµίσθιο numeric(5, 2) constraint Έλεγχος-Ωροµισθίου check(ποσό >= 4.00) Περιορισµοί Ακεραιότητας Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 14

Περιορισµοί Ακεραιότητας (2) Να µην περιέχει την τιµή null create domain Πεδίο-Αριθµός-Λογαριασµού char(10) constraint Έλεγχος-Αριθµός-Λογαριασµού check(value not null) (3) Να παίρνει συγκεκριµένες τιµές create domain Τύπος-Λογαριασµού char(10) constraint Έλεγχος-Τύπος-Λογαριασµού check value in ( Όψεως, Ταµιευτηρίου ) Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 15 ιαγραφή Σχήµατος ιαγραφή Σχήµατος Μια καινούργια σχέση είναι αρχικά άδεια. Για να σβηστεί ένα σχήµα: drop table R ιαφορά από delete from R Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 16

Τροποποίηση Σχήµατος Τροποποίηση Σχήµατος ALTER TABLE όνοµα πίνακα ADD - προσθέτει καινούργια στήλη DROP - διαγράφει µια στήλη MODIFY - τροποποιεί µια στήλη Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 17 Τροποποίηση Σχήµατος Προσθήκη νέου γνωρίσµατος: alter table R add A D προσθήκη σε µια σχέση R που ήδη υπάρχει του γνωρίσµατος A µε πεδίο τιµών D, η τιµή των πλειάδων της R στο καινούργιο γνώρισµα είναι null. ιαγραφή γνωρίσµατος: alter table R drop A Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 18

Τροποποίηση Σχήµατος alter table R modify (όνοµα_στήλης new_datatype) modify µπορεί να τροποποιήσει µόνο τον τύπο δεδοµένων, όχι το όνοµα της στήλης Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 19 Η γλώσσα SQL Τροποποίηση Βάσης εδοµένων Γλώσσα Χειρισµού εδοµένων (ΓX ) Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 20

Τροποποιήσεις Τροποποιήσεις 1. ιαγραφή 2. Εισαγωγή 3. Ενηµέρωση Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 21 Εισαγωγή Για να εισάγουµε δεδοµένα σε µια σχέση είτε (α) προσδιορίζουµε την πλειάδα, είτε insert into R(A 1,, A n ) values (v 1,, v n ) Εισαγωγή (β) γράφουµε µια ερώτηση που το αποτέλεσµα της εισάγεται στη σχέση. insert into R(A 1,, A n ) select-from-where Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 22

Εισαγωγή Παράδειγµα για το (α) insert into Λογαριασµός values ( Ψηλά-Αλώνια, A--9732, 1200) Όταν µε οποιαδήποτε σειρά, π.χ.,: insert into Λογαριασµός (Αριθµός-Λογαριασµού, Όνοµα- Υποκαταστήµατος, Ποσό) values ( A--9732, Ψηλά-Αλώνια, 1200) Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 23 Εισαγωγή Παράδειγµα για το (β): Για κάθε πελάτη που έχει πάρει δάνειο από το υποκατάστηµα Ψηλά Αλώνια προστίθεται ως δώρο ένας λογαριασµός των $200 insert into Λογαριασµός select Όνοµα-Υποκαταστήµατος, Αριθµός- ανείου, 200 from άνειο where Όνοµα-Υποκαταστήµατος = Ψηλά Αλώνια Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 24

Εισαγωγή Πρέπει πρώτα να υπολογιστεί το select πλήρως και µετά να γίνει η εισαγωγή. Τι αποτέλεσµα έχει η παρακάτω εντολή αν αυτό δε συµβαίνει; insert into Λογαριασµός select * from Λογαριασµός Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 25 Εισαγωγή Επίσης, εισαγωγή null τιµών: insert into Λογαριασµός values (null, A--9732, 1200) Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 26

ιαγραφή ιαγραφή Μπορούµε να σβήσουµε µόνο ολόκληρες πλειάδες και όχι συγκεκριµένα γνωρίσµατα. delete from R where P Σβήνει όλες τις πλειάδες της R για τις οποίες ισχύει το P. Όταν λείπει το where σβήνονται όλες οι πλειάδες µιας σχέσης. Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 27 ιαγραφή Παραδείγµατα (1) Όλους τους λογαριασµούς του Παπαδόπουλου delete from Καταθέτης where Όνοµα-Πελάτη = Παπαδόπουλος Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 28

ιαγραφή (2) Όλους τους λογαριασµούς στα υποκαταστήµατα της Πάτρας delete from Λογαριασµός where Όνοµα-Υποκαταστήµατος in (select Όνοµα-Υποκαταστήµατος from Υποκατάστηµα where Πόλη = Πάτρα ) Παρατήρηση: δεν υπάρχει τρόπος να διαγράψουµε τη µία από δυο ίδιες πλειάδες Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 29 ιαγραφή Αν και µπορούµε να σβήσουµε πλειάδες µόνο από µία σχέση τη φορά µπορούµε να αναφερθούµε σε περισσότερες από µια σχέσεις στην υποερώτηση του where (3) Όλους τους λογαριασµούς µιας τράπεζας µε ποσό µικρότερο από το µέσο ποσό στην τράπεζα. delete from Λογαριασµός where Ποσό > (select avg(ποσό) from Λογαριασµός) Πρώτα γίνεται ο έλεγχος σε όλες τις πλειάδες και µετά αυτές που ικανοποιούν τη συνθήκη διαγράφονται. Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 30

ιαγραφή Παράδειγµα: µια τράπεζα θέλει να κλείσει όλα τα υποκαταστήµατά της που βρίσκονται στην Καστοριά delete from Υποκατάστηµα where Όνοµα-Υποκαταστήµατος in (select Όνοµα-Υποκαταστήµατος from Υποκατάστηµα where Πόλη = Kαστοριά ) Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 31 ιαγραφή Πρέπει να διαγράψουµε και όλους τους λογαριασµούς: delete from Λογαριασµός where Όνοµα-Υποκαταστήµατος in (select Όνοµα-Υποκαταστήµατος from Υποκατάστηµα where Πόλη = Kαστοριά ) ΠΡΟΣΟΧΗ: όταν θέλουµε να διαγράψουµε κάποια δεδοµένα, πρέπει να διαγράψουµε όλα τα δεδοµένα που συσχετίζονται µε αυτά. Επίσης πρέπει να προσέξουµε την σειρά µε την οποία θα γίνουν οι διαγραφές. Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 32

ιαγραφή υποκατάστηµα λογαριασµός Πόλη Όνοµα_Υποκ. Όνοµα_Υποκ. Όνοµα-Πελάτη Υπόλοιπο Καστοριά K1 K1 ΚΩΤΣΗΣ 350.000 Καστοριά K3 K2 ΑΠΟΣΤΟΛΙ ΗΣ 230.000 Θεσσαλονίκη Θ1 Θ1 ΣΤΕΦΑΝΟΥ 670.000 Θεσσαλονίκη Θ2 Θ2 ΠΑΠΑΝΙΚΟΛΑΟΥ 256.000 Αθήνα A1 K3 ΧΑΤΖΟΠΟΥΛΟΣ 410.000...... αν διαγράψουµε από τον πίνακα υποκατάστηµα όλα τα υποκαταστήµατα της Καστοριάς, θα έχουµε πρόβληµα ορθότητας στον πίνακα λογαριασµός. πρώτα πρέπει να διαγράψουµε τους λογαριασµούς και µετά τα υποκαταστήµατα. Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 33 Ενηµερώσεις Ενηµερώσεις Παράδειγµα: Αύξηση όλων των καταθέσεων που είναι µεγαλύτερες των $100 κατά 5% λόγω τοκισµού update Λογαριασµός set Ποσό = Ποσό * 1.05 where Ποσό > 100 Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 34

Ενηµερώσεις Παράδειγµα: στους πελάτες που έχουν υπόλοιπο < 1.000.000 η τράπεζα δίνει 5% και στους πελάτες που έχουν υπόλοιπο > 1.000.000 δίνει 9%: update Λογαριασµός set Ποσό = Ποσό * 1.05 where Ποσό < 1.000.000 update Λογαριασµός set Ποσό = Ποσό * 1.09 where Ποσό > 1.000.000 Ποιο update πρέπει να τρέξουµε πρώτα; Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 35 Ενηµερώσεις Παράδειγµα: Αύξηση όλων των υπολοίπων που είναι µεγαλύτερα από τον µέσο όρο κατά 5% update Λογαριασµός set Υπόλοιπο = Υπόλοιπο * 1.05 where Υπόλοιπο > select avg(υπόλοιπο) from Λογαριασµός Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 36

Ενσωµατωµένη SQL Ενσωµατωµένη SQL Προσπέλαση µιας Β µέσω µια γλώσσας προγραµµατισµού γενικού σκοπού απαιτείται τουλάχιστον γιατί: υπάρχουν ερωτήσεις που δε µπορούν να διατυπωθούν σε SQL, γιατί η SQL δεν έχει όλες τις δυνατότητες µιας γλώσσας προγραµµατισµού γενικού σκοπού µη-δηλωτικές εντολές (π.χ., εκτύπωση, επικοινωνία µε το χρήστη) δε µπορούν να γίνουν µέσω της SQL Ενσωµάτωση της SQL σε µια γλώσσα που καλείται φιλόξενη (host) Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 37 Ενσωµατωµένη SQL Σε αυτήν την περίπτωση, η επεξεργασία των ερωτήσεων γίνεται από τη Β, και το αποτέλεσµα γίνεται διαθέσιµο στο πρόγραµµα µια πλειάδα τη φορά Ένας ειδικός προ-επεξεργαστής (preprocessor) αντικαθιστά τον ενσωµατωµένο κώδικα της SQL µε δηλώσεις και κλήσεις συναρτήσεων στη host γλώσσα και µεταφράζεται το πρόγραµµα Σύνταξη της µορφής: EXEC SQL < embedded SQL statement > END-EXEC Ηακριβής σύνταξη εξαρτάται από τη host γλώσσα Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 38

Ενσωµατωµένη SQL Χρησιµοποιούµε την εντολή: SQL INCLUDE, για να δηλώσουµε στον προ-επεξεργαστή που πρέπει να εισάγει τις δηλώσεις των µεταβλητών της SQL Μεταβλητές της γλώσσας µπορεί να χρησιµοποιηθούν στην εντολή της SQL αν το σύµβολο : προηγείται του ονόµατός τους Για να γράψουµε µια ερώτηση σε SQL: EXEC SQL declare c cursor for select Όνοµα-Πελάτη, Πόλη from Κατάθεση, Πελάτης where Κατάθεση.Όνοµα-Πελάτη = Πελάτης.Όνοµα-Πελάτη and Κατάθεση.Ποσό > :amount END-EXEC Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 39 Ενσωµατωµένη SQL Η παραπάνω εντολή δεν προκαλεί την εκτέλεση της ερώτησης, για να εκτελεστεί: EXEC SQL open c END-EXEC Το αποτέλεσµα σώζεται σε µια προσωρινή σχέση, αν υπάρχει λάθος το διαγνωστικό µήνυµα σώζεται σε µια ειδική µεταβλητή (SQLCA) Οι πλειάδες του αποτελέσµατος γίνονται διαθέσιµες στο πρόγραµµα µέσω µιας σειράς από fetch εντολές, χρειάζεται µια µεταβλητή της host γλώσσας για κάθε γνώρισµα EXEQ SQL fetch c into :cn$, :cc END-EXEC Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 40

Ενσωµατωµένη SQL Για να σβήσουµε τη προσωρινή σχέση: EXEC SQL close c END-EXEC Επίσης: EXEC SQL < update, insert ή delete έκφραση> END-EXEC Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 41 Ενσωµατωµένη SQL υναµική SQL Τα προγράµµατα µπορούν να δηµιουργούν ερωτήσεις σε SQL ως συµβολοσειρές δυναµικά κατά την εκτέλεση και είτε να τα εκτελούν αµέσως είτε να τα προετοιµάζουν (τα µεταφράζουν) για να χρησιµοποιηθούν αργότερα Παράδειγµα: char * sqlprog = update Λογαριασµός set Ποσό = Ποσό * 1.05 where Αριθµός-Λογαριασµού =? EXEC SQL prepare dynprog from :sqlprog; char account[10] = A-101 ; EXEC SQL execute dynprog using :account; Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 42

Η γλώσσα SQL Άλλα Χαρακτηριστικά Γλώσσες 4ης Γενιάς Έννοια του session µεταξύ ενός client και του server του ΣΒ ηµιουργία σχήµατος: create schema και Σβήσιµο σχήµατος : drop schema Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 43