Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ SQL (3 από 3) T Manavis.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ SQL (3 από 3) T Manavis."— Μεταγράφημα παρουσίασης:

1 1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ tmanavis@ist.edu.gr SQL (3 από 3) T Manavis

2 2 Η Γλώσσα SQL (Μέρος 3: Συναθροιστικές (Aggregate) Συναρτήσεις, Συνενώσεις, Όψεις)

3 3 Η SQL έχει 5 built-in συναθροιστικές συναρτήσεις: Μέσος όρος: avg(A) (μόνο σε αριθμούς) A γνώρισμα Ελάχιστο: min(A) Μέγιστο: max(A) Άθροισμα: sum(A) (μόνο σε αριθμούς) Πλήθος: count(A) Συναθροιστικές Συναρτήσεις (AGGREGATE Functions)

4 4 Λογαριασμός Υποκατάστημα Πελάτης Καταθέτης Δάνειο Όνομα-Υποκαταστήματος Αριθμός-Λογαριασμού Ποσό Όνομα-Πελάτη Αριθμός-Λογαριασμού Όνομα-Πελάτη Οδός Πόλη Όνομα-Υποκαταστήματος Πόλη Σύνολο Όνομα-Πελάτη Αριθμός-Δανείου Όνομα-Υποκαταστήματος Αριθμός-Δανείου Ποσό Δανειζόμενος Συναθροιστικές Συναρτήσεις

5 5 Παράδειγμα: Μέσο ποσό όλων των λογαριασμών στο υποκατάστημα ΠΛΑΙΣΙΟ select avg(Ποσό) from Λογαριασμός where Όνομα-Υποκαταστήματος = “ΠΛΑΙΣΙΟ” Το αποτέλεσμα είναι μια σχέση με ένα γνώρισμα και μια γραμμή. Μπορούμε να δώσουμε όνομα στο γνώρισμα χρησιμοποιώντας το as Συναθροιστικές Συναρτήσεις Παράδειγμα: Μέγιστο ποσό όλων των λογαριασμών στο υποκατάστημα ΠΛΑΙΣΙΟ και τον αριθμό του λογαριασμού!! select Αριθμός-Λογαριασμού, max(Ποσό) from Λογαριασμός where Όνομα-Υποκαταστήματος = “ΠΛΑΙΣΙΟ” Αν το select συναθροιστική, τότε μόνο συναθροιστικές, εκτός αν υπάρχει group by

6 6 Μπορούμε να εφαρμόσουμε τις συναρτήσεις όχι μόνο σε ένα σύνολο από πλειάδες, αλλά σε ομάδες από σύνολα πλειάδων. Οι ομάδες προσδιορίζονται χρησιμοποιώντας το group by Παράδειγμα: Μέσο ποσό των λογαριασμών σε κάθε υποκατάστημα select Όνομα-Υποκαταστήματος, avg(Ποσό) from Λογαριασμός group by Όνομα-Υποκαταστήματος Συναθροιστικές Συναρτήσεις

7 7 Αν θέλουμε να απαλείψουμε διπλές εμφανίσεις χρησιμοποιούμε τη λέξη-κλειδί distinct στην αντίστοιχη έκφραση. Παράδειγμα: Αριθμός καταθετών σε κάθε υποκατάστημα select Όνομα-Υποκαταστήματος, count(distinct Όνομα-Πελάτη) from Καταθέτης, Λογαριασμός where … group by Όνομα-Υποκαταστήματος Συναθροιστικές Συναρτήσεις

8 8 Η ομαδοποίηση μπορεί να γίνει ως προς περισσότερα του ενός πεδία. Μέσος όρος καταθέσεων ανά πελάτη και ανά υποκατάστημα SELECT Όνομα-Υποκαταστήματος, Όνομα-Πελάτη, avg(balance) FROM account GROUP BY Όνομα-Υποκαταστήματος, Όνομα-Πελάτη Ομαδοποίηση γίνεται πρώτα ως προς το branch_name. Στην συνέχεια δημιουργούνται υποoμάδες ως προς το customer_name Συναθροιστικές Συναρτήσεις

9 9 Μπορούμε να εφαρμόσουμε μια συνθήκη σε μια συγκεκριμένη ομάδα από πλειάδες χρησιμοποιώντας το having Παράδειγμα: Ονόματα υποκαταστημάτων με μέσο ποσό καταθέσεων μεγαλύτερο των $1200 select Όνομα-Υποκαταστήματος, avg(Ποσό) from Λογαριασμός group by Όνομα-Υποκαταστήματος having avg(Ποσό) > 1200 Η συνθήκη του having εφαρμόζεται αφού σχηματιστούν οι ομάδες και υπολογιστούν οι συναθροιστικές συναρτήσεις. Συναθροιστικές Συναρτήσεις

