Lecture 17: SQL DML IV

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

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

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

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

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

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

Lecture 14: SQL DML I

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

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

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

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

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

Lecture 16: SQL DML III

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

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

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

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

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

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

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

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

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

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

Constructors and Destructors in C++

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

1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird

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

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

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

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

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

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

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

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

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

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

Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο:

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

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

Image J Plugin particle tracker για παρακολούθηση της κίνησης σωματιδίων

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

Σρήκα Α. Γξάθνπκε ηα ζηνηρεία ηνπ Πξνκεζεπηή θαη παηάκε Δηζαγσγή. Σρήκα Β1

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

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

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

x-1 x (x-1) x 5x 2. Να απινπνηεζνύλ ηα θιάζκαηα, έηζη ώζηε λα κελ ππάξρνπλ ξηδηθά ζηνπο 22, 55, 15, 42, 93, 10 5, 12

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

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

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

Lecture 21: Functional Dependencies and Normalization

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

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

Φςζική Πποζαναηολιζμού Γ Λςκείος. Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο

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

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

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

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

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

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

Αιγόξηζκνη Δνκή επηινγήο. Απιή Επηινγή ύλζεηε Επηινγή. Εηζαγσγή ζηηο Αξρέο ηεο Επηζηήκεο ησλ Η/Τ. introcsprinciples.wordpress.

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

Εςθςή ζςζηήμαηα επισειπήζεων και αξιολόγηζη

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

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

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

Διάλεξη 07: Σχεσιακό Μοντέλο II (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου

Αιγόξηζκνη Δθρώξεζε, Δίζνδνο θαη Έμνδνο ηηκώλ Γνκή αθνινπζίαο. Δηζαγσγή ζηηο Αξρέο ηεο Δπηζηήκεο ησλ Η/Υ

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

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

Να ζρεδηάζεηο ηξόπνπο ζύλδεζεο κηαο κπαηαξίαο θαη ελόο ιακπηήξα ώζηε ν ιακπηήξαο λα θσηνβνιεί.

Κβαντικοί Υπολογισμοί. Πέκπηε Γηάιεμε

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

Ππογπαμμαηιζμόρ Ι (ΗΥ120)

x x x x tan(2 x) x 2 2x x 1

ΜΗΧΑΝΟΛΟΓΙΚΟ ΣΧΔΓΙΟ ΙΙ


A. Αιιάδνληαο ηε θνξά ηνπ ξεύκαηνο πνπ δηαξξέεη ηνλ αγωγό.

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

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

6 η Εργαζηηριακή Άζκηζη Επαλήθεσζη Λειηοσργίας Βαζικών Φλιπ-Φλοπ

Αντισταθμιστική ανάλυση

ΗΥ-150 Πξνγξακκατησκόο Ταμηλόκεσε θαη Αλαδήτεσε

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access)

ΦΥΣΙΚΗ ΤΩΝ ΡΕΥΣΤΩΝ. G. Mitsou

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

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

Case Study. Παξαθάηω παξνπζηάδνπκε βήκα - βήκα κε screenshots έλα παξάδεηγκα ππνβνιήο κηαο εξγαζίαο θαη ηελ παξαγωγή ηνπ Originality Report.

Δξγαζηεξηαθή άζθεζε 03. Σηεξενγξαθηθή πξνβνιή ζην δίθηπν Wulf

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

Πολυεπίπεδα/Διασυμδεδεμέμα Δίκτυα

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

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

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

EL Eνωμένη στην πολυμορυία EL A8-0046/319. Τροπολογία

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

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

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

Hellas online Προεπιλεγμένες ρσθμίσεις για FritzBox Fon WLAN 7140 (Annex B) FritzBox Fon WLAN Annex B ( )

Transcript:

Department of Computer Science University of Cyprus EPL342 Databases Lecture 17: SQL DML IV 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

Πεξηερόκελν Γηάιεμεο Οινθιήξσζε Γηάιεμεο 16. Κεθάιαην 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

