Βάσεις Δεδομένων Ι Ενότητα 7: H γλώσσα SQL Γεωργία Γκαράνη Επίκουρος Καθηγήτρια Τμήμα Μηχανικών Πληροφορικής Τ.Ε. T.E.I. Θεσσαλίας.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ
Advertisements

Πανεπιστήμιο Δυτικής Μακεδονίας Πανεπιστήμιο Δυτικής Μακεδονίας Παιδαγωγικό Τμήμα Νηπιαγωγών Τίτλος Μαθήματος Ενότητα # (bold): Τίτλος Ενότητας (normal)
Δρ. Παναγιώτης Συμεωνίδης
Ορισμοί Σχεσιακού Μοντέλου και (απλές)Τροποποιήσεις Σχέσεων στην SQL
-17 Προσδοκίες οικονομικής ανάπτυξης στην Ευρώπη Σεπτέμβριος 2013 Δείκτης > +20 Δείκτης 0 a +20 Δείκτης 0 a -20 Δείκτης < -20 Σύνολο στην Ευρωπαϊκή Ένωση:
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
Ηλεκτρονική Ενότητα 5: DC λειτουργία – Πόλωση του διπολικού τρανζίστορ
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
9 Η Γλώσσα SQL Ορισμός Δεδομένων (data definition)
Βάσεις Δεδομένων II Ενότητα 3: Σχεσιακός λογισμός I Γεωργία Γκαράνη Επίκουρος Καθηγήτρια Τμήμα Μηχανικών Πληροφορικής Τ.Ε. T.E.I. Θεσσαλίας.
Βάσεις Δεδομένων II Ενότητα 4: Σχεσιακός λογισμός II Γεωργία Γκαράνη Επίκουρος Καθηγήτρια Τμήμα Μηχανικών Πληροφορικής Τ.Ε. T.E.I. Θεσσαλίας.
Βάσεις Δεδομένων II Ενότητα 5: Απόψεις Γεωργία Γκαράνη Επίκουρος Καθηγήτρια Τμήμα Μηχανικών Πληροφορικής Τ.Ε. T.E.I. Θεσσαλίας.
ανώτερες κανονικές μορφές
Βάσεις Δεδομένων Ι Ενότητα 9: Πρόσθετη κανονικοποίηση: κανονικές μορφές 1 η, 2 η, 3 η και ΚΜ-BC Γεωργία Γκαράνη Επίκουρος Καθηγήτρια Τμήμα Μηχανικών Πληροφορικής.
Τμήμα Μηχανικών Πληροφορικής Τ.Ε.
Βάσεις Δεδομένων Ι Ενότητα 4: Σχεσιακά αντικείμενα δεδομένων: πεδία ορισμού και σχέσεις Γεωργία Γκαράνη Επίκουρος Καθηγήτρια Τμήμα Μηχανικών Πληροφορικής.
Βάσεις Δεδομένων II Ενότητα 8: Ασφάλεια Γεωργία Γκαράνη Επίκουρος Καθηγήτρια Τμήμα Μηχανικών Πληροφορικής Τ.Ε. T.E.I. Θεσσαλίας.
Βάσεις Δεδομένων I Ενότητα 6: Σχεσιακή Άλγεβρα Γεωργία Γκαράνη
Τμήμα Μηχανικών Πληροφορικής Τ.Ε.,
Κατανεμημένα Συστήματα με Java Ενότητα # 5: Εκλογή αρχηγού Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής.
Ποιότητα Λογισμικού Ενότητα 3: Σουίτες Ελέγχων. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL.
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Βάσεις Δεδομένων Ι Ενότητα 3: Εισαγωγή στις σχεσιακές βάσεις δεδομένων Γεωργία Γκαράνη Επίκουρος Καθηγήτρια Τμήμα Μηχανικών Πληροφορικής Τ.Ε. T.E.I. Θεσσαλίας.
1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ SQL (3 από 3) T Manavis.
9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων  Χειρισμός Δεδομένων.
9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων (data definition)  Χειρισμός Δεδομένων (data manipulation)
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Η Γλώσσα SQL.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Εκπαιδευτικά Προγράμματα με Χρήση Η/Υ ΙΙ Θέμα «παιγνίδια» (website address) Διδάσκουσα: Καθηγήτρια Τζένη.
Ενότητα 7 : Χρήση Πινάκων στο Ηλεκτρονικό εμπόριο (I) Ιωάννης Τσούλος
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
Βάσεις Δεδομένων Ι 4η διάλεξη
ΟΙΚΟΝΟΜΙΚΑ ΤΟΥ ΕΛΕΓΧΟΥ ΤΗΣ ΡΥΠΑΝΣΗΣ
Επικοινωνιακός Προγραμματισμός Ι
Ενότητα 5 : Δομές Δεδομένων και αφηρημένοι
Χρονικός Προγραμματισμός Έργων (Εργαστήριο)
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων
Διαχείριση Κινδύνου Ενότητα 7: Παρακολούθηση Κινδύνων.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ενότητα 13 Αξιολόγηση μαθήματος και διδάσκοντος από την εφαρμογή της Μονάδας Ολικής Ποιότητας (ΜΟΔΙΠ) του ΤΕΙ Αθήνας Αξιολόγηση του μαθήματος Αξιολόγηση.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Περιγραφή Ενότητας Σκοπός του μαθήματος είναι η παρουσίαση δηλώσεων SQL που περιλαμβάνουν EXIST, ANY, ALL. Χ. Σκουρλάς.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(3)
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ενότητα 2 : Το σύστημα βάσεων δεδομένων MySQL (II) Ιωάννης Τσούλος
Βάσεις Δεδομένων Ι 8η διάλεξη
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Επικοινωνιακός Προγραμματισμός Ι
Γενική και Μαθηματική Χαρτογραφία (Ε)
Βάσεις Δεδομένων και web-based Εφαρμογές
Επικοινωνιακός Προγραμματισμός Ι
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(5)
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων
ΑΝΑΓΝΩΡΙΣΗ ΠΡΟΤΥΠΩΝ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ενότητα 1: ……………….. Όνομα Επώνυμο Τμήμα __
Ενότητα # 5: Περιορισμοί ακεραιότητας
ΠΑΡΑΔΕΙΓΜΑΤΑ SQL Ή ΠΑΡΑΔΕΙΓΜΑΤΑ SQL Ή
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Επικοινωνιακός Προγραμματισμός Ι
Μεταγράφημα παρουσίασης:

