Lecture 16: SQL DML III

Σχετικά έγγραφα
Lecture 16: SQL DML III

Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL

Περιεχόμενα. Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL. Συνένωση Σχέσεων στην SQL2 (3) Συνένωση Σχέσεων στην SQL2. (Join Relations Feature in SQL)

Διάλεξη 14: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) II. Διδάσκων: Παναγιώτης Ανδρέου

Lecture 14: SQL DML I

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

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

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

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

ΜΑΘΗΜΑ / ΤΑΞΗ : ΗΛΕΚΤΡΟΛΟΓΙΑ/Γ ΛΥΚΕΙΟΥ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 08/09/2014

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γευηέρα 11 Ηουνίου 2018 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

Ενδεικτικά Θέματα Στατιστικής ΙΙ

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

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

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

(Ενδεικηικές Απανηήζεις) ΘΔΜΑ Α. Α1. Βιέπε απόδεημε Σει. 262, ζρνιηθνύ βηβιίνπ. Α2. Βιέπε νξηζκό Σει. 141, ζρνιηθνύ βηβιίνπ

ΣΥΣΤΗΜΑΤΑ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 1. Να ιπζνύλ ηα ζπζηήκαηα. 1 0,3x 0,1y x 3 3x 4y 2 4x 2y ( x 1) 6( y 1) (i) (ii)

f '(x)g(x)h(x) g'(x)f (x)h(x) h'(x) f (x)g(x)

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

Εξγαζηήξην Πιεξνθνξηθήο

ΘΔΜΑ 1 ο Μονάδες 5,10,10

ΓΙΑΙΡΔΣΟΣΗΣΑ. Οπιζμόρ 1: Έζηω d,n. Λέκε όηη ν d δηαηξεί ηνλ n (ζπκβνιηζκόο: dn) αλ. ππάξρεη c ηέηνην ώζηε n. Θεώπημα 2: Γηα d,n,m,α,b ηζρύνπλ:

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

Βάσεις Δεδομένων. Εργαστήριο ΙV. Τμήμα Πληροφορικής ΑΠΘ

1 Είζοδορ ζηο Σύζηημα ΣΔΕΔ ή BPMS

Βάσεις Δεδομένων Σύνθετα SQL queries

Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική ΑΔ

Βάσεις Δεδομένων Σύνθετα SQL queries. Ψευδώνυμα (Aliases) (2) Ψευδώνυμα (Aliases) (1) Ασάφεια και Πλήρη Ονόματα. Ερώτημα χωρίς τον όρο WHERE (1)

Παιχνίδι γλωζζικής καηανόηζης με ζχήμαηα!

ΠΑΡΑΡΣΗΜΑ Δ. ΔΤΡΔΗ ΣΟΤ ΜΔΣΑΥΗΜΑΣΙΜΟΤ FOURIER ΓΙΑΦΟΡΩΝ ΗΜΑΣΩΝ

Lecture 17: SQL DML IV

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

Lecture 21: Functional Dependencies and Normalization

Δσζμενές διαηαρατές και Ονομαζηικό-πραγμαηικό επιηόκιο

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

Γ ΣΑΞΖ ΔΝΗΑΗΟΤ ΛΤΚΔΗΟΤ ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΘΔΣΗΚΩΝ ΚΑΗ ΟΗΚΟΝΟΜΗΚΩΝ ΠΟΤΓΩΝ ΤΝΑΡΣΖΔΗ ΟΡΗΑ ΤΝΔΥΔΗΑ (έως Θ.Bolzano) ΘΔΜΑ Α

Lecture 8: RM I + RA I

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

ΔΝΓΔΙΚΣΙΚΔ ΛΤΔΙ ΣΑ ΜΑΘΗΜΑΣΙΚΑ ΠΡΟΑΝΑΣΟΛΙΜΟΤ 2017

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

Lecture 15: SQL DML II

Q Η ζσνάρηηζη μέζοσ κόζηοσς μας δίνει ηο κόζηος ανά μονάδα παραγωγής. Q Η ζσνάρηηζη μέζοσ κόζηοσς μας δίνει ηο ζηαθερό κόζηος ανά μονάδα παραγωγής

Εισαγωγή στις Βάσεις Δεδομζνων II

Διάλεξη 15: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) III. Διδάσκων: Παναγιώτης Ανδρέου