Οκαδνπνίεζε ζε SQL (GROUP BY) Σε πνιιέο πεξηπηώζεηο ζέινπκε λα εθαξκόζνπκε ηα απνηειέζκαηα ζπλαζξνηζηηθώλ ζπλαξηήζεσλ ζε ππννκάδεο πιεηάδσλ ζε κηα ζρέζε. Μέιε ππννκάδαο: Πιεηάδεο πνπ έρνπλ ηελ ίδηα ηηκή ζην/α γλσξίζκαηα νκαδνπνίεζεο, π.ρ., Παξαδείγκαηα: Δύξεζε Μέζνπ Όξνπ Μηζζώλ αλά Τκήκα (Dno). Δύξεζε Τκήκαηνο/σλ κε Μέζν Μηζζό πάλσ από 50000. 16-3

Οκαδνπνίεζε ζε SQL (GROUP BY) Γηα ηελ πινπνίεζε ηεο νκαδνπνίεζεο ζε SQL εθηειείηαη πξώηα ε ζπλάξηεζε ζπλάζξνηζεο ζε θάζε ππννκάδα αλεμάξηεηα. Γίλεηαη ρξήζε ηεο εληνιήο GROUP BY Π.ρ., Δύξεζε Μέζνπ Μηζζνύ αλά ηκήκα Σηελ ζπλέρεηα κπνξεί λα ρξεζηκνπνηεζεί θαη έλα θηιηξάξηζκα ησλ απνηειεζκάησλ βάζεη ηεο ππννκάδαο νκάδαο. Γίλεηαη ρξήζε ηεο εληνιήο HAVING Π.ρ., Φηιηξάξηζκα Απνηειεζκάησλ Μέζσλ Μηζζώλ > 50,000 16-4

Δλλνηνινγηθή Δθηέιεζε Δλόο SQL Μπινθ Αο δνύκε ιίγν θαιύηεξα κε πνηα ζεηξά εθηειείηαη έλα SQL κπινθ ζε έλα αθαηξεηηθό (ελλνηνινγηθό) επίπεδν. Η πεξηγξαθή απηή είλαη ζε ελλνηνινγηθό επίπεδν, επνκέλσο ην πιάλν εθηέιεζεο (query plan) εο επεξώηεζεο ζηα παξαδείγκαηα ΓΔΝ ζα είλαη βέιηηζην. Η πξαγκαηηθό πιάλν εθηέιεζεο ελαπόθεηηαη απνθιεηζηηθά ζηελ βάζε δεδνκέλσλ. Απηή ε δνπιεηά δηεθπεξαηώλεηαη από ηνλ βελτιστοποιητή επερωτήσεων (query optimizer) ο οποίορ έσει μεγάλη πολςπλοκόηηηα. Μια ςλοποίηζη ηος ζε εμποπική βάζη λέγεηαι όηι πήπε 50 ανθπωποσπόνια επγαζίαρ. Θεσξνύκε όηη ε βάζε καο είλαη έλαο ή πεξηζζόηεξνη πίλαθεο απνζεθεπκέλνη ζηνλ δίζθν ρσξίο άιιεο δνκέο δεδνκέλσλ (επξεηήξηα αλαδήηεζεο, θηι). Η πεξηγξαθή απηή ζα καο επηηξέςεη λα θαηαιάβνπκε θαιύηεξα ηη EPL342: παξάγεηαη Databases - Demetris από κηα Zeinalipour επεξώηεζε. (University of Cyprus) 16-5

Δλλνηνινγηθή Δθηέιεζε Δλόο SQL Μπινθ Έλα κπινθ επεξώηεζεο SQL απνηειείηαη από έμη όξνπο (clauses) νη νπνίνη εθηεινύληαη (ζε ινγηθό επίπεδν) όπσο θαίλεηαη πην θάησ: 6) SELECT <Attribute(s) AS Alias(s)> 3) Αgg1 AS Alias, AggN as Alias 1) FROM <table(s)> 2) [WHERE <condition>] 3) [GROUP BY <grouping attribute(s)>] 4) [HAVING <group condition>] 5) [ORDER BY <attribute list>] Έλα Query εθηειείηαη ελλνηνινγηθά κε ηελ αθόινπζε ζεηξά: 1. FROM: Σπλέλσζε (ή Καξ. Γηλ) ηνπο πίλαθεο ηνπ table-list π.ρ., FROM Employee E, Department D 2. WHERE: Γηάζρηζε Γξακκηθά ηνλ Πίλαθα πνπ παξάγεηαη ζην βήκα 1 απνηηκώληαο ηελ έθθξαζε <condition> ζε θάζε πιεηάδα. π.ρ., WHERE E.Dno=D.Dnumber and D.Dname= Research Σςνέσεια επόμενη διαθάνεια 16-6

