Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL...

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

Transcript of Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL...

Page 1: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Η SQL ως γλώσσα ερωτημάτων

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

Page 2: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Η γλώσσα SQL

Η SQL αποτελείται από:

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

DML (Data Manipulation Language) - ορισμός, δημιουργία, τροποποίηση, διαγραφή και επιλογή δεδομένων (γλώσσα ερωτημάτων).

Προδιαγραφές ασφάλειας - χρήστες και δικαιώματα.

Page 3: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Βασική Δομή

Βασική Δομή

select Α1, Α2, .., Αn from R1, R2, … Rm where P

Μια χαρακτηριστική ερώτηση σε SQL έχει την εξής μορφή:

ονόματα σχέσεων

ονόματα γνωρισμάτων

συνθήκη

Στη Select μπαίνουν τα γνωρίσματα που θέλουμε να υπάρχουν στο αποτέλεσμα της ερώτησης.

Page 4: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

4

Βασική Δομή (from)

select Α1, Α2, .., Αn from R1, R2, ...,Rn

Το from αντιστοιχεί στην πράξη του καρτεσιανού γινομένου της σχεσιακής άλγεβρας. Αυτό σημαίνει ότι θα μας εμφανίσει όλους τους συνδυασμούς, κάθε πλειάδας του R1 με όλες τις πλειάδες του R2 (π.χ. αν έχουμε 2 πίνακες στο from, τον R1 με 10 εγγραφές και τον R2 με 5 εγγραφές, θα εμφανιστούν 50 εγγραφές). Συνήθως όμως θέλουμε να εμφανίζονται μόνο οι σχετιζόμενες εγγραφές, και αυτό γίνεται με χρήση της where, ώστε να συνδεθούν οι σχετιζόμενοι πίνακες μέσω των ξένων κλειδιών

Page 5: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

5

select (where) select Α1, Α2, .., Αn from R1, R2, … Rm where P

• Η συνθήκη P περιέχει γνωρίσματα των σχέσεων που εμφανίζονται στο from.

• Δεν είναι υποχρεωτικό τα γνωρίσματα αυτά να περιέχονται στο select.

• Θα εμφανιστούν μόνο όσες πλειάδες ικανοποιούν τη συνθήκη P.

• Όταν δεν υπάρχει το where, το P θεωρείται ότι είναι αληθές πάντα, άρα θα εμφανιστούν όλες οι πλειάδες

• ΠΡΟΣΟΧΗ: Δε γίνεται απαλοιφή των διπλών εμφανίσεων.

Page 6: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Βασική Δομή

Παράδειγμα:

select Όνομα from Παίζει where Τίτλος = ‘Gone by the Wind’

Ονόματα ηθοποιών που παίζουν στην ταινία “Gone by the Wind”

Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού)

Page 7: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Παράδειγμα: Select

Παράδειγμα: Ονόματα όλων των ηθοποιών που έχουν παίξει σε ταινίες

Select

select Όνομα from Παίζει

Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού)

Page 8: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Select

• Η SQL επιτρέπει πολλαπλές εμφανίσεις της ίδιας πλειάδας σε μια σχέση. • Όταν δεν θέλουμε να εμφανίζονται ίδιες γραμμές στα αποτελέσματα της select, χρησιμοποιούμε το distinct:

Απαλοιφή διπλών εμφανίσεων: Distinct

select distinct Όνομα from Παίζει

select * from Παίζει

Επιλογή όλων των γνωρισμάτων:

Page 9: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Select

select Τίτλος, Έτος, Διάρκεια / 60, Είδος from Ταινία

Επιστρέφει μια σχέση ίδια με τη σχέση Ταινία μόνο που το γνώρισμα διάρκεια μας δίνει τις ώρες (έχει διαιρεθεί με το 60)

Αριθμητικές πράξεις (+, -, *, /) ανάμεσα σε σταθερές ή γνωρίσματα πλειάδων

Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού)

Page 10: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Εγγραφές που πληρούν κάποια Συνθήκη