Βάσεις Δεδομένων Ι Ενότητα 7: H γλώσσα SQL Γεωργία Γκαράνη Επίκουρος Καθηγήτρια Τμήμα Μηχανικών Πληροφορικής Τ.Ε. T.E.I. Θεσσαλίας

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Θεσσαλίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Σκοποί ενότητας  Παρουσίαση και εξοικείωση με τη σχεσιακή γλώσσα ερωτημάτων, SQL με τη βοήθεια παραδειγμάτων και ασκήσεων. Σημείωση: Οι διαφάνειες βασίζονται στο σύγγραμμα: C. J. Date. Εισαγωγή στα Συστήματα Βάσεων Δεδομένων. 6 η έκδοση, Κλειδάριθμος, H γλώσσα SQL 4

Περιεχόμενα ενότητας  Ορισμός δεδομένων, Ορισμός δεδομένων,  Χειρισμός δεδομένων: πράξεις ανάκλησης, Χειρισμός δεδομένων: πράξεις ανάκλησης,  Χειρισμός δεδομένων: πράξεις ενημέρωσης. Χειρισμός δεδομένων: πράξεις ενημέρωσης. H γλώσσα SQL 5

Ορισμός δεδομένων CREATE DOMAIN ALTER DOMAIN DROP DOMAIN CREATE TABLE ALTER TABLE DROP TABLE H γλώσσα SQL 6

Εντολή δημιουργίας πεδίου ορισμού CREATE DOMAIN πεδίο-ορισμού τύπος δεδομένων [ορισμός-προεπιλογής] [λίστα - ορισμών - δεσμεύσεων - πεδίου - ορισμού]; H γλώσσα SQL 7