10 10 Η ακόλουθη εντολή SQL βρίσκει αν κάποιος από τους εργαζόμενους έχει κάνει περισσότερες από 10 παραγγελίες.: Επιλογή από τους πίνακες ‘Orders’ και ‘Employees’ Συναθροιστικές (‘Having’ clause)

11 11 Όταν εμφανίζονται και το where και το having: η συνθήκη του where εφαρμόζεται πρώτα, οι πλειάδες που ικανοποιούν αυτή τη συνθήκη τοποθετούνται σε ομάδες με βάση το group by και μετά αν υπάρχει συνθήκη στο having εφαρμόζεται στις ομάδες και επιλέγονται όσες ικανοποιούν τη συνθήκη Συναθροιστικές Συναρτήσεις

12 12 Παράδειγμα: Μέσο ποσό για κάθε πελάτη που ζει στα Ιωάννινα και έχει τουλάχιστον τρεις λογαριασμούς. Σειρά εκτέλεσης: 1-2-3-4 select Καταθέτης.Όνομα-Πελάτη, avg (Ποσό) from Καταθέτης, Λογαριασμός, Πελάτης where Καταθέτης.Αριθμός-Λογαριασμού = Λογαριασμός.Αριθμός-Λογαριασμού and Καταθέτης.Όνομα-Πελάτη = Πελάτης.Όνομα-Πελάτη and Πόλη = ‘Ιωάννινα” group by Καταθέτης.Όνομα-Πελάτη having count (distinct Καταθέτης.Αριθμός-Λογαριασμού) >= 3 1 2 4 3 Συναθροιστικές Συναρτήσεις

13 13 Για να μετρήσουμε πόσες πλειάδες έχει μια σχέση: select count (*) from Πελάτης Δε μπορούμε να χρησιμοποιήσουμε το distinct με το count (*). Συναθροιστικές Συναρτήσεις

14 14 Περίληψη Μέσος όρος: avg (μόνο σε αριθμούς) Ελάχιστο: min Μέγιστο: max Άθροισμα: sum (μόνο σε αριθμούς) Πλήθος: count Αν θέλουμε να απαλείψουμε διπλές εμφανίσεις χρησιμοποιούμε τη λέξη- κλειδί distinct στην αντίστοιχη έκφραση. Μπορούμε να εφαρμόσουμε μια συνθήκη σε μια συγκεκριμένη ομάδα από πλειάδες χρησιμοποιώντας το having. Η συνθήκη του having εφαρμόζεται αφού σχηματιστούν οι ομάδες και υπολογιστούν οι συναθροιστικές συναρτήσεις Μπορούμε να εφαρμόσουμε τις συναρτήσεις όχι μόνο σε ένα σύνολο από πλειάδες, αλλά σε ομάδες από σύνολα πλειάδων. Οι ομάδες προσδιορίζονται χρησιμοποιώντας το group by Συναθροιστικές Συναρτήσεις

15 15 select Α i1, Α i2,.., Α in, …, avg, … from R 1, R 2, … R m where P group by Α i1, A i2, …, A in having P order by A j1, A j2, …, A jk Βασική Δομή (επανάληψη)

16 16 Η Γλώσσα SQL (Μέρος 3:Συναθροιστικές Συναρτήσεις, Συνενώσεις, Όψεις)

17 17 Η SQL--92 υποστηρίζει διάφορους τύπους συνενώσεων που συνήθως χρησιμοποιούνται στο from, αλλά μπορούν να χρησιμοποιηθούν οπουδήποτε μπορεί να χρησιμοποιηθεί μια σχέση. Γενική σύνταξη: ή natural Συνενώσεις Συνόλων

18 18 select distinct Όνομα from Παίζει, Ταινία where Παίζει.Τίτλος = Ταινία.Τίτλος and Παίζει.Έτος = Ταινία.Έτος and Είδος = “Ασπρόμαυρη” select distinct Όνομα from (Παίζει Join Ταινία on Παίζει.Τίτλος = Ταινία.Τίτλος and Παίζει.Έτος = Ταινία.Έτος) where Είδος = “Ασπρόμαυρη” Η συνθήκη της συνένωσης στο from με χρήση του on Συνενώσεις Συνόλων