Where

Παράδειγμα: Τον τίτλο όλων των ταινιών που γυρίστηκαν μετά το 1995 και είναι ασπρόμαυρες

select Τίτλος from Ταινία where Έτος > 1995 and Είδος = ‘Ασπρόμαυρη’

Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού)

Page 11: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

συνθήκη - where

Λογικοί τελεστές: and, or, not Τελεστές σύγκρισης: <, <=, >, >=, =, <>, between …. and …. , not between …. and …. Εφαρμόζονται σε αριθμητικές εκφράσεις και αλφαριθμητικά.

Where

Page 12: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Where

Παράδειγμα χρήσης του between :

select Τίτλος from Ταινία where Έτος between 1990 and 1995

select Τίτλος from Ταινία where Έτος >= 1990 and Έτος <= 1995

αντί του

Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού)

Page 13: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Εμφάνιση δεδομένων από σχετιζόμενους πίνακες:

• Όταν το ίδιο γνώρισμα εμφανίζεται σε περισσότερους από έναν πίνακες (από αυτούς που εμφανίζονται στο from), τότε αναφερόμαστε στο πεδίο ως εξής: <όνομα-πίνακα>.<όνομα-γνωρίσματος> Παράδειγμα: Να εμφανίζει τους ηθοποιούς που έχουν παίξει

σε ασπρόμαυρες ταινίες

select distinct Όνομα from Παίζει, Ταινία where Παίζει.Τίτλος = Ταινία.Τίτλος and Παίζει.Έτος = Ταινία.Έτος and Είδος = ‘Ασπρόμαυρη’

Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού)

Page 14: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Παραδείγματα για εξάσκηση:

• Τις έγχρωμες ταινίες (τίτλο, έτος) με διάρκεια μέχρι 80 λεπτά

• τους ηθοποιούς που γεννήθηκαν μετά το 1935 και έπαιξαν σε ασπρόμαυρες ταινίες πριν το 1950

Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού)

Page 15: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Αναζήτηση με χαρακτήρες μπαλαντέρ

Χρήση του like αντί του ‘=‘ % οποιοαδήποτε ακολουθία χαρακτήρων _ ένας οποιοσδήποτε χαρακτήρας Παράδειγμα: Οι τίτλοι όλων των ταινιών που περιέχουν τη λέξη «planet» ή αποτελείται από 3 χαρακτήρες

select distinct Τίτλος from Ταινία where Τίτλος like “%planet%” or Τίτλος like “%planet%”

Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού)

Page 16: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Διάταξη των Πλειάδων

select distinct Ταινία, Έτος from Παίζει where Όνομα = ‘Robert De Niro’ order by Έτος

Χρήση του order by ώστε οι πλειάδες στο αποτέλεσμα να είναι ταξινομημένες με βάση τo αντίστοιχο γνώρισμα

Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού)

Page 17: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Διάταξη των Πλειάδων

Default: αύξουσα διάταξη, αλλά και άμεσα χρησιμοποιώντας το asc (αύξουσα) ή το desc (φθίνουσα). Επίσης, ταξινόμηση με βάση πολλά γνωρίσματα: Όσες εγγραφές έχουν ίδια τιμή στο 1ο κριτήριο ταξινομούνται με βάση το 2ο, κ.ο.κ.

Παράδειγμα: select * from Ταινία order by Έτος desc, Τίτλος asc

Η ταξινόμηση είναι δαπανηρή λειτουργία.

Page 18: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Συναθροιστικές Συναρτήσεις

Aggregate Functions

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

Page 19: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Η ΒΔ «Τράπεζα» (Για τα ακόλουθα παραδείγματα εφαρμογών της SQL)

Λογαριασμός

Υποκατάστημα

Πελάτης

Καταθέτης

Δάνειο

Όνομα_Υποκαταστήματος Αριθμός_Λογαριασμού Ποσό

Όνομα_Πελάτη Αριθμός_Λογαριασμού

Όνομα_Πελάτη Οδός Πόλη