Τύποι δεδομένων Η SQL υποστηρίζει τους παρακάτω βαθμωτούς τύπους δεδομένων: CHARACTER (n) INTEGER DATE BIT (n) SMALLINT TIME NUMERIC FLOAT TIMESTAMP DECIMAL INTERVAL H γλώσσα SQL 8

Επεξήγηση  O προαιρετικός ορισμός-προεπιλογής καθορίζει μια προεπιλεγμένη τιμή η οποία εφαρμόζεται σε κάθε στήλη που ορίζεται σε αυτό το πεδίο ορισμού και δεν έχει δική της ρητή προεπιλεγμένη τιμή. Έχει τη μορφή “DEFAULT προεπιλογή”, όπου η προεπιλογή με τη σειρά της είναι μια κυριολεκτική τιμή, μια αναφορά σε μια ενσωματωμένη συνάρτηση χωρίς ορίσματα (π.χ. CURRENT_DATE) ή ένα NULL.  H προαιρετική λίστα ορισμών-δεσμεύσεων-πεδίου-ορισμού καθορίζει ένα σύνολο από δεσμεύσεις που εφαρμόζονται σε κάθε στήλη η οποία ορίζεται σε αυτό το πεδίο ορισμού. H γλώσσα SQL 9

Παράδειγμα εντολής δημιουργίας πεδίου ορισμού CREATE DOMAIN COLOR CHAR(6) DEFAULT ‘???’ CONSTRAINT VALID_COLORS CHECK (VALUE IN (‘Red’, ‘Yellow’, ‘Blue’, ‘Green’, ‘???’)); H γλώσσα SQL 10

Εντολή τροποποίησης πεδίου ορισμού Alter domain Επιτρέπει να δοθεί ένας νέος ορισμός προεπιλεγμένης τιμής για ένα υπάρχον πεδίο ορισμού (που αντικαθιστά τον προηγούμενο, αν υπάρχει) ή να διαγραφεί ένας υπάρχων ορισμός προεπιλεγμένης τιμής. Επιτρέπει επίσης να καθοριστεί μια νέα δέσμευση ακεραιότητας για ένα υπάρχων πεδίο ορισμού ή να διαγραφεί μια υπάρχουσα δέσμευση ακεραιότητας. H γλώσσα SQL 11

Εντολή κατάργησης πεδίου ορισμού DROP DOMAIN πεδίο-ορισμού επιλογή; όπου η επιλογή μπορεί να είναι RESTRICT (περιορισμός διάδοσης) ή CASCADE (αλυσιδωτή διάδοση) H γλώσσα SQL 12

Βασικές διαφορές μεταξύ SQL και γνήσιων σχέσεων 1.Οι πίνακες της SQL επιτρέπεται να περιέχουν επαναλαμβανόμενες γραμμές, επομένως δεν έχουν οπωσδήποτε υποψήφια κλειδιά. 2.Οι πίνακες της SQL θεωρείται ότι έχουν διάταξη από τα αριστερά προς τα δεξιά. H γλώσσα SQL 13

Εντολή δημιουργίας βασικού πίνακα (1 από 2) CREATE TABLE βασικός-πίνακας (λισκομ-στοιχείων-βασικού-πίνακα); όπου το κάθε στοιχείο βασικού-πίνακα είναι είτε ένας ορισμός-στήλης είτε ένας ορισμός-δέσμευσης- βασικού-πίνακα. Ο κάθε ορισμός-στήλης με τη σειρά του (πρέπει να υπάρχει τουλάχιστον ένας), έχει την εξής μορφή: στήλη αναπαράσταση [ορισμός-προεπιλογής]. H γλώσσα SQL 14