19 19 Τύποι Συνένωσης: inner join : είναι το default left outer join: αριστερή εξωτερική συνένωση right outer join : δεξιά εξωτερική συνένωση full outer join: πλήρης εξωτερική συνένωση Συνενώσεις Συνόλων

20 20 natural: φυσική συνένωση, τα γνωρίσματα εμφανίζονται στο αποτέλεσμα με την εξής διάταξη: πρώτα αυτά με τα οποία έγινε η συνένωση (δηλ., αυτά που είναι κοινά και στις δύο σχέσεις), μετά τα υπόλοιπα της πρώτης σχέσης, και τέλος τα υπόλοιπα της δεύτερης σχέσης. Παράδειγμα: Τα ονόματα των πελατών που είτε έχουν καταθέσεις είτε έχουν πάρει δάνεια (αλλά όχι και τα δύο) select Όνομα-Πελάτη from Καταθέτης natural full outer join Δανειζόμενος where Αριθμός-Λογαριασμού is null or Αριθμός-Δανείου is null Συνενώσεις Συνόλων

21 21 Η SQL-92 δίνει τη δυνατότητα μια υπο-ερώτηση να χρησιμοποιηθεί στο from Τότε πρέπει να της δοθεί ένα όνομα και τα γνωρίσματα της να μετονομαστούν Αυτό γίνεται χρησιμοποιώντας το as Παραγόμενες Σχέσεις

22 22 Η SQL-92 δίνει τη δυνατότητα χρησιμοποιώντας το as να δοθεί ένα προσωρινό όνομα σε μία προσωρινή σχέση που προκύπτει από μια υποερώτηση (subquery). Παράδειγμα: Το μέσο υπόλοιπο για όλα τα υποκαταστήματα για τα οποία το μέσο ποσό είναι μεγαλύτερο των $1200 select Όνομα-Υποκαταστήματος, Μέσο-υπόλοιπο from (select Όνομα-Υποκαταστήματος, avg(Ποσό) from Καταθέτης group by Όνομα-Υποκαταστήματος as Αποτέλεσμα(Όνομα-Υποκαταστήματος, Μέσο-υπόλοιπο) where Μέσο-Yπόλοιπο > 1200 Παραγόμενες Σχέσεις

23 23 Διαφορά από τον πίνακα που ορίζεται με create table: H όψη υπολογίζεται εκ νέου Αποθηκεύουμε τον ορισμό, όχι τον πίνακα Τροποποιήσεις μέσω όψεων Υλοποιημένη (materialized) όψη -> ο πίνακας είναι πραγματικός, όχι virtual (σε περιπτώσεις που είναι δαπανηρό να υπολογίζεται εκ νέου κάθε φορά) Όψεις

24 24 Ορισμός Όψεων (εικονικών πινάκων) Μπορούμε να ορίσουμε μια όψη χρησιμοποιώντας την εντολή: Επίσης, μπορούν να προσδιοριστούν τα ονόματα των γνωρισμάτων άμεσα create view as create view ( ) as Ορισμός Όψης Ορισμός Όψεων

25 25 Παράδειγμα: Μια όψη που περιλαμβάνει τα ονόματα όλων των υποκαταστημάτων και το άθροισμα του ποσού των δανείων που έχουν γίνει από αυτά create view Υποκατάστημα-Σύνολο-Δανείων (Όνομα- Υποκαταστήματος, Σύνολο-Δανείων) as select Όνομα-Υποκαταστήματος, sum(Ποσό) from Δάνειο group by Όνομα-Υποκαταστήματος Ορισμός Όψεων

26 26 Τα ονόματα όψεων μπορεί να χρησιμοποιηθούν οπουδήποτε μπορεί να χρησιμοποιηθεί το όνομα μιας σχέσης Υπολογίζεται εκ νέου κάθε φορά Ο ορισμός της όψης παραμένει στην βάση δεδομένων, εκτός αν σβηστεί: drop view Ορισμός Όψεων

27 Πηγές  Πανεπιστήμιο Ιωαννίνων: Σημειώσεις του μαθήματος Βάσεις Δεδομένων Ι  Εθνικό Μετσόβιο Πολυτεχνείο : Σημειώσεις του μαθήματος Βάσεις Δεδομένων Ι  Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστημίου Πατρών : Σημειώσεις του μαθήματος Βάσεις Δεδομένων Ι


Κατέβασμα ppt "1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ SQL (3 από 3) T Manavis."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google