5 η Δργαζηηριακή Άζκηζη Κσκλώμαηα Γσαδικού Αθροιζηή/Αθαιρέηη

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

ΓΗΜΟΙΑ ΟΙΚΟΝΟΜΙΚΗ ΣΟΜΟ Γ

ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΣΗΜΑΤΩΝ & ΣΥΣΤΗΜΑΤΩΝ. ΜΕΤΑΣΦΗΜΑΤΙΣΜΟΣ Laplace

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

Lecture 15: SQL DML II

ΚΔΦ. 2.4 ΡΗΕΔ ΠΡΑΓΜΑΣΗΚΩΝ ΑΡΗΘΜΩΝ

Τν Πξόγξακκα ζα αλαθνηλσζεί, ακέζσο κεηά ηηο γηνξηέο ηνπ Πάζρα.

GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP.

Ανάκληση Πληποφοπίαρ. Διδάζκων Δημήηριος Καηζαρός. Διάλεξη 14η

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ ΚΑΗ ΔΠΑΛ ΣΔΣΑΡΣΖ 25 ΜΑΨΟΤ 2016 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΑΡΥΔ ΟΗΚΟΝΟΜΗΚΖ ΘΔΧΡΗΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ - ΔΠΗΛΟΓΖ

Κεθάλαιο 7. Πξνζθνξά ηνπ θιάδνπ Μ. ΨΥΛΛΑΚΗ

Lecture 14: SQL DML I

Διαηιμήζεις για Αιολικά Πάρκα. Κώδικες 28, 78 και 84

ΔΦΑΡΜΟΜΔΝΑ ΜΑΘΗΜΑΣΙΚΑ ΣΗ ΧΗΜΔΙΑ Ι ΘΔΜΑΣΑ Α επηέκβξηνο Να ππνινγηζηνύλ νη κεξηθέο παξάγσγνη πξώηεο ηάμεο ηεο ζπλάξηεζεο f(x,y) =

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

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

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο

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

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

Η/Υ A ΤΑΞΕΩΣ ΑΕ Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

MySQL Εργαστήριο #5 Ενεργοποιητές (συνέχεια)

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

Constructors and Destructors in C++

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training. Dipl.Biol.cand.med. Stylianos Kalaitzis

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ.

ΕΞΙΣΩΣΕΙΣ. Α. Πρωτοβάθμιεσ Εξιςώςεισ. Β. Διερεφνηςη Εξιςώςεων. 1x είναι αδφνατθ. x 1 x 1. Άλγεβρα Α Λυκείου

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

ΕΞΙΣΩΣΕΙΣ. (iv) (ii) (ii) (ii) 5. Γηα ηηο δηάθνξεο ηηκέο ηνπ ι λα ιπζνύλ νη εμηζώζεηο : x 6 3 9x

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γεσηέρα 10 Ηοσνίοσ 2019 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

Εισαγωγή στη Σχεσιακή Άλγεβρα

Μηα ζπλάξηεζε κε πεδίν νξηζκνύ ην Α, ζα ιέκε όηη παξνπζηάδεη ηοπικό μέγιζηο ζην, αλ ππάξρεη δ>0, ηέηνην ώζηε:

Ανάπηςξη Δθαπμογών ζε Ππογπαμμαηιζηικό Πεπιβάλλον

Διάλεξη 13: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) I. Διδάσκων: Παναγιώτης Ανδρέου

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙΜΟ Α ΛΤΚΔΙΟΤ. Ημεπομηνία: 10/12/11 Ώπα εξέτασηρ: 09:30-12:30 ΠΡΟΣΔΙΝΟΜΔΝΔ ΛΤΔΙ

ηδάζθσλ: εµήηξεο Εετλαιηπνύξ

ζρήκα 1 β τπόπορ (από σύγκπιση τπιγώνων):

Διαδικαζία μεηαθοράς δεδομένων Εκκαθαριζηικής για ηο Eιδικό ζημείωμα περαίωζης Φ.Π.Α

ΣΡΑΠΕΖΑ ΘΕΜΑΣΩΝ Α ΛΤΚΕΙΟΤ

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΤΙΚΗ ΣΚΥΤΑΛΟΓΡΟΜΙΑ 2015 ΓΙΑ ΤΟ ΓΥΜΝΑΣΙΟ Τεηάπηη 28 Ιανουαπίου 2015 ΛΔΥΚΩΣΙΑ Τάξη: Α Γυμναζίου