Εντολή δημιουργίας βασικού πίνακα (2 από 2) Εδώ, η αναπαράσταση προσδιορίζει το σχετικό τύπο δεδομένων ή πεδίο ορισμού και ο προαιρετικός ορισμός-προεπιλογής καθορίζει μια προεπιλεγμένη τιμή για τη στήλη, που υποσκελίζει οποιαδήποτε προεπιλεγμένη τιμή έχει καθοριστεί στο επίπεδο του πεδίου ορισμού, αν υπάρχει. Κάθε ορισμός-δέσμευσης-βασικού-πίνακα είναι ένα από τα παρακάτω:  ορισμός υποψήφιου κλειδιού  ορισμός ξένου κλειδιού  ορισμός «δέσμευσης ελέγχου» H γλώσσα SQL 15

Εντολή δημιουργίας υποψήφιου κλειδιού UNIQUE (λισκομ-στηλών) ή τη μορφή PRIMARY KEY (λισκομ-στηλών) H γλώσσα SQL 16

Εντολή δημιουργίας ξένου κλειδιού FOREIGN KEY (λισκομ-στηλών) REFERENCES βασικός-πίνακας [(λισκομ-στηλών)] [ON DELETE επιλογή] [ON UPDATE επιλογή] όπου η επιλογή μπορεί να είναι:  NO ACTION (καμιά ενέργεια)  CASCADE (αλυσιδωτή διάδοση)  SET DEFAULT (καθορισμός προεπιλεγμένης τιμής)  SET NULL (καθορισμός null) H γλώσσα SQL 17

Εντολή ορισμού δέσμευσης ελέγχου Ένας ορισμός δέσμευσης ελέγχου έχει τη μορφή: CHECK (παράσταση-συνθήκης). H γλώσσα SQL 18

Παράδειγμα εντολής δημιουργίας βασικού πίνακα CREATE TABLE SP (S# NOT NULL, P# NOT NULL, QTY NOT NULL, PRIMARY KEY (S#, P#), FOREIGN KEY (S#) REFERENCES S ON DELETE CASCADE, ON UPDATE CASCADE, FOREIGN KEY (P#) REFERENCES P ON DELETE CASCADE ON UPDATE CASCADE, CHECK (QTY > 0 AND QTY < 5001)); H γλώσσα SQL 19

Εντολή τροποποίησης βασικού πίνακα Alter table Τροποποιεί βασικούς πίνακες. Υποστηρίζονται οι εξής αλλαγές: Μπορεί να προστεθεί μια νέα στήλη, Μπορεί να διαγραφεί μια υπάρχουσα στήλη, Μπορεί να οριστεί μια νέα προεπιλεγμένη τιμή για μια υπάρχουσα στήλη, Μπορεί να διαγραφεί μια υπάρχουσα προεπιλεγμένη τιμή στήλης, Μπορεί να καθοριστεί μια νέα δέσμευση ακεραιότητας βασικού πίνακα, Μπορεί να διαγραφεί μια υπάρχουσα δέσμευση ακεραιότητας βασικού πίνακα. H γλώσσα SQL 20

Παράδειγμα εντολή τροποποίησης βασικού πίνακα ALTER TABLE S ADD COLUMN DISCOUNT INTEGER DEFAULT –1 H γλώσσα SQL 21

Εντολή κατάργησης βασικού πίνακα DROP TABLE βασικός-πίνακας επιλογή όπου η επιλογή μπορεί να είναι: RESTRICT ή CASCADE. H γλώσσα SQL 22

Χειρισμός δεδομένων: πράξεις ανάκλησης SELECT H γλώσσα SQL 23

Επαναλαμβανόμενες γραμμές Η SQL δεν απαλείφει τις επαναλαμβανόμενες γραμμές που πλεονάζουν από το αποτέλεσμα μιας εντολής SELECT, εκτός αν ο χρήστης ζητήσει ρητά να γίνει αυτό, με τη λέξη κλειδί DISTINCT (ΔΙΑΚΕΚΡΙΜΕΝΕΣ ΓΡΑΜΜΕΣ). H γλώσσα SQL 24

Διάταξη γραμμών Η φράση ORDER BY (διάταξη κατά) έχει τη μορφή ORDER BY λισκομ-στοιχείων-διάταξης Όπου (α) η λισκομ πρέπει να μην είναι κενή και (β) το κάθε στοιχείο-διάταξης αποτελείται από ένα όνομα στήλης χωρίς προσδιοριστικό που ακολουθείται από τη λέξη κλειδί ASC (αύξουσα σειρά) ή DESC (φθίνουσα σειρά), αντίστοιχα και το ASC είναι η προεπιλογή. H γλώσσα SQL 25

Παραδείγματα (1 από 14) 1. Να βρεθεί το χρώμα και η πόλη για τα εξαρτήματα που δεν είναι από το Παρίσι και έχουν βάρος μεγαλύτερο από δέκα. SELECT P.COLOR, P.CITY FROM P WHERE P.CITY <> ‘PARIS’ AND P.WEIGHT > 10 SELECT DISTINCT P.COLOR, P.CITY FROM P WHERE P.CITY <> ‘PARIS’ AND P.WEIGHT > 10 ORDER BY CITY DESC; H γλώσσα SQL 26

Παραδείγματα (2 από 14) 2. Για όλα τα εξαρτήματα, να βρεθεί ο κωδικός και το βάρος του εξαρτήματος σε γραμμάρια. SELECT P.P#, P.WEIGHT * 454 AS GMWT FROM P 3. Να βρεθούν όλες οι λεπτομέρειες για όλους τους προμηθευτές. SELECT * FROM S H γλώσσα SQL 27

Παραδείγματα (3 από 14) 4. Να βρεθούν όλοι οι συνδυασμοί πληροφοριών προμηθευτών και εξαρτημάτων που είναι τέτοιοι ώστε ο προμηθευτής και το εξάρτημα να έχουν κοινό τόπο. α) SELECT S.S#, S.SNAME, S.STATUS, S.CITY, P.P#, P.PNAME, P.COLOR, P.WEIGHT FROM S, P WHERE S.CITY=P.CITY β) S JOIN P USING CITY γ) S NATURAL JOIN P H γλώσσα SQL 28