Δλλνηνινγηθή Δθηέιεζε Δλόο SQL Μπινθ Έζησ ην ελδηάκεζν απνηέιεζκα: TEMP1(DNO, SSN, Salary) 3. GROUP BY: Γηάζρηζε γξακκηθά ην TEMP1, νκαδνπνηώληαο ηα απνηειέζκαηα βάζεη ηνπ grouping attribute(s) θαη ππνινγίδνληαο γηα θάζε νκάδα ηα αηηνύκελα ζπλαζξνηζηηθά απνηειέζκαηα: MAX, MIN, COUNT, SUM: Υινπνηνύληαη κε κηα κεηαβιεηή αλά νκάδα AVG = SUM / COUNT π.ρ., GROUP BY DNO Έζησ ην ελδηάκεζν απνηέιεζκα: TEMP2(DNO, AVG(salary)) 4. HAVING: Γηάζρηζε γξακκηθά ηo TEMP2 εθαξκόδνληαο ην <group condition> πάλσ ζε θάζε πιεηάδα. π.ρ., HAVING AVG(Salary)>15000 5. ORDER BY: Ταμηλόκεζε ηα απνηειέζκαηα βάζεη ηεο ζπλζήθεο π.ρ., ORDER BY AVG(Salary) 6. SELECT: Πξόβαιε ηα αηηνύκελα γλσξίζκαηα (από ην TEMP2) εθαξκόδνληαο ηα ζρεηηθά aliases ζηα απιά γλσξίζκαηα. π.ρ., SELECT DNO (ζπκεζείηε όηη ηα γλσξίζκαηα ηνπ ORDER BY δελ ρξεηάδεηαη λα εκθαλίδνληαη ζην SELECT) TEMP1 Dno, SSN, Sal 1, E1, 10000 2, E2, 12000 1, E3, 15000 2, E4, 20000... TEMP2 Dno, Avg(Sal) 1, 12500 2, 16000.. 16-7

Οκαδνπνίεζε ζε SQL (GROUP BY) Query 20: Γηα θάζε department, αλάθηεζε ην department number, ηνλ αξηζκό ησλ employees ζην ελ ιόγσ department, θαη ηνλ κέζν κηζζό ηνπο. Q20: SELECT DNO, COUNT (*), AVG (SALARY) FROM EMPLOYEE GROUP BY DNO Δλλνηνινγηθή Δθηέιεζε Δπεξώηεζεο: Η βάζε εθηειεί κηα γξακκηθή δηέιεπζε ηνπ πίλαθα Employee. Γηα θάζε πιεηάδα, βξίζθεη ην DNO ηεο πιεηάδαο, βάζεη ηνπ νπνίνπ απμάλεη ηνπο αθόινπζνπο κεηξεηέο: A. TUPLE_COUNT[DNO], B. SALARY_SUM[DNO], C. SALARY_COUNT_NONULLS[DNO], Σην ηέινο ηππώλεη γηα θάζε DNO ηα αθόινπζα: Dno, A, B/C 16-8

Οκαδνπνίεζε ζε SQL (GROUP BY) SELECT DNO, COUNT(*) AS Count, AVG(SALARY) AS AVG_Salary FROM EMPLOYEE GROUP BY DNO To SELECT μπλοκ εδώ δεν δοςλεύει σωπίρ ηο GROUP BY (λόγω ηηρ ύπαπξηρ ηος DNO). EMPLOYEE Γηα ην Department DNO=2 (40K + 30K+20K+56K+15K) / 5 Q20a Με NULLs Φσξίο NULLs 16-9

Οκαδνπνίεζε ζε SQL (GROUP BY) SELECT DNO, COUNT(*) AS Count, AVG(SALARY) AS AVG_Salary FROM EMPLOYEE GROUP BY DNO, SSN -- Σσζηό, Φσξίο Ιδηαίηεξν Νόεκα σζηόζν EMPLOYEE Q20b 16-10