x x 15 7 x 22. ΘΔΜΑ Α 3x 2 9x 4 3 3x 18x x 5 y 9x 4 Α1. i. . Η ιύζε είλαη y y x 3y y x 3 2x 6y y x x y 6 x 2y 1 y 6

Η επιζκόπηζη ηης έμμιζθης ενηολής ζηην Αλλοδαπή. Καηεξίλα Γαιαλνπνύινπ, Intellectual Property Manager, Microsoft Ειιάο Α.Ε.

Έωρ και 28% η αύξηζη ηων ειζθοπών από ηο 2019!

Επωηήζειρ Σωζηού Λάθοςρ ηων πανελλαδικών εξεηάζεων Σςναπηήζειρ

Κεθάιαην 20. Ελαχιστοποίηση του κόστους

Σήκαηα Β Α Γ Γ Δ Λ Η Σ Ο Ι Κ Ο Ν Ο Μ Ο Υ Γ Ι Α Λ Δ Ξ Η - ( 2 ) ΕΙΣΑΓΨΓΗ ΣΤΙΣ ΤΗΛΕΠΙΚΟΙΝΨΝΙΕΣ

α) ηε κεηαηόπηζε x όηαλ ην ζώκα έρεη κέγηζην ξπζκό κεηαβνιήο ζέζεο δ) ην κέγηζην ξπζκό κεηαβνιήο ηεο ηαρύηεηαο

Transcript:

Department of Computer Science University of Cyprus EPL342 Databases Lecture 16: SQL DML III SQL Structured Query Language (Chapter 8.5.5-8.6, Elmasri-Navathe 5ED) Demetris Zeinalipour http://www.cs.ucy.ac.cy/courses/epl342 16-1

Πεξηερόκελν Γηάιεμεο Ολοκλήπωζη Γιάλεξηρ 15. Κεθάλαιο 8.5.5-8.6: SQL DML IΙΙ Ενηολή Μεηονομαζίαρ AS ζε SQL Πποσωπημένερ Σςνενώζειρ ζε SQL (JOINS) Σςναθποιζηικέρ Σςναπηήζειρ ζε SQL (COUNT, MAX, MIN, AVG, SUM) Ενηολή Ομαδοποίηζηρ (GROUP-BY) και Ενηολή Επιλογήρ-μεηά-από-Ομαδοποίηζη (HAVING) ζε SQL Ενηολέρ Ειζαγωγήρ/Διαγπαθήρ/Ενημέπωζηρ (INSERT / DELETE / UPDATE) ζε SQL. 16-2

Ενηολή Μεηονομαζίαρ AS ζε SQL Γηα ηελ κεηνλνκαζία γνωπιζμάηων ή ζσέζεων ζε SQL ρξεζηκνπνηείηαη o όξνο AS Q8a: Για ηον κάθε ςπάλληλο ηύπωζε ηο όνομα ηος και ηο όνομα ηος πποϊζηαμένος ηος. Οη ζηήιες ηοσ αποηειέζκαηος λα θέροσλ ηα όλοκαηα Employee_Name θαη Supervisor_Νame. SELECT E.Lname AS Employee_Name, S.Lname AS Supervisor_Νame FROM EMPLOYEE AS E, EMPLOYEE AS S WHERE E.Super_ssn = S.ssn Σεκείωζε: To AS εθαπμόζει αςηόμαηα από ηον Query Builder ηος SQL Server. Γεκηνπξγία Δλδηάκεζνπ Πίλαθα SELECT T.Lname, T.Lname FROM (SELECT * FROM EMPLOYEE E WHERE E.age=30) AS T WHERE T.Lname="Smith" 16-3