Παραδείγματα (4 από 14) 5. Να βρεθούν όλα τα ζεύγη ονομάτων πόλεων που είναι τέτοια ώστε ένας προμηθευτής που βρίσκεται στην πρώτη πόλη να διαθέτει ένα εξάρτημα που είναι αποθηκευμένο στη δεύτερη πόλη. SELECT DISTINCT S.CITY AS SCITY, P.CITY AS PCITY FROM S, P, SP WHERE S.S#=SP.S# AND P.P#=SP.P# H γλώσσα SQL 29

Παραδείγματα (5 από 14) 6. Να βρεθούν όλα τα ζεύγη κωδικών προμηθευτών που είναι τέτοια ώστε οι δύο προμηθευτές να έχουν κοινό τόπο. SELECT FIRST.S# AS SA, SECOND.S# AS SB FROM S AS FIRST, S AS SECOND WHERE FIRST.CITY = SECOND.CITY AND FIRST.S# < SECOND.S# H γλώσσα SQL 30

Παραδείγματα (6 από 14) 7. Να βρεθεί ο συνολικός αριθμός των προμηθευτών. SELECT COUNT(*) AS N FROM S 8. Να βρεθούν η μέγιστη και η ελάχιστη ποσότητα του εξαρτήματος Ρ2. SELECT MAX (SP.QTY) AS MAXQ, MIN (SP.QTY) AS MINQ FROM SP WHERE SP.P# = ‘P2’ H γλώσσα SQL 31

Παραδείγματα (7 από 14) 9. Για το κάθε εξάρτημα που διατίθεται, να βρεθεί ο κωδικός του εξαρτήματος και η συνολική ποσότητα αποστολής. α) SELECT SP.P#, SUM (SP.QTY) AS TOTQTY FROM SP GROUP BY SP.P# β) SELECT P.P#, (SELECT SUM (SP.QTY) FROM SP WHERE SP.P# = P.P#) AS TOTQTY FROM P H γλώσσα SQL 32