Οκαδνπνίεζε ζε SQL (GROUP BY) Δπηζεκάλζεηο: 1. Τν SELECT πεξηιακβάλεη είηε Aggregates (ΜΙΝ, ΜΑΦ, θηι) ή γλσξίζκαηα πνπ εκθαλίδνληαη θαη ζην GROUP BY, π.ρ., ΟΡΘΟ(ρσξίο ηδηαίηεξε ινγηθή): SELECT dno FROM EMPLOYEE GROUP BY dno, ssn -- πξνεγνύκελν παξάδεηγκα ΟΡΘΟ(ρσξίο ηδηαίηεξε ινγηθή): SELECT dno, ssn FROM EMPLOYEE GROUP BY dno,ssn ΛΑΘΟ: SELECT dno, ssn FROM EMPLOYEE GROUP BY dno -- απηό δηόηη ην ssn δελ πξνβάιιεηαη ζην ελδηάκεζν απνηέιεζκα ηνπ Group By 2. Δάλ ππάξρεη NULL ζην γλώξηζκα νκαδνπνίεζεο ηόηε ηα νκαδνπνηεκέλα απηά απνηειέζκαηα εκθαλίδνληαη ζε κηα λέα επηπιένλ νκάδα. 16-11

Οκαδνπνίεζε ζε SQL (GROUP BY) Query 21: Γηα θάζε project, αλάθηεζε ην project number, project name, θαη ηνλ αξηζκό ησλ employees πνπ δνπιεύνπλ πάλσ ζην ελ ιόγσ project. Q21: SELECT PNUMBER, PNAME, COUNT (*) FROM PROJECT, WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER, PNAME Δμάζθεζε: Πεξηγξάςεηε ελλνηνινγηθά πσο ζα εθηειεζηεί ε πην πάλσ επεξώηεζε (κε βάζεη ηελ ινγηθή πνπ πεξηγξάςακε λσξίηεξα) 16-12

Δπηινγή κεηά από Οκαδνπνίεζε (HAVING) Ο όξνο HAVING, ρξεζηκνπνηείηαη όηαλ ζέινπκε λα επηιέμνπκε έλα ππνζύλνιν ελόο νκαδνπνηεκέλνπ απνηειέζκαηνο βάζεη ζπλζήθεο. Π.ρ., επηινγή ησλ DΝΟ κε κέζν κηζζό πάλσ από 35,000 Δπηζεκάλζεηο Τν HAVING έρεη αληίζηνηρε ιεηηνπξγία κε ην WHERE, κόλν πνπ ε ζπλζήθε επηινγήο είλαη πάλσ ζε νκάδεο παξά ζε επί κέξνπο πιεηάδεο. Τα γλσξίζκαηα πνπ εκθαλίδνληαη ζην HAVING πξέπεη νπσζδήπνηε λα εκθαλίδνληαη ζην GROUP BY (ζπκεζείηε ηα βήκαηα ηεο ελλνηνινγηθήο εθηέιεζεο επεξσηήζεσλ) Π.ρ., HAVING AVG(Salary)>35000 16-13

Δπηινγή κεηά από Οκαδνπνίεζε (HAVING) Query 22: Γηα θάζε project πάλσ ζην νπνίν δνπιεύνπλ πεξηζζόηεξνη από 2 employees, αλάθηεζε ην project number, project name, θαη ηνλ αξηζκό ησλ employees πνπ δνπιεύνπλ πάλσ ζην project απηό. Q22: SELECT PNUMBER, PNAME, COUNT(*) FROM PROJECT, WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER, PNAME HAVING COUNT (*) > 2 O βαζηθόο ιόγνο πνπ θάλνπκε group by βάζεη θαη ηνπ PNAME είλαη επεηδή ζέινπκε ην PNAME ζην απνηέιεζκα ηνπ SELECT 16-14

Αιιάδνληαο ηελ Καηάζηαζε κηο Βάζεο κε SQL Μέρξη ζηηγκήο είδακε ηα αθόινπζα: Οξηζκόο Γνκήο Βάζεο κε SQL-DDL (CREATE) Μεηαβνιή Γνκήο Βάζεο κε SQL-DDL (ALTER/DROP) Οξηζκόο Δπεξσηήζεσλ κε SQL-DML (SELECT ) Ήξζε ε ώξα λα δνύκε πσο κπνξνύκε λα κεηαβάινπκε ηελ θαηάζηαζε κηαο βάζεο κε εηζαγσγέο, δηαγξαθέο, θαη ελεκεξώζεηο πιεηάδσλ ζε SQL-DML. Θα κειεηήζνπκε ηηο εληνιέο INSERT, DELETE, and UPDATE ηεο SQL:99 αιιά θαη θάπνηεο εμεηδηθεπκέλεο εληνιέο ηεο TSQL. 16-15