Όνομα_Υποκαταστήματος Πόλη Σύνολο

Όνομα_Πελάτη Αριθμός_Δανείου

Όνομα_Υποκαταστήματος Αριθμός_Δανείου Ποσό

Δανειζόμενος

Page 20: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Συναθροιστικές Συναρτήσεις

Παράδειγμα: Μέσο ποσό όλων των λογαριασμών στο υποκατάστημα της Σπάρτης

select avg(Ποσό) from Λογαριασμός where Όνομα_Υποκαταστήματος = ‘Σπάρτη’

Το αποτέλεσμα είναι μια σχέση με ένα γνώρισμα και μια γραμμή, μπορούμε να δώσουμε όνομα στο γνώρισμα χρησιμοποιώντας το as

Page 21: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Συναθροιστικές Συναρτήσεις

Παράδειγμα: Μέγιστο ποσό όλων των λογαριασμών στο υποκατάστημα Σπάρτης και τον αριθμό του λογαριασμού!!

select Αριθμός_Λογαριασμού, max(Ποσό) from Λογαριασμός where Όνομα_Υποκαταστήματος = ‘Σπάρτη’

Αν στο select έχουμε συναθροιστική/ές, επιτρέπονται και γνωρίσματα μόνο αν αυτά μπουν και στο group by

Page 22: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Συναθροιστικές Συναρτήσεις

Μπορούμε να εφαρμόσουμε τις συναρτήσεις όχι μόνο σε ένα σύνολο από πλειάδες, αλλά σε ομάδες από σύνολα πλειάδων. Οι ομάδες προσδιορίζονται χρησιμοποιώντας το group by

Παράδειγμα: Μέσο ποσό των λογαριασμών σε κάθε υποκατάστημα select Όνομα_Υποκαταστήματος, avg(Ποσό) from Λογαριασμός group by Όνομα_Υποκαταστήματος

Page 23: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Συναθροιστικές Συναρτήσεις

Αν θέλουμε να μην ληφθούν υπόψη οι διπλές εμφανίσεις χρησιμοποιούμε τη λέξη-κλειδί distinct στην αντίστοιχη έκφραση.

Παράδειγμα: Αριθμός καταθετών σε κάθε υποκατάστημα

select Όνομα_Υποκαταστήματος, count(distinct Όνομα_Πελάτη) from Καταθέτης, Λογαριασμός where … group by Όνομα_Υποκαταστήματος

Page 24: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Συναθροιστικές Συναρτήσεις

Η ομαδοποίηση μπορεί να γίνει ως προς περισσότερα του ενός πεδία.

Μέσος όρος καταθέσεων ανά πελάτη και ανά υποκατάστημα SELECT Όνομα_Υποκαταστήματος, Όνομα_Πελάτη, avg(balance) FROM account GROUP BY Όνομα_Υποκαταστήματος, Όνομα_Πελάτη

Page 25: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Συναθροιστικές Συναρτήσεις

Μπορούμε να εφαρμόσουμε μια συνθήκη σε μια συγκεκριμένη ομάδα από πλειάδες χρησιμοποιώντας το having

Παράδειγμα: Ονόματα υποκαταστημάτων με μέσο ποσό καταθέσεων μεγαλύτερο των $1200

select Όνομα_Υποκαταστήματος, avg(Ποσό) from Λογαριασμός group by Όνομα_Υποκαταστήματος having avg(Ποσό) > 1200

Η συνθήκη του having εφαρμόζεται αφού σχηματιστούν οι ομάδες και υπολογιστούν οι συναθροιστικές συναρτήσεις.

Page 26: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Συναθροιστικές Συναρτήσεις

'Οταν εμφανίζονται και το where και το having: • η συνθήκη του where εφαρμόζεται πρώτα, • οι πλειάδες που ικανοποιούν αυτή τη συνθήκη τοποθετούνται σε ομάδες με βάση το group by • και μετά αν υπάρχει συνθήκη στο having εφαρμόζεται στις ομάδες.

Page 27: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Συναθροιστικές Συναρτήσεις

Για να μετρήσουμε πόσες εγγραφές ικανοποιούν ένα κριτήριο, π.χ. Πόσοι πελάτες είναι από τη Σπάρτη:

select count(*) from Πελάτης where Πόλη = ‘Σπάρτη’

Εδώ το αποτέλεσμα είναι ένας αριθμός.

Page 28: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Η τιμή null

Η τιμή null

Χρήση της λέξης κλειδί is null (is not null) σε μια συνθήκη για να ελέξουμε αν μια τιμή είναι null.

select Αριθμός_Δανείου from Δάνειο where Ποσό is null

Page 29: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Η τιμή null

Εμφάνιση null

Παράδειγμα: select sum(Ποσό) from Δάνειο

• Σε αριθμητικές πράξεις: το αποτέλεσμα είναι null όταν οποιαδήποτε τιμή είναι null • Σε συγκρίσεις: σύγκριση με null συνήθως δίνει αποτέλεσμα false • Σε συναθροιστικές συναρτήσεις: αγνοείται, εκτός της count(*)

Page 30: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Αλλαγή Ονόματος

Τα ονόματα των γνωρισμάτων στο αποτέλεσμα είναι αυτά των σχέσεων στην ερώτηση.

Δυνατότητα αλλαγής του ονόματος τόσο μιας σχέσης όσο και ενός γνωρίσματος: <παλιό_όνομα> as <νέο_όνομα>

To as μπορεί να εμφανίζεται στο select ή στο from

Page 31: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Αλλαγή Ονόματος

Για παράδειγμα:

select Τίτλος, Έτος, Διάρκεια / 60 as Ώρες_Διάρκεια, Είδος from Ταινία

Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού)

Χρήσιμο όταν:

(γ) δυο σχέσεις του from έχουν γνωρίσματα με το ίδιο όνομα,

(α) έχουμε αριθμητικές εκφράσεις στο select και δεν έχουν όνομα,

(β) θέλουμε να αλλάξουμε το όνομα του γνωρίσματος στο αποτέλεσμα.

Page 32: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Μεταβλητές Πλειάδων

Μια μεταβλητή πλειάδας μπορεί να οριστεί στο from χρησιμοποιώντας το as:

select distinct Όνομα from Παίζει as Π, Ταινία as Τ where Π.Τίτλος = Τ.Τίτλος and Π.Έτος = Τ.Έτος and Είδος = ‘Ασπρόμαυρη’

Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού)

Page 33: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Φωλιασμένες Υπο-ερωτήσεις

Φωλιασμένες Υποερωτήσεις

Η SQL επιτρέπει το φώλιασμα υποερωτήσεων. Μια υποερώτηση είναι μια έκφραση select-from-where που χρησιμοποιείται μέσα σε μια άλλη ερώτηση.

Page 34: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Φωλιασμένες Υπο-ερωτήσεις

Γενική δομή: select ... from ... where ? (select ... from ... where ... );

υποερώτηση

Page 35: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Φωλιασμένες Υπο-ερωτήσεις

Ο τελεστής in (not in)

ελέγχει αν μια πλειάδα ανήκει (δεν ανήκει) σε ένα σύνολο από πλειάδες που έχουν προκύψει από μια έκφραση select-from-where.

Παράδειγμα: Τα ονόματα όλων των πελατών που έχουν πάρει δάνειο και έχουν καταθέσεις

select distinct Όνομα_Πελάτη from Δανειζόμενος where Όνομα_Πελάτη in ( select Όνομα_Πελάτη from Καταθέτης)

Page 36: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Φωλιασμένες Υπο-ερωτήσεις

Παράδειγμα: Τα ονόματα όλων των πελατών που έχουν πάρει δάνειο και έχουν καταθέσεις στο υποκατάστημα Νεάπολης

select distinct Όνομα_Πελάτη from Δανειζόμενος, Δάνειο where Δανειζόμενος.Αριθμός_Δανείου = Δάνειο.Αριθμός.Δανείου and Όνομα_Υποκαταστήματος = ‘Νεάπολη’ and ( Όνομα_Υποκαταστήματος, Όνομα_Πελάτη) in (select Όνομα_Υποκαταστήματος, Όνομα_Πελάτη from Καταθέτης, Λογαριασμός where Καταθέτης.Αριθμός_Λογαριασμού = Λογαριασμός.Αριθμός_Λογαριασμού )

• Παραπάνω από δύο γνωρίσματα

Page 37: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Φωλιασμένες Υπο-ερωτήσεις

Παράδειγμα: Τα ονόματα όλων των ηθοποιών που έπαιξαν σε ασπρόμαυρη ταινία

select distinct Ηθοποιός.Όνομα

from Παίζει

where ( Παίζει.Τίτλος, Παίζει Έτος) in

(select Ταινία.Τίτλος, Ταινία.Έτος

from Ταινία

where Είδος = ‘Ασπρόμαυρη’)

Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού)

Page 38: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Η λέξη-κλειδί “in“

Το in (ανήκει) μπορεί να χρησιμοποιηθεί και σε αριθμήσιμα πεπερασμένα σύνολα, τα οποία ορίζονται με παρενθέσεις.

Παράδειγμα: Τα ονόματα όλων των πελατών που έχουν πάρει δάνειο και δε λέγονται “Παπαδόπουλος” ,“Πέτρου” ή “Θωμόπουλος”.

select distinct Όνομα_Πελάτη from Δανειζόμενος where Όνομα_Πελάτη not in (“Παπαδόπουλος” , “Πέτρου”, “Θωμόπουλος”)

Page 39: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Πράξεις Συνόλων

Πράξεις Συνόλων

Πράξεις: • union (ένωση) • intersection (τομή) • except (αφαίρεση)

Προφανώς εφαρμόζονται σε συμβατές σχέσεις. Δηλαδή ίδιου αριθμού και τύπου γνωρισμάτων

Page 40: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Πράξεις Συνόλων

Γενική Σύνταξη:

( select from where ) union/intersection/except ( select from where)

Page 41: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Πράξεις Συνόλων στη ΒΔ «Τράπεζα»

Λογαριασμός

Υποκατάστημα

Πελάτης

Καταθέτης

Δάνειο

Όνομα_Υποκαταστήματος Αριθμός_Λογαριασμού Ποσό

Όνομα_Πελάτη Αριθμός_Λογαριασμού

Όνομα_Πελάτη Οδός Πόλη

Όνομα_Υποκαταστήματος Πόλη Σύνολο

Όνομα_Πελάτη Αριθμός_Δανείου

Όνομα_Υποκαταστήματος Αριθμός_Δανείου Ποσό

Δανειζόμενος

Page 42: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Πράξεις Συνόλων

Για ένωση συνόλων: union

( select Όνομα_Πελάτη from Καταθέτης ) union ( select Όνομα_Πελάτη from Δανειζόμενος )

Τα ονόματα όλων των πελατών που έχουν καταθέσεις ή/και έχουν πάρει δάνειο

Page 43: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Πράξεις Συνόλων

Παράδειγμα intersect:

( select Όνομα_Πελάτη from Καταθέτης ) intersect ( select Όνομα_Πελάτη from Δανειζόμενος )

Τα ονόματα όλων των πελατών που έχουν καταθέσεις και έχουν πάρει δάνειο

Page 44: Η SQL ως γλώσσα ερωτημάτωνvclass.uop.gr/modules/document/file.php/ITCOM324/SQL (SELECT) … · Η γλώσσα SQL Η SQL αποτελείται από: DDL (Data

Πράξεις Συνόλων

Παράδειγμα except:

( select Όνομα_Πελάτη from Καταθέτης ) except ( select Όνομα_Πελάτη from Δανειζόμενος )

Τα ονόματα όλων των πελατών που έχουν καταθέσεις και δεν έχουν πάρει δάνειο