Παραδείγματα (8 από 14) 10. Να βρεθούν οι κωδικοί εξαρτημάτων για όλα τα εξαρτήματα που διατίθενται από περισσότερους από έναν προμηθευτές. SELECT SP.P# FROM SP GROUP BY SP.P# HAVING COUNT (SP.S#) > 1 Η εντολή HAVING είναι για τις ομάδες ότι είναι η φράση WHERE για τις γραμμές. H γλώσσα SQL 33

Παραδείγματα (9 από 14) 11. Να βρεθούν τα ονόματα των προμηθευτών που διαθέτουν το εξάρτημα Ρ2. 1ος τρόπος: SELECT DISTINCT S.SNAME FROM S WHERE S.S# IN (SELECT SP.S# FROM SP WHERE SP.P# = ‘P2’) Αυτό το παράδειγμα χρησιμοποιεί ένα υποερώτημα. 2ος τρόπος: SELECT DISTINCT S.SNAME FROM S, SP WHERE S.S#=SP.S# AND SP.P#=’P2’ H γλώσσα SQL 34

Παραδείγματα (10 από 14) 12. Να βρεθούν τα ονόματα των προμηθευτών που διαθέτουν τουλάχιστον ένα κόκκινο εξάρτημα. SELECT DISTINCT S.SNAME FROM S WHERE S.S# IN (SELECT SP.S# FROM SP WHERE SP.P# IN (SELECT P.P# FROM P WHERE P.COLOR = ‘Red’)) H γλώσσα SQL 35

Παραδείγματα (11 από 14) 13. Να βρεθούν οι κωδικοί των προμηθευτών που έχουν αξιολόγηση (STATUS) μικρότερη από την τρέχουσα μέγιστη τιμή αξιολόγησης στον πίνακα S. SELECT S.S# FROM S WHERE S.STATUS < (SELECT MAX (S.STATUS) FROM S) H γλώσσα SQL 36