Δηζαγσγή Γεδνκέλσλ ζηελ SQL (INSERT) H εληνιή INSERT εηζάγεη κηα ή πεξηζζόηεξεο πιεηάδεο ζε κηα πθηζηάκελε ζρέζε INSERT [INTO] <table-name> [(<column-list>)] VALUES (<data values>) [, (<data values>)] [, n]; Π.ρ., INSERT INTO EMPLOYEE(surn,name,ssn,age) VALUES ('Name', Lastname', 748797, 34); Δπηζεκάλζεηο: Δάλ δελ νξηζηεί ην (<column-list) ηόηε πξέπεη: 1.Να δνζνύλ ηα (<data values>) γηα ΌΛΑ ηα γλσξίζκαηα, KAI 2.Να δνζνύλ ηα (<data values>) κε ηελ ίδηα ζεηξά όπσο απηά νξίζηεθαλ θαηά ηελ CREATE TABLE εληνιή Π.ρ., INSERT INTO EMPLOYEE VALUES (748797, 'Name', Lastname',34); 16-16

Δηζαγσγή Γεδνκέλσλ ζηελ SQL (INSERT) Δηζαγσγή Σηκώλ γηα πγθεθξηκέλα Πεδία: Δάλ ην επηηξέπνπλ νη πεξηνξηζκνί ηνπ πίλαθα, ηόηε κπνξεί λα γίλεη εηζαγσγή ππνζπλόινπ πεδίσλ, π.ρ., INSERT INTO EMPLOYEE(ssn) VALUES (7); Σε απηέο ηηο πεξηπηώζεηο ηα ππόινηπα πεδία είηε κέλνπλ NULL ή απηά παίξλνπλ ηηο αληίζηνηρεο DEFAULT ηηκέο ηνπο. Δπηζεκάλζεηο γηα TSQL: Πεδία ηύπνπ IDENTITY ζε TSQL ΓΔΝ πξέπεη λα κελ δειώλνληαη ξεηά ζην INSERT εθόζνλ απηά ζα ζπκπιεξσζνύλ απηόκαηα. INSERT INTO dbo.tab(name) VALUES ('SomeName') -- Δηζαγσγή Γεδνκέλσλ. SELECT @@IDENTITY; -- Δμεύξεζε Τειεπηαίαο Δηζαρζείζαο IDENTITY ηηκήο ζε TSQL. Δηζαγσγή Πνιιαπιώλ Δγγξαθώλ: H TSQL 08 (OXI ζε παιηόηεξεο εθδόζεηο) πξνζθέξεη ηελ δπλαηόηεηα εηζαγσγήο πνιιαπιώλ πιεηάδσλ κε κηα εληνιή INSERT, δει., INSERT INTO EMPLOYEE VALUES ('a','b',7,34), ('a','b',8,30), ('a','b',9,24), ('a','b',10,22); 16-17

Δηζαγσγή Γεδνκέλσλ ζηελ SQL (INSERT) Παξάδεηγκα: Υπνζέζηε όηη ζέιεηε λα δεκηνπξγήζεηε έλα λέν πίλαθα ν νπνίνο ζα έρεη γηα θάζε department ην name, number of employees, θαη ην άζξνηζκα ησλ salaries. Βήκα Α: Γεκηνπξγία Πίλαθα DEPTS_INFO U3A: CREATE TABLE DEPTS_INFO (DEPT_NAME VARCHAR(10), NO_OF_EMPS INTEGER, TOTAL_SAL INTEGER); Βήκα Β: Δηζαγσγή Γεδνκέλσλ ζηνλ DEPTS_INFO U3B: INSERT INTO DEPTS_INFO (DEPT_NAME, NO_OF_EMPS, TOTAL_SAL) SELECT DNAME, COUNT (*), SUM (SALARY) FROM DEPARTMENT, EMPLOYEE WHERE DNUMBER=DNO GROUP BY DNAME ; Σημείωση: Εδώ ηο INSERT είναι ολόκληπο SELECT μπλοκ 16-18

