— “»ƒƒ± ’¬ƒµ‰½...

download — “»ƒƒ± ’¬ƒµ‰½ ”µ´¼­½‰½    SQL  (œ­‚ ’)

of 64

  • date post

    26-Jan-2016
  • Category

    Documents

  • view

    64
  • download

    2

Embed Size (px)

description

Η Γλώσσα Βάσεων Δεδομένων SQL (Μέρος Β). Η γλώσσα SQL. H SQL έχει διάφορα τμήματα: Γλώσσα Ορισμού Δεδομένων (ΓΟΔ) Γλώσσα Χειρισμού Δεδομένων (ΓΧΔ) Ενσωματωμένη Γλώσσα Χειρισμού Δεδομένων Ορισμό Όψεων Εξουσιοδότηση (authentication) Ακεραιότητα Έλεγχο Συναλλαγών. - PowerPoint PPT Presentation

Transcript of — “»ƒƒ± ’¬ƒµ‰½...

Χωρς ττλο διαφνειας*
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Γλσσα Ορισμο Δεδομνων (ΓΟΔ)
Γλσσα Χειρισμο Δεδομνων (ΓΧΔ)
Ενσωματωμνη Γλσσα Χειρισμο Δεδομνων
*
Περισστερα για τη γλσσα ερωτσεων
- Αλλαγ Ονματος
- Μεταβλητς Πλειδων
*
Μια χαρακτηριστικ ερτηση σε SQL χει την εξς μορφ:
Ισοδναμο του: π A1, A2, .., An (σ P (R1 x R2 x … Rm))
ονματα σχσεων
ονματα γνωρισμτων
*
Select
ανμεσα σε αριθμητικς εκφρσεις,συμβολοσειρς (strings), και ειδικος τπους.
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Βασικ Δομ
ταν το διο γνρισμα εμφανζεται στο σχμα περισστερων απ μια σχσεων, ττε δικριση βση του συμβολισμο:
<νομα-σχσης>.<νομα-γνωρσματος>
Δυναττητα αλλαγς του ονματος τσο μιας σχσης σο και ενς γνωρσματος:
<παλι-νομα> as <νο-νομα>
To as μπορε να εμφανζεται στο select στο from
Οι μεταβλητς πλειδων εναι ιδιατερα χρσιμες ταν θλουμε να συγκρνουμε δυο πλειδες τις διας σχσης.
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
% ταιριζει οποιαδποτε συμβολοσειρ
_ ταιριζει οποιοδποτε χαρακτρα
Διταξη των Πλειδων
Χρση του order by στε οι πλειδες στο αποτλεσμα να εναι ταξινομημνες με βση τo αντστοιχο γνρισμα
Default: αξουσα διταξη, αλλ και μεσα χρησιμοποιντας το asc (αξουσα) το desc (φθνουσα).
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
(select-from-where) union (select-from-where)
*
Η τιμ null
Η τιμ null
Χρση της λξης κλειδ is null (is not null) σε μια συνθκη για να ελξουμε αν μια τιμ εναι null.
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Ελχιστο: min(A)
Μγιστο: max(A)
Αν θλουμε να απαλεψουμε διπλς εμφανσεις χρησιμοποιομε τη λξη-κλειδ distinct στην αντστοιχη κφραση.
having: για να εφαρμσουμε μια συνθκη σε μια συγκεκριμνη ομδα απ πλειδες. Η συνθκη του having εφαρμζεται αφο σχηματιστον οι ομδες και υπολογιστον οι συναθροιστικς συναρτσεις
group by: για να εφαρμσουμε τις συναρτσεις χι μνο σε να σνολο απ πλειδες, αλλ σε ομδες απ σνολα πλειδων.
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Υπολογισμς της υποερτησης για κθε γραμμ (πλειδα) της εξωτερικς ερτησης
υποερτηση
*
(>, =, κλπ) some/any/all (σγκριση συνλων)
unique/not unique (λεγχος για διπλτιμα)
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
- Συνενσεις Συνλων
Ορισμς ψεων
Ορισμς Σχημτων
Εμφωλιασμνη SQL
*
Η SQL--92 υποστηρζει διφορους τπους συνενσεων που συνθως χρησιμοποιονται στο for, αλλ μπορον να χρησιμοποιηθον οπουδποτε μπορε να χρησιμοποιηθε μια σχση.
Γενικ σνταξη:
*
left outer join: αριστερ εξωτερικ συννωση
right outer join
full outer join
*
Συνενσεις Συνλων
Συνθκες Συννωσης:
on P
using (A1, A2, ..., An): γνωρσματα που πρπει να ταιριζουν στη συννωση εναι τα Ai. Τα Ai πρπει να εναι γνωρσματα κοιν και στις δυο σχσεις και εμφανζονται στο αποτλεσμα μνο μια φορ.
Για την εσωτερικ συννωση η συνθκη δεν εναι υποχρεωτικ, ταν λεπει ισοδυναμε με καρτεσιαν γινμενο.
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Οι λξεις κλειδι inner και outer εναι προαιρετικς.
natural: φυσικ συννωση, τα γνωρσματα εμφανζονται στο αποτλεσμα με την εξς διταξη: πρτα αυτ με τα οποα γινε η συννωση (δηλ., αυτ που εναι κοιν και στις δο σχσεις), μετ τα υπλοιπα της πρτης σχσης, και τλος τα υπλοιπα της δετερης σχσης.
Παρδειγμα: Τα ονματα των πελατν που ετε χουν καταθσεις ετε χουν πρει δνεια (αλλ χι και τα δυο)
select νομα-Πελτη
where Αριθμς-Λογαριασμο is null or Αριθμς-Δανεου is null
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Παραγμενες Σχσεις
Παραγμενες Σχσεις
Η SQL-92 δνει τη δυναττητα μια υποερτηση να χρησιμοποιηθε στο from
Ττε πρπει να τις δοθε να νομα και τα γνωρσματα της να μετανομαστον
Αυτ γνεται χρησιμοποιντας το as
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Παραγμενες Σχσεις
Η SQL-92 δνει τη δυναττητα χρησιμοποιντας το as να δοθε να προσωριν νομα σε μα προσωριν σχση που προκπτει απ μια υποερτηση.
Παρδειγμα: Το μσο υπλοιπο για λα τα υποκαταστματα για τα οποα το μσο ποσ εναι μεγαλτερο των $1200
select νομα-Υποκαταστματος, Μσο-υπλοιπο
*
Επσης, μπορον να προσδιοριστον τα ονματα των γνωρισμτων μεσα
create view <νομα--ψης> as <select-from-where ερτηση>
create view <νομα--ψης> (<λστα ονομτων-γνωρισμτων>)
as <select-from-where ερτηση>
*
Ορισμς ψεων
Παρδειγμα: Μια ψη που περιλαμβνει τα ονματα λων των υποκαταστημτων και το θροισμα του ποσο των δανεων που χουν γνει απ αυτ
create view Υποκατστημα-Σνολο-Δανεων (Σνολο-Δανεων, νομα- Υποκαταστματος) as
select νομα-Υποκαταστματος, sum(Ποσ)
*
Τα ονματα ψεων μπορε να χρησιμοποιηθον οπουδποτε μπορε να χρησιμοποιηθε το νομα μιας σχσης.
Ο ορισμς της ψης παραμνει στην βση δεδομνων, εκτς αν σβηστε:
drop view <νομα-ψης>
*
*
Γλσσα Ορισμο Δεδομνων (ΓΟΔ)
Σχετικ με το λογικ σχμα, η ΓΟΔ SQL υποστηρζει τους ορισμος:
του σχματος κθε σχσης
των περιορισμν ακεραιτητας
*
<περιορισμς-ακεραιτητας1>,
<περιορισμς-ακεραιτηταςk>
που R εναι το νομα της σχσης, Ai τα ονματα των γνωρισμτων, και Di οι τποι των αντστοιχων πεδων τιμν.
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Τποι Πεδου Ορισμο
Για τον ορισμ του πεδου ορισμο, οι διαθσιμοι built-in τποι περιλαμβνουν:
char(n) (σταθερο μκους)
varchar(n)
int
smallint
numeric(p, d) (d απ τα p ψηφα εναι στα δεξι της υποδιαστολς)
real, double precision
*
Ο ορισμς πεδου μπορε να περιχει τον προσδιορισμ not null
Επσης, επιτρπεται δημιουργα πεδου:
create domain νομα-Προσπου char(20)
*
<περιορισμς-ακεραιτητας1>,
<περιορισμς-ακεραιτηταςk>
που R εναι το νομα της σχσης, Ai τα ονματα των γνωρισμτων, και Di οι τποι των αντστοιχων πεδων τιμν.
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Επιτρεπτο περιορισμο ακεραιτητας εναι της μορφς:
primary key Aj1, Aj2, ..., Ajn, (δεν επιτρπονται επαναλαμβανμενες τιμς και NULL τιμς)
unique Aj1, Aj2, ..., Ajn, (δεν επιτρπονται επαναλαμβανμενες τιμs; NULL τιμς επιτρπονται)
check P
*
*
*
check (νομα-Υποκαταστματος in select νομα-Υποκαταστματος
from Υποκατστημα)
*
foreign key (Ai) references Aj
ταν μια πρξη παραβιζει ναν περιορισμ αναφορς απορρπτεται εκτς αν χει οριστε:
on delete cascade
on update cascade
*
on delete cascade
on update cascade
*
constraint λεγχος-Ωρομισθου check(Ποσ >= 4.00)
*
create domain Πεδο-Αριθμς-Λογαριασμο char(10)
create domain Τπος-Λογαριασμο char(10)
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Για να σβηστε να σχμα:
drop table R
*
*
alter table R add A D
προσθκη σε μια σχση R που δη υπρχει του γνωρσματος A με πεδο τιμν D, η τιμ των πλειδων της R στο καινοργιο γνρισμα εναι null.
Διαγραφ γνωρσματος:
*
alter table R modify (νομα_στλης new_datatype)
modify μπορε να τροποποισει μνο τον τπο δεδομνων, χι το νομα της στλης
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
*
*
(α) προσδιορζουμε την πλειδα, ετε
(β) γρφουμε μια ερτηση που το αποτλεσμα της εισγεται στη σχση.
insert into R(A1, …, An) values (v1, …, vn)
insert into R(A1, …, An) select-from-where
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
insert into Λογαριασμς (Αριθμς-Λογαριασμο, νομα-Υποκαταστματος, Ποσ)
values (“A--9732’’, “Ψηλ-Αλνια”, 1200)
*
Παρδειγμα για το (β):
Για κθε πελτη που χει πρει δνειο απ το υποκατστημα Ψηλ Αλνια προστθεται ως δρο νας λογαριασμς των $200
insert into Λογαρισμς
*
Εισαγωγ
Πρπει πρτα να υπολογιστε το select πλρως και μετ να γνει η εισαγωγ.
Τι αποτλεσμα χει η παρακτω εντολ αν αυτ δε συμβανει;
insert into Λογαριασμς
*
*
Μπορομε να σβσουμε μνο ολκληρες πλειδες και χι συγκεκριμνα γνωρσματα.
Σβνει λες τις πλειδες της R για τις οποες ισχει το P.
ταν λεπει το where σβνονται λες οι πλειδες μιας σχσης.
delete from R where P
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
delete from Καταθτης
where νομα-Πελτη = “Παπαδπουλος”
*
delete from Λογαριασμς
from Υποκατστημα
where Πλη = “Πτρα’’)
Παρατρηση: δεν υπρχει τρπος να διαγρψουμε τη μα απ δυο διες πλειδες
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Διαγραφ
Αν και μπορομε να σβσουμε πλειδες μνο απ μα σχση τη φορ μπορομε να αναφερθομε σε περισστερες απ μια σχσεις στην υποερτηση του where
(3) λους τους λογαριασμος μιας τρπεζας με ποσ μικρτερο απ το μσο ποσ στην τρπεζα.
delete from Λογαριασμς
from Λογαριασμς)
Πρτα γνεται ο λεγχος σε λες τις πλειδες και μετ αυτς που ικανοποιον τη συνθκη διαγρφονται.
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Διαγραφ
Παρδειγμα: μια τρπεζα θλει να κλεσει λα τα υποκαταστματ της που βρσκονται στην Καστορι
delete from Υποκατστημα
from Υποκατστημα
*
delete from Λογαριασμς
from Υποκατστημα
where Πλη = “Kαστορι’)
ΠΡΟΣΟΧΗ: ταν θλουμε να διαγρψουμε κποια δεδομνα, πρπει να διαγρψουμε λα τα δεδομνα που συσχετζονται μ’ αυτ. Επσης πρπει να προσξουμε την σειρ με την οποα θα γνουν οι διαγραφς.
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Πλη νομα_Υποκ. νομα_Υποκ. νομα-Πελτη Υπλοιπο
Καστορι K1 K1 ΚΩΤΣΗΣ 350.000
Καστορι K3 K2 ΑΠΟΣΤΟΛΙΔΗΣ 230.000
Θεσσαλονκη Θ1 Θ1 ΣΤΕΦΑΝΟΥ 670.000
Θεσσαλονκη Θ2 Θ2 ΠΑΠΑΝΙΚΟΛΑΟΥ 256.000
Αθνα A1 K3 ΧΑΤΖΟΠΟΥΛΟΣ 410.000
αν διαγρψουμε απ τον πνακα υποκατστημα λα τα υποκαταστματα της Καστορις, θα χουμε πρβλημα ορθτητας στον πνακα account.
πρτα πρπει να διαγρψουμε τους λογαριασμος και μετ τα υποκαταστματα.
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Ενημερσεις
Ενημερσεις
Παρδειγμα: Αξηση λων των καταθσεων που εναι μεγαλτερες των $100 κατ 5% λγω τοκισμο
update Λογαριασμς
*
Ενημερσεις
Παρδειγμα:
στους πελτες που χουν υπλοιπο < 1.000.000 η τρπεζα δνει 5% και στους πελτες που χουν υπλοιπο > 1.000.000 δνει 9%:
update Λογαριασμς
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Ενημερσεις
Παρδειγμα: Αξηση λων των υπολοπων που εναι μεγαλτερα απ τον μσο ρο κατ 5%
update Λογαριασμς
*
Προσπλαση μιας ΒΔ μσω μια γλσσας προγραμματισμο γενικο σκοπο απαιτεται τουλχιστον γιατ:
υπρχουν ερωτσεις που δε μπορον να διατυπωθον σε SQL,
γιατ η SQL δεν χει λες τις δυναττητες μιας γλσσας προγραμματισμο γενικο σκοπο
μη-δηλωτικς εντολς (π.χ., εκτπωση, επικοινωνα με το χρστη) δε μπορον να γνουν μσω της SQL
Ενσωμτωση της SQL σε μια γλσσα που καλεται φιλξενη (host)
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Ενσωματωμνη SQL
Σε αυτν την περπτωση, η επεξεργασα των ερωτσεων γνεται απ τη ΒΔ, και το αποτλεσμα γνεται διαθσιμο στο πργραμμα μια πλειδα τη φορ
νας ειδικς προ-επεξεργαστς (preprocessor) αντικαθιστ τον ενσωματωμνο κδικα της SQL με δηλσεις και κλσεις συναρτσεων στη host γλσσα και μεταφρζεται το πργραμμα
Σνταξη της μορφς:
Η ακριβς σνταξη εξαρτται απ τη host γλσσα
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Χρησιμοποιομε την εντολ: SQL INCLUDE, για να δηλσουμε στον προ-επεξεργαστ που πρπει να εισγει τις δηλσεις των μεταβλητν της SQL
Μεταβλητς της γλσσας μπορε να χρησιμοποιηθον στην εντολ της SQL αν το σμβολο : προηγεται του ονματς τους
Για να γρψουμε μια ερτηση σε SQL:
EXEC SQL
*
Ενσωματωμνη SQL
Η παραπνω εντολ δεν προκαλε την εκτλεση της ερτησης, για να εκτελεστε:
EXEC SQL open c END-EXEC
Το αποτλεσμα σζεται σε μια προσωριν σχση, αν υπρχει λθος το διαγνωστικ μνυμα σζεται σε μια ειδικ μεταβλητ (SQLCA)
Οι πλειδες του αποτελσματος γνονται διαθσιμες στο πργραμμα μσω μιας σειρς απ fetch εντολς, χρειζεται μια μεταβλητ της host γλσσας για κθε γνρισμα
EXEQ SQL fetch c into :cn$, :cc END-EXEC
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
EXEC SQL close c END-EXEC
Επσης:
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Ενσωματωμνη SQL
Δυναμικ SQL
Τα προγρμματα μπορον να δημιουργον ερωτσεις σε SQL ως συμβολοσειρς δυναμικ κατ την εκτλεση και ετε να τα εκτελον αμσως ετε να τα προετοιμζουν (τα μεταφρζουν) για να χρησιμοποιηθον αργτερα
Παρδειγμα:
where Αριθμς-Λογαριασμο = ?’’
char account[10] = “A-101’’;
Βσεις Δεδομνων 2001-2002 Ευαγγελα Πιτουρ
*
Γλσσες 4ης Γενις
ννοια του session μεταξ ενς client και του server του ΣΒΔ
Δημιουργα σχματος: create schema και
Σβσιμο σχματος : drop schema