Παραδείγματα (12 από 14) 14. Να βρεθούν τα ονόματα των προμηθευτών που διαθέτουν το εξάρτημα Ρ2. SELECT DISTINCT S.SNAME FROM S WHERE EXISTS (SELECT * FROM SP WHERE SP.S#=S.S# AND SP.P#=’P2’) H γλώσσα SQL 37

Παραδείγματα (13 από 14) 15. Να βρεθούν τα ονόματα των προμηθευτών που δε διαθέτουν το εξάρτημα Ρ2. SELECT DISTINCT S.SNAME FROM S WHERE NOT EXISTS (SELECT * FROM SP WHERE SP.S#=S.S# AND SP.P#=’P2’) H γλώσσα SQL 38

Παραδείγματα (14 από 14) 16. Να βρεθούν οι κωδικοί των εξαρτημάτων που είτε ζυγίζουν πάνω από 16 λίβρες, είτε διατίθενται από τον προμηθευτή P2, είτε και τα δύο. SELECT P.P# FROM P WHERE P.WEIGHT > 16 UNION SELECT SP.P# FROM SP WHERE SP.S# = ‘S2’ H γλώσσα SQL 39

Χειρισμός δεδομένων: πράξεις ενημέρωσης Η γλώσσα χειρισμού δεδομένων της SQL περιλαμβάνει τρεις πράξεις ενημέρωσης:  Insert (εισαγωγή)  Update (ενημέρωση)  Delete (διαγραφή) H γλώσσα SQL 40

Εισαγωγή δεδομένων (1 από 2) INSERT: εισαγωγή μεμονωμένης γραμμής INSERT INTO P (P#, PNAME, COLOR, WEIGHT, CITY) VALUES (‘P8’, ‘Sprocket’, ‘Pink’, 14, ‘Nice’) H γλώσσα SQL 41

Εισαγωγή δεδομένων (2 από 2) INSERT: εισαγωγή πολλών γραμμών INSERT INTO TEMP (S#, CITY) SELECT S.S#, S.CITY FROM S WHERE S.STATUS > 15 H γλώσσα SQL 42

Ενημέρωση δεδομένων (1 από 2) UPDATE: ενημέρωση πολλών γραμμών UPDATE P SET COLOR=’Yellow’ WEΙGHT=P.WEIGHT+5 WHERE P.CITY = ‘Paris’ H γλώσσα SQL 43

Ενημέρωση δεδομένων (2 από 2) UPDATE: ενημέρωση πολλών γραμμών UPDATE P SET CITY = (SELECT S.CITY FROM S WHERE S.S#=’S5’) WHERE P.CITY = ‘Paris’ H γλώσσα SQL 44

Διαγραφή δεδομένων DELETE: διαγραφή πολλών γραμμών DELETE FROM SP WHERE ‘London’ = (SELECT S.CITY FROM S WHERE S.S#=SP.S#) H γλώσσα SQL 45

Ένα ολοκληρωμένο παράδειγμα (1 από 2) Για όλα τα κόκκινα και μπλε εξαρτήματα για τα οποία η συνολική ποσότητα που διατέθηκε είναι μεγαλύτερη από 350 και εξαιρώντας από το σύνολο όλες τις αποστολές που η ποσότητά τους είναι μικρότερη ή ίση με 200, να βρεθεί ο κωδικός εξαρτήματος, το βάρος σε γραμμάρια, το χρώμα και η μέγιστη ποσότητα που διατέθηκε από αυτό το εξάρτημα. H γλώσσα SQL 46

Ένα ολοκληρωμένο παράδειγμα (2 από 2) SELECT P.P#, ‘Bάρος σε γραμμάρια =’ AS TEXT1, P.WEIGHT * 454 AS GMWT, P.COLOR, ‘Μέγιστη ποσότητα =’ AS TEXT2, MAX (SP.QTY) AS MQY FROM P, SP WHERE P.P# = SP.P# AND (P.COLOR = ‘Red’ OR P.COLOR = ‘Blue’) AND SP.QTY > 200 GROUP BY P.P#, P.WEIGHT, P.COLOR HAVING SUM (SP.QTY) > 350 H γλώσσα SQL 47

Συνθήκες “all ή any” (1 από 2) Μια συνθήκη «όλα ή οποιαδήποτε» δίνει ως αποτέλεσμα την τιμή αληθές αν και μόνο αν η αντίστοιχη σύγκριση χωρίς το ALL (ή αντίστοιχα χωρίς το ANY) δίνει ως αποτέλεσμα την τιμή αληθές για όλες τις γραμμές (ή αντίστοιχα για οποιαδήποτε από τις γραμμές) του πίνακα που αντιπροσωπεύει η παράσταση-πίνακα. (Αν ο πίνακας είναι κενός, τότε οι συνθήκες ALL δίνουν ως αποτέλεσμα την τιμή αληθές και οι συνθήκες ANY την τιμή ψευδές). H γλώσσα SQL 48

Συνθήκες “all ή any” (2 από 2) Παράδειγμα: Να βρεθούν τα ονόματα των εξαρτημάτων που το βάρος τους είναι μεγαλύτερο από το βάρος κάθε μπλε εξαρτήματος. SELECT DISTINCT PX.PNAME FROM P AS PX WHERE PX.WEIGHT > ALL (SELECT PY.WEIGHT FROM P AS PY WHERE PY.COLOR= ‘Blue’) H γλώσσα SQL 49

Η βάση δεδομένων προμηθευτών και εξαρτημάτων S#SNAMESTATUSCITY S1Smith20London S2Jones10Paris S3Blake30Paris S4Clark20London S5Adams30Athens P#PNAMECOLORWEIGHTCITY P1NutRed12London P2BoltGreen17Paris P3ScrewBlue17Rome P4ScrewRed14London P5CamBlue12Paris P6CogRed19London S#P#QTY S1P1300 S1P2200 S1P3400 S1P4200 S1P5100 S1P6100 S2P1300 S2P2400 S3P2200 S4P2200 S4P4300 S4P5400 S SP P H γλώσσα SQL 50

Τέλος Ενότητας Επεξεργασία υλικού: Χαρτώνας Αλέξανδρος