Δηζαγσγή Γεδνκέλσλ ζηελ SQL (INSERT) Σεκεηώζηε όηη ζην πξνεγνύκελν παξάδεηγκα, ν πίλαθαο DEPTS_INFO ΓΔΝ ζα είλαη ελεκεξσκέλνο ζε πεξίπησζε πνπ κεηαβάιιεηαη είηε ν πίλαθαο DEPARTMENT ή ν πίλαθαο EMPLOYEE. Σε εξρόκελεο δηαιέμεηο ζα κάζνπκε ηελ έλλνηα ησλ Όςεσλ (Views) ηα νπνία κπνξνύλ λα δηαηεξνύλ ελεκεξσκέλν έλα πίλαθα πνπ νξίδεηαη βάζεη άιισλ πηλάθσλ. 16-19

Μαδηθή Δηζαγσγή Γεδνκέλσλ ζε TSQL (BULK INSERT) Μηα εμαηξεηηθά ρξήζηκε εληνιή είλαη ε BULK INSERT ε νπνία εηζάγεη καδηθά δεδνκέλα από αξρεία θεηκέλνπ: ηoλ SQL Server: BULK INSERT OrdersBulk FROM 'c:\data.csv' WITH (FIRSTROW=2, FIELDTERMINATOR=',', ROWTERMINATOR='\n ) Υπνζέζηε όηη έρνπλ πξνεγεζεί ηα αθόινπζα: CREATE TABLE OrdersBulk(CustomerID INT, CustomerName VARCHAR(32), OrderID INT, OrderDate SMALLDATETIME) Τν data.csv ζεσξήζηε όηη έρεη ηελ αθόινπζε δνκή: # CustomerID,CustomerName,OrderID,OrderDate 1,foo,5,20031101 3,blat,7,20031101 5,foobar,23,20031104 ηελ PostgreSQL: COPY products(product_no, name, price) FROM '/tmp/products.dat WITH DELIMITER ', ; BULK Insert: http://msdn.microsoft.com/en-us/library/ms188365.aspx 16-20

Γηαγξαθή Γεδνκέλσλ ζηελ SQL (DELETE) H εληνιή DELETE δηαγξάθεη πιεηάδεο από κηα ζρέζε βάζεη θάπνηαο νξηζκέλεο ζπλζήθεο: DELETE [FROM] <table-name> [WHERE <condition>] Π.ρ., DELETE FROM EMPLOYEE where Dno=5; Δπηζεκάλζεηο 1. Δάλ δελ νξηζηεί ν όξνο WHERE, ηόηε ζβήλνληαη ΟΛA oια ηα δεδνκέλα (πιεηάδεο) κηαο ζρέζεο. Π.ρ., «DELETE FROM EMPLOYEE» (αληίζηνηρν ηεο TRUNCATE EMPLOYEE) Τν DROP από ηελ άιιε ζβήλεη ηόζν ηα δεδνκέλα όζν θαη ην ζρήκα ηεο βάζεο από ηνλ θαηάινγν ηνπ ζπζηήκαηνο. 16-21

Γηαγξαθή Γεδνκέλσλ ζηελ SQL Δπηζεκάλζεηο (DELETE) 2. Οη θαλόλεο αλαθνξηθήο αθεξαηόηεηαο επηβάιινληαη από ηελ βάζε θαηά ηελ δηαγξαθή π.ρ., ην ζύζηεκα απαγνξεύεη ηελ δηαγξαθή ελόο EMPLOYEE πνπ αλαθέξεηαη από ηελ ζρέζε WORKS_ON. 3. Γελ ππάξρεη ε έλλνηα ηεο δηαγξαθήο από πνιιαπινύο πίλαθεο. Κάζε δηαγξαθή αλαθέξεηαη ζε 1 πίλαθα U4A: DELETE FROM EMPLOYEE WHERE LNAME='Brown Ωζηόζν, εάλ νξίδνληαη Δληνιέο Δλεξγνπνίεζεο Αλαθνξάο, ηόηε κηα δηαγξαθή κπνξεί λα πξνθαιέζεη κηα ή πεξηζζόηεξεο αιπζηδσηέο δηαγξαθέο π.ρ., εάλ έρνπκε ON DELETE CASCADE ζηελ WORKS_ON(ssn) (κε αλαθνξά ζηνλ EMPLOYEE(ssn)) ηόηε ε δηαγξαθή ελόο EMPLOYEE ζβήλεη θαη ηελ αληίζηνηρε πιεηάδα από ηελ WORKS_ON. 16-22

Γηαγξαθή Γεδνκέλσλ ζηελ SQL (DELETE) Παξάδεηγκα δηαγξαθήο κέζσ Δκθσιεπκέλεο Δπεξώηεζεο: Γηάγξαςε όινπο ηνπο Employees πνπ δνπιεύνπλ ζην ηκήκα ηνπ Research. Θπκεζείηε όηη Employee(,Dno) θαη Department(Dno,Dname, ) U4C: DELETE FROM EMPLOYEE WHERE DNO IN ( SELECT DNUMBER FROM DEPARTMENT WHERE DNAME='Research ) Με ην ΙΝ απνθεύγνπκε ηελ ζπλέλσζε πνπ δελ είλαη εθηθηή ζηα πιαίζηα ηνπ DELETE 16-23

Δλεκέξσζε Γεδνκέλσλ ζηελ SQL (UPDATE) H εληνιή UPDATE ρξεζηκνπνηείηαη γηα λα ελεκεξώλεη ηελ ηηκή πξνθαζνξηζκέλσλ γλσξηζκάησλ κηαο ζρέζεο βάζεη θάπνηαο ζπλζήθεο. UPDATE <table-name> SET <column>=<value> [,<column>=<value>] [FROM <source table(s)>] [WHERE <condition>] Π.ρ., UPDATE Employee SET Dno=5 WHERE sex= M ; Δπηζεκάλζεηο: Τν WHERE ρξεζηκνπνηείηαη γηα λα πξνζδηνξηζηεί ην ζύλνιν εγγξαθώλ πνπ πξέπεη λα ελεκεξσζεί Τν SET πξνζδηνξίδεη ηα γλσξίζκαηα πνπ πξέπεη λα ελεκεξσζνύλ θαη ηελ λέα ηνπο ηηκή. Η ελεκέξσζε γίλεηαη ζε 1 ζρέζε (όρη πνιιέο) ηαπηόρξνλα. Οη θαλόλεο αθεξαηόηεηαο επηβάιινληαη απηόκαηα 16-24

Δλεκέξσζε Γεδνκέλσλ ζηελ SQL (UPDATE) Παξάδεηγκα: Δλεκέξσζε ην PLocation ηνπ Project κε αξηζκό 10 ζε 'Bellaire. Δπίζεο, ελεκέξσζε ηo Dnum ηνπ ελ ιόγσ project number ζε 5. =10 :=Bellaire :=5 U5: UPDATE PROJECT SET PLOCATION = 'Bellaire', DNUM=5 WHERE PNUMBER=10 16-25

Δλεκέξσζε Γεδνκέλσλ ζηελ SQL (UPDATE) εκείσζε: To UPDATE κπνξεί λα δεκηνπξγεζεί βάζεη πνιιώλ πηλάθσλ αιιά ε ηειηθή ελεκέξσζε γίλεηαη κόλν ζε 1 πίλαθα. Παξάδεηγκα: Γώζε ζε όινπο ηνπο employees ζην 'Research' department κηα αύμεζε 10% ζηνλ κηζζό. U6: UPDATE EMPLOYEE SET SALARY = SALARY *1.1 WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME='Research') Καη πάιη, κε ην ΙΝ απνθεύγνπκε ηελ ζπλέλσζε πνπ δελ είλαη εθηθηή ζηα πιαίζηα ηνπ DELETE Νέν salary Παιαηό salary 16-26

Δλεκέξσζε Γεδνκέλσλ ζηελ SQL (INSERT/UPDATE/DELETE) Γεληθέο Δπηζεκάλζεηο Μηα Δλεκέξσζε (UPDATE) απνηπγράλεη εάλ παξαβηαζηνύλ θαλόλεο θαη πεξηνξηζκνί πνπ έρνπλ νξηζηεί, δει., Πεξηνξηζκνί, Αλαθνξηθήο Αθεξαηόηεηαο, CHECK, NULL, ζπκβαηόηεηα-πξνο-ηνλ-ηύπo, θηι. Σε απηέο ηηο πεξηπηώζεηο αθπξώλνληαη ΟΛΔ νη ελεκεξώζεηο (όρη κόλν απηή πνπ πξνθάιεζε ηελ παξαβίαζε). H Δλεκέξσζε (UPDATE) Primary Keys πξέπεη λα γίλεηαη κε κεγάιε πξνζνρή εθόζνλ απηή ελδέρεηαη λα πξνθαιέζεη αιπζηδσηέο αιιαγέο ζηελ θαηάζηαζε ηεο βάζεο. 16-27