Πποσωπημένερ Σςνενώζειρ ζε SQL Νσξίηεξα, κειεηήζακε ηελ απιή εθδνρή ηεο εληνιήο ζπλέλσζεο ζηελ SQL (ζ-join), π.ρ., SELECT * FROM Employee E, Department D WHERE E.Dno = D.Dno AND D.Dno=5; Σήκεξα ζα δνύκε πσο κπνξνύκε λα νξίζνπκε ηνπο αθόινπζεο εξειδικεςμένερ ζςνενώζειρ. INNER JOIN (Απλή Σςνένωζη) Δλαιιαθηηθόο ηξόπνο δηαηύπσζεο ηεο Απιήο Σπλέλσζεο. NATURAL JOIN (Φςζική Σςνένωζη), [ Γεν ςπάπσει ζε TSQL ] Η ζςνθήκη ζςνένωζηρ είλαη ην θνηλά δηαηππσκέλν γλώξηζκα. OUTER JOIN (Δξωηεπική Σςνένωζη: LEFT, RIGHT, FULL) Σπκπεξίιεςε πιεηάδσλ πνπ δελ ζπλελώλνληαη. CROSS JOIN (Καπηεζιανό Γινόμενο) (Χωπίρ ηο WHERE εκθπάζοςμε ηο καπηεζιανό γινόμενο) Δλαιιαθηηθόο ηξόπνο δηαηύπσζεο ηνπ Καξηεζηαλνύ Γηλνκέλνπ. 16-4

Πποσωπημένερ Σςνενώζειρ ζε SQL (INNER JOIN) Τν INNER JOIN απνηειεί ελαιιαθηηθό ηξόπν δηαηύπσζεο ηεο Απιήο Σπλέλσζεο πνπ είδακε λσξίηεξα. Π.ρ., SELECT * FROM Employee E INNER JOIN Department D ON E.Dno = D.Dno WHERE D.Dno=5; Πλεονέκηημα Γελ πιέθεηαη ε ζςνθήκη ζςνένωζηρ κε ηελ ζςνθήκη ηηρ επεπώηηζηρ (βνιηθό ζε πεξηπηώζεηο πολλαπλών joins) Μειονέκηημα Γιαθοπεηική ςλοποίηζη ζε δηαθνξεηηθέο βάζεηο δεκηνπξγεί πξνβιήκαηα ζπκβαηόηεηαο ελώ ε Απιή Σπλέλσζε είλαη επξέσο δηαδεδνκέλε. Άλλερ Δπιζημάνζειρ Δάλ δελ ρξεζηκνπνηεζεί aliasing (π.ρ., D, E) ηόηε κπνξεί λα πξνθύςνπλ ζθάικαηα κεηάθξαζεο ηεο επεξώηεζεο ζε δηθνξνύκελεο θαηαζηάζεηο Ο όξνο INNER (ζην INNER JOIN) ζε ANSI-SQL είλαη πξναηξεηηθό. 16-5

Πποσωπημένερ Σςνενώζειρ ζε SQL (INNER JOIN) Παπάδειγμα: Μεηαζρεκαηίζηε ην αθόινπζν ζε ηζνδύλακν query κε ρξήζε Inner Join. Q8:SELECT * FROM EMPLOYEE E, EMPLOYEE S WHERE E.SUPERSSN=S.SSN Απάνηηζη: Q8:SELECT * FROM (EMPLOYEE E INNER JOIN EMPLOYEE S ON E.SUPERSSN=S.SSN) 16-6

Πποσωπημένερ Σςνενώζειρ ζε SQL (NATURAL JOIN ΌΧΙ ζε TSQL) Τν ΝΑΤURAL JOIN (ζε ANSI-SQL, π.ρ., πινπνηείηαη ζε PostgreSQL) πινπνηεί ηελ ζπλέλσζε κε ηέηνην ηξόπν ώζηε ε ζςνθήκη ζςνένωζηρ είλαη ην θνηλά δηαηππσκέλν γλώξηζκα., π.ρ., SELECT * FROM Employee E NATURAL JOIN Department D WHERE D.Dno=5; Δπιζημάνζειρ Γελ απαηηεί ηνλ νξηζκό ηεο θνηλήο ζηήιεο νύηε ηελ παξάγεη δηπιά. Δάλ δελ ππάξρεη θνηλά δηαηππσκέλν γλώξηζκα κπνξεί λα πξνεγεζεί κεηνλνκαζία: Π.ρ., SELECT * FROM EMPLOYEE NATURAL JOIN Department AS Dept(Dname, Dno, Mssn, Msdate) (μεηονομ. δεν δοςλεύει ζε TSQL) Γεληθόηεξα, ην NATURAL JOIN δελ πινπνηείηαη ζε TSQL γηα απηό δελ ζα κειεηεζεί πεξαηηέξσ. 16-7

Πποσωπημένερ Σςνενώζειρ ζε SQL (NATURAL JOIN ΌΧΙ ζε TSQL) Παπάδειγμα: Μεηαζρεκαηίζηε ην αθόινπζν ζε ηζνδύλακν query κε ρξήζε Natural Join. Παπάδειγμα : Q1:SELECT FROM WHERE FNAME, LNAME, ADDRESS EMPLOYEE, DEPARTMENT DNAME='Research' AND DNUMBER=DNO Μποπούζε να γπαθεί με NATURAL JOIN ωρ: Q1:SELECT FNAME, LNAME, ADDRESS FROM (EMPLOYEE NATURAL JOIN DEPARTMENT AS DEPT(DNAME, DNO, MSSN, MSDATE) WHERE DNAME='Research 16-8

Πποσωπημένερ Σςνενώζειρ ζε SQL (OUTER JOIN) Σε κηα εζσηεξηθή ζπλέλσζε (Απιή, Inner, Natural), ηo απνηέιεζκα πεξηιακβάλεη MONO πιεηάδεο πνπ έρνπλ ίζν γλώξηζκα ζπλέλσζεο H εξωηεπική ζςνένωζη (OUTER JOIN) είλαη ρξήζηκε γηα παξαγσγή απνηειεζκάησλ πνπ ζέινπλ ζην απνηέιεζκα όιεο ηηο εγγξαθέο κηαο ζρέζεο (αξηζηεξήο, δεμηάο ή θαη ηηο δπν) αλεμάξηεηα εάλ ζςνενώνονηαι <Table1> {LEFT RIGHT FULL} [OUTER] JOIN <Table2> ON <condition> EMPLOYEE Δ DEPARTMENT D E LEFT [OUTER] JOIN D ή WHERE E *= D (SQL Server 2000) Σεκείωζε: Θεωπήζηε όηι δεν ςπάπσει ο αναθοπικόρ πεπιοπιζμόρ E.DNO=>D.DNO 16-9

Πποσωπημένερ Σςνενώζειρ ζε SQL (OUTER JOIN) EMPLOYEE Δ DEPARTMENT D E FULL [OUTER] JOIN D WHERE E *=* D (SQL Server 2000) E RIGHT [OUTER] JOIN D WHERE E =* D (SQL Server 2000) 16-10

Πποσωπημένερ Σςνενώζειρ ζε SQL (OUTER JOIN) SQL Server 2005/2008 (ANSI ηπόπορ) Left Outer Join: SELECT E.ssn, E.Fname, E.Minit, E.Lname, E.Dno, D.Dno AS Expr1, D.Dname FROM Emp AS E LEFT OUTER JOIN Dep AS D ON E.Dno = D.Dno Right Outer Join: SELECT E.ssn, E.Fname, E.Minit, E.Lname, E.Dno, D.Dno AS Expr1, D.Dname FROM Emp AS E RIGHT OUTER JOIN Dep AS D ON E.Dno = D.Dno Full Outer Join: Μεηνλνκαζία γίλεηαη γηα λα κελ έρνπκε δηπιά Dno ζην απνηέιεζκα. SELECT E.ssn, E.Fname, E.Minit, E.Lname, E.Dno, D.Dno AS Expr1, D.Dname FROM Δmp AS E FULL OUTER JOIN Dep AS D ON E.Dno = D.Dno 16-11

Πποσωπημένερ Σςνενώζειρ ζε SQL (OUTER JOIN) SQL Server 2000 (Non-ANSI ηπόπορ) Left Outer Join: SELECT * FROM Emp E, Dep D WHERE E.Dno *= D.Dno Right Outer Join: SELECT * FROM Emp E, Dep D WHERE E.Dno =* D.Dno Full Outer Join: SELECT * FROM Emp E, Dep D WHERE E.Dno *=* D.Dno 16-12

Πποσωπημένερ Σςνενώζειρ ζε SQL (CROSS JOIN) Τν CROSS JOIN απνηειεί ελαιιαθηηθό ηξόπν δηαηύπσζεο ηνπ Καξηεζηαλνύ Γηλνκέλνπ ην νπνίν έρνπκε δεη ήδε, δει. SELECT * FROM Employee E, Department D <table_source> CROSS JOIN <table_source> Γενικέρ Δπιζημάνζειρ Όινη νη ηξόπνη ζπλέλσζεο πνπ είδακε κπνξνύλ λα ππνζηεξίμνπλ πεξηζζόηεξεο από 2 ζρέζεηο.» π.ρ., ((Table JOIN TableB ON <cond>) JOIN TableC ON <cond>) Δίλαη θαιό λα ρξεζηκνπνηνύκε ηελ ANSI SQL κέζνδν ζε SQL ζπλελώζεηο γηα ιόγνπο ζπκβαηόηεηαο κεηαμύ θαηαζθεπαζηώλ. Σηηο εμσηεξηθέο ζπλελώζεηο (LEFT θαη RIGHT) ΓΔΝ ιζσύει η ανηιμεηαθεηική ιδιόηηηα (δει., ε ζεηξά ησλ joins δελ κπνξεί λα αιιάμεη απζαίξεηα), δει., (Α= Β) (Β= Α)» Γώζηε έκθαζε ζηε ζεηξά ησλ ζπλελώζεσλ δηόηη απηό κπνξεί λα ζαο νδεγήζεη εύθνια ζε ιάζε. 16-13

Σπλαζξνηζηηθέο Σπλαξηήζεηο (Aggregate Functions) Οη Σςναθποιζηικέρ Σςναπηήζειρ (Aggregate Functions) πξνζδηνξίδνπλ καζεκαηηθέο πξάμεηο πάλσ ζε ζπιινγέο ηηκώλ ηεο βάζεο ζπκπεξηιακβαλνκέλσλ ησλ αθόινπζσλ: COUNT, SUM, MAX, MIN, και AVG Query 15: Βξεο ην μέγιζηο salary, ην ελάσιζηο salary, θαη ηνλ μέζο όπο ησλ salaries από όινπο ηνπο employees. Q15: SELECT MAX(SALARY), MIN(SALARY), FROM AVG(SALARY) EMPLOYEE Σεκεηώζηε όηη δελ ιακβάλνληαη ππόςε ηα NULLS! 16-15

Σπλαζξνηζηηθέο Σπλαξηήζεηο (Aggregate Functions) Query 16: Βξεο ην μέγιζηο salary, ην ελάσιζηο salary, θαη ηνλ μέζο όπο ησλ salaries κεηαμύ όισλ ησλ employees πνπ δνπιεύνπλ γηα ην 'Research' department. Q16: SELECT MAX(SALARY), MIN(SALARY), AVG(SALARY) FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME='Research' Σημείωζη: Η εθηέιεζεο ηεο ζπλέλσζε πξνεγείηαη ηεο ζπλαζξνηζηηθήο ζπλάξηεζεο 16-16

Σπλαζξνηζηηθέο Σπλαξηήζεηο (Aggregate Functions) Δπιζημάνζειρ Σπλαζξνηζηηθέο Σπλαξηήζεηο SUM, AVG (δει., SUM/COUNT), MAX, MIN κπνξνύλ λα εθαξκνζηνύλ ζε ζύνολα ή πολςζύνολα (ζρέζεηο κε κνλαδηθέο έγγξαθεο ή κε) απιθμηηικών ηιμών. Οη ΜΑΧ, ΜΙΝ εθαξκόδνληαη θαη ζε αλθαπιθμηηικά δεδομένα (π.ρ., «Γίαο» < «Φεγγάξη») To COUNT ζε TSQL εθαξκόδεηαη ζηα πάληα εθηόο από text, image, ή ntext. Οη Σπλαζξνηζηηθέο ζπλαξηήζεηο νξίδνληαη πάνηοηε ζην όξν SELECT (θαη ζην HAVING πνπ ζα δνύκε αξγόηεξα) ΛΑΘΟΣ: SELECT * FROM A WHERE salary=max(salary) 16-17

Σπλαζξνηζηηθέο Σπλαξηήζεηο (Aggregate Functions) Ο ηελεζηήρ * (δηλ., func(*)) ππνδειώλεη πσο πξέπεη λα ιεθζνύλ ππόςε όια ηα γλσξίζκαηα ζηνλ ππνινγηζκό κηαο ζπλαζξνηζηηθήο ζπλάξηεζεο Αρηζκός ηωλ employees (includes NULLs & duplicates) Q17: SELECT COUNT (*) FROM EMPLOYEE Αρηζκός employees ηοσ Research Department Q18: SELECT COUNT (*) FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME='Research 16-18

Σπλαζξνηζηηθέο Σπλαξηήζεηο (Aggregate Functions) ΔΕΝ αγλοούλ ηα NULL COUNT(*): Μεηπά εμθανίζειρ όλων ηων attributes (περηιακβάλεη θαη NULLs και διπλόηςπα). Βπίζκει απιθμό γπαμμών ενόρ πίνακα Αγλοούλ ηα NULL I. COUNT(expression): Μέηπα ηιρ εμθανίζειρ ηος expression (μεηπώνηαρ ξανά ηα διπλόηςπα) II. Παπάδειγμα: R(A,B)={(1,1), (2,2), (2,NULL), (5,NULL)} SELECT COUNT(A) FROM R returns 4 SELECT COUNT(B) FROM R returns 2 SELECT COUNT(CAST(A as char) + CAST(B as char)) FROM R; The above returns 2 COUNT(ALL expression): Ίδιο με ηο COUNT(expression) 16-19

Σπλαζξνηζηηθέο Σπλαξηήζεηο (Aggregate Functions) III. COUNT(DISTINCT expression): Μεηπά κολαδηθές εμθανίζειρ ηος attribute. Παπάδειγμα: R(A,B)={(1,1), (2,2), (2,NULL), (5,NULL)} SELECT COUNT(DISTINCT A) FROM R -- returns 3 SELECT COUNT(DISTINCT B) FROM R -- returns 2 SELECT COUNT(DISTINCT CAST(A as char) + CAST(B as char)) FROM R; -- The above returns 2 (δηλ., όηι πεπιέσει έζηω ένα NULL αγνοείηαι) IV. COUNT (DISTIΝCT *): Δελ εθαρκόδεηαη ζε TSQL (δες επόκελε δηαθάλεηα γηα ιύζε) Επηζήκαλζε To COUNT παίξλεη ηηκέο κέρξη 2^31-1. Όηαλ ππάξρεη αλάγθε γηα κεγαιύηεξεο ηηκέο ηόηε ππάξρεη θαη ην COUNT_BIG 16-20

Σπλαζξνηζηηθέο Σπλαξηήζεηο (Aggregate Functions) Ανηίζηοισο ηηρ «COUNT (DISTIΝCT *)» SELECT COUNT(*) FROM (SELECT DISTINCT * FROM table) AS Temp Σημείωζη: Eδω ηο DISTINCT * σπειάζεηαι μόνο εάν ηο table ΔΕΝ έσει Primary Key. Εάν έσει PRIMARY key ηο table ηόηε εξςπακούεηαι, δηλ., είναι απλά SELECT COUNT(*) FROM table. 16-21

Σπλαζξνηζηηθέο Σπλαξηήζεηο COUNT(DISTINCT *) SELECT * FROM Emp SELECT DISTINCT * FROM Emp Δναλλακηική διαηύπωζη: SELECT COUNT(DISTINCT *) SELECT COUNT(*) AS CountVar FROM ( SELECT DISTINCT * FROM Emp) AS TEMP 16-22

Σπλαζξνηζηηθέο Σπλαξηήζεηο (Aggregate Functions) Πέπα από ηο COUNT (DISTIΝCT *), ούηε και ηο COUNT (DISTIΝCT Attr1,Attr2) ΔΕΝ εθαπμόζεηαι ζε απκεηέρ εκδοσέρ ηηρ SQL (π.σ., TSQL). Για αςηό μποπούμε να εθαπμόζοςμε ηην ακόλοςθη εναλλακηική πποζέγγιζη (με εμθωλεςμένη επεπώηηζη): Γιαηςπωζη «COUNT (DISTIΝCT Attr1,Attr2)» Δκδοσή Α με CONCAT (όπωρ ππιν): SELECT COUNT(DISTINCT CAST(A as char) + CAST(B as char)) FROM table; Δκδοσή Β με ενδιάμεζο πίνακα: SELECT COUNT(*) FROM (SELECT DISTINCT Attr1, Attr2 FROM table) 16-23