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

Σχετικά έγγραφα
Διδάσκων: Παναγιώτης Ανδρέου

Lecture 14: SQL DML I

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

Διάλεξη 10: Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός (Relational Algebra/Calculus) ΙI

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

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

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

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός

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

SQL Data Manipulation Language

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

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

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα

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

Lecture 16: SQL DML III

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

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

Τμήμα Πληροφορικής ΑΠΘ

ΗΥ360: Αρχεία και Βάσεις Δεδομένων Διδάσκων: Πλεξουσάκης Δημήτρης. Φροντιστήριο Σχεσιακή Άλγεβρα Δημητράκη Κατερίνα

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

Αρχεία και Βάσεις Δεδομένων

ΗΥ360 Αρχεία και Βάσεις Δεδομένων. Φροντιστήριο στην Σχεσιακή Άλγεβρα.

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

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

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Δεδομένων. Βασίλειος Βεσκούκης Ορισμός Βάσης Δεδομένων Δομή Περιορισμοί

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

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

Σχεσιακή Άλγεβρα Σχεδιασμός Βάσεων Δεδομένων

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

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

SQL: Αιτήματα. Κεφάλαιο 5. Database Management Systems, R. Ramakrishnan and J. Gehrke

Τμήμα Διοίκησης Επιχειρήσεων

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

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

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

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ (Relational Model) Μαθ. #10

Σχεσιακή Άλγεβρα Relational Algebra

SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 4 7/02/2012

Σχεδιασμός Βάσεων Δεδομένων

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

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

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

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

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005

Σύνολα Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

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

Βάσεις Δεδομένων Ενότητα 6

Τμήμα Πληροφορικής ΑΠΘ

Διδάσκων: Παναγιώτης Ανδρέου

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

Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων


Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Σχεδίαση Βάσεων Δεδομένων

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

Lecture 21: Functional Dependencies and Normalization

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

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Τελεστής Προβολής - Παράδειγμα. Π Πόλη, Εξάμηνο (Φοιτητές)

Σχεσιακή Άλγεβρα. Παύλος Εφραιμίδης. Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 1

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

Διδάσκων: Παναγιώτης Ανδρέου

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Lecture 8: RM I + RA I

Διαχείριση Πολιτισμικών Δεδομένων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πράξεις στο Σχεσιακό Μοντέλο

SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή στην πληροφορική

Τεχνολογία Πολιτισμικού Λογισμικού

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

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

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3

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

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 8: RM II. Relational Model. (Chapter )

Query-by-Example (QBE)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ342: Βάσεις Δεδομένων. Χειμερινό Εξάμηνο Φροντιστήριο 10 ΛΥΣΕΙΣ. Επερωτήσεις SQL

Lecture 15: SQL DML II

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

ΗΓλώσσαSQL. Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

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

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Βάσεις εδοµένων. Συνολοθεωρητικές Πράξεις. Ειδικές Πράξεις. Εκφράσεις. Θεµελίωση της Σχεσιακού Μοντέλου εδοµένων. Σχεσιακή Άλγεβρα Σχεσιακός Λογισµός

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Φροντιστήριο Σχεσιακή Άλγεβρα (μέρος 2 ο ) - Σχεσιακός Λογισμός Δημητράκη Κατερίνα

Τμήμα Πληροφορικής ΑΠΘ

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

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Transcript:

Διάλεξη 13: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: Εισαγωγή στην SQL DML SELECT, FROM, WHERE, ORDER BY DISTINCT Πράξεις σε σύνολα Διδάσκων: Παναγιώτης Ανδρέου EPL342: Databases Panayiotis Andreou 2013 1

Εισαγωγή Η Γλώσσα επεξεργασίας Δεδομένων (SQL DML) επιτρέπει την επεξεργασία των δεδομένων της ΒΔ Η SQL DDL επέτρεπε την επεξεργασία της δομής της ΒΔ 4 Βασικές Πράξεις: Ανάκτηση, Εισαγωγή, Διαγραφή, Ενημέρωση Το πρότυπο SQL:99 DML υλοποιείται σε μεγάλο βαθμό από τους κατασκευαστές βάσεων δεδομένων (π.χ., στην TSQL, PL/SQL) Αντίθετα με την SQL DDL η οποία αντιμετωπίζει αρκετά προβλήματα συμβατότητας μεταξύ κατασκευαστών. Συμβατότητα με το πρότυπο σημαίνει (συνήθως): Αύξηση Μεταφερσιμότητας (Portability) Μείωση Επίδοσης (Performance) EPL342: Databases Panayiotis Andreou 2013 2

Απλή Ανάκτηση Δεδομένων (SELECT FROM WHERE) H βασική έκφραση SQL για διατύπωση επερωτήσεων ονομάζεται SELECT FROM WHERE μπλοκ (ή mapping) SELECT FROM [WHERE <attribute list> <table list> <condition>] <attribute list> Είναι μια λίστα γνωρισμάτων των οποίων η τιμή πρέπει να ανακτηθεί από μια επερώτηση. Αν χρησιμοποιηθεί το * τότε επιστρέφονται όλα τα γνωρίσματα <table list> είναι μια λίστα από ονόματα πινάκων από τα οποία θα γίνει η ανάκτηση των αποτελεσμάτων. <condition> είναι μια συνθήκη (επιστρέφει True/False) η οποία πρέπει να ικανοποιείται από μία πλειάδα που θα συμπεριληφθεί στο τελικό αποτέλεσμα Τα αποτελέσματα επιστρέφονται κάποτε σε αύξουσα σειρά του attribute list (όχι σε SQL Server). EPL342: Databases Panayiotis Andreou 2013 3

Αντιστοίχηση Σχεσιακής Άλγεβρας με SQL DML SELECT * FROM R WHERE θ SELECT Α 1, Α 2, FROM R SELECT Α 1 as id, Α 2, FROM R as S Ένωση/Union ( ) Τομή/Intersec on ( ) Αφαίρεση/ Set Difference ( ) Καρτεσιανό Γινόμενο/ Cartesian Product (x) R UNION S R INTERSECT S R S R, S EPL342: Databases Panayiotis Andreou 2013 4

Αντιστοίχηση Σχεσιακής Άλγεβρας με SQL DML A R B a 1 b 2 c 4 S B C 1 x 2 y 3 z R.. S A B C a 1 x b 2 y Συνένωση Θ/ Θ Join ( ) SELECT R.A, R.B, S.C FROM R JOIN S ON θ θ: R.B=S.B SELECT R.A, R.B, S.C FROM R, S (CROSS JOIN) SELECT A,B,C FROM R * S SELECT R.A, R.B FROM R JOIN S ON θ? FROM R LEFT JOIN S ON θ SELECT R.A, R.B, S.C FROM R FULL OUTER JOIN S ON θ EPL342: Databases Panayiotis Andreou 2013 5

Διαφορές της SQL και Σχεσιακής Άλγεβρας A) H SQL στηρίζεται σε Σύνολα μη Διακριτών Τιμών ή αλλιώς Πολυσύνολα (Μulti set), ενώ το Σχεσιακό Μοντέλο / Άλγεβρα σε Απλά Σύνολα (διακριτών τιμών). Η SQL επιτρέπει τα διπλότυπα (duplicates) σε σχέσεις και αποτελέσματα επερωτήσεων. Σημειώστε ότι οι σχέσεις SQL μπορούν να περιοριστούν έτσι ώστε να συμπεριφέρονται ως μαθηματικά σύνολα κάνοντας χρήση περιορισμών PRIMARY KEY, UNIQUE, ή με χρήση του DISTINCT Β) Σχέσεις SQL και αποτελέσματα έχουν διάταξη (order) ενώ στο Σχεσιακό Μοντέλο / Άλγεβρα δεν έχουν, δηλ., Επίπεδο Σχέσης: Σειρά αποθήκευσης στοιχείων στον δίσκο Επίπεδο Επερώτησης: Αύξουσα Σειρά / Φθίνουσα Σειρά EPL342: Databases Panayiotis Andreou 2013 6

Διαφορές της SQL και Σχεσιακής Άλγεβρας Ένα πολυσύνολο (multi set or bag) είναι ένα μηδιατεταγμένο σύνολο στοιχείων, όπου ένα στοιχείο μπορεί να εμφανίζεται περισσότερο από μια φορά. Παράδειγμα: {A, B, C, A} είναι ένα πολυσύνολο, ενώ το {A, B, C} είναι πολυσύνολο και απλό σύνολο. Η SQL παράγει πολυσύνολα στα οποία υπάρχει διάταξη (κάποια σειρά) στα αποτελέσματα (ουσιαστικά λίστες). Παράδειγμα: {A, B} = {B, A, A} ως Σύνολα {A, B, A} = {B, A, A} ως Πολυσύνολα [A, B, A] [B, A, A] ως Λίστες (που παράγονται στην SQL) EPL342: Databases Panayiotis Andreou 2013 7

Σύνταξη SQL DML: SELECT []: optional, Bold: τι θα δούμε στο μάθημα [ WITH <common_table_expression>] SELECT select_list [ INTO new_table ] [ FROM table_source ] [ WHERE search_condition ] [ GROUP BY group_by_expression ] [ HAVING search_condition ] [ ORDER BY order_expression [ ASC DESC ] ] http://msdn.microsoft.com/en us/library/ms189499.aspx EPL342: Databases Panayiotis Andreou 2013 8

Προβολή/SELECT [FROM] (π) Είσοδος: Λίστα από γνωρίσματα ή * (*: όλα τα γνωρίσματα) Κενό σύνολο, ένας ή περισσότεροι πίνακες προβολής Έξοδος: Όψη ή οποία περιλαμβάνει όλες τις πλειάδες από τους πηγαίους πίνακες Παράδειγμα: Αναφορά με PID, PNAME από τον πίνακα PERSON Σχεσιακή Άλγεβρα: π PERSON_ID,NAME (PERSON) SQL: SELECT PID, PNAME FROM PERSON EPL342: Databases Panayiotis Andreou 2013 9

Γενικευμένη Προβολή/Generalized Projection Γενικευμένη Προβολή (Generalized Projection): Επεκτείνει την πράξη της προβολής επιτρέποντας να συμπεριληφθούν στη λίστα της προβολής: Σταθερές τιμές (με πίνακα) Π.χ., SELECT 1, PID FROM PERSON Σταθερές τιμές (χωρίς πίνακα) Π.χ., SELECT 1 Συναρτήσεις γνωρισμάτων Π.χ., SELECT PID*5 FROM PERSON Π.χ., SELECT Mr/Mrs + PNAME FROM PERSON Ισχύει και στην σχεσιακή άλγεβρα EPL342: Databases Panayiotis Andreou 2013 10

Μη υπαρκτά Ονόματα Όπως είδαμε στη προηγούμενη διαφάνεια, η χρήση σταθερών τιμών ή συναρτήσεων δημιουργεί γνωρίσματα χωρίς επικεφαλίδα Μπορούμε να μετονομάζουμε (aliasing) κάνοντας χρήση του AS. Σταθερές τιμές (με πίνακα) Π.χ., SELECT 1 AS CUSTOM, PID FROM PERSON Σταθερές τιμές (χωρίς πίνακα) Π.χ., SELECT 1 AS TEST Συναρτήσεις γνωρισμάτων Π.χ., SELECT PID*5 AS TEST_ID FROM PERSON Π.χ., SELECT Mr/Mrs + PNAME AS TEST_NAME FROM PERSON EPL342: Databases Panayiotis Andreou 2013 11

Χρήση DISTINCT H SQL χειρίζεται τις σχέσεις ως Πολυσύνολα με διάταξη, συνεπώς είναι δυνατό να υπάρχουν διπλότυπα (duplicate tuples). Για να εξαλείψουμε τα διπλότυπα σε μια επερώτηση, κάνουμε χρήση της λέξης DISTINCT στον όρο SELECT. Παράδειγμα Q1: SELECT GENDER FROM PERSON GENDER M M F F Q2: SELECT DISTINCT GENDER FROM PERSON GENDER M F EPL342: Databases Panayiotis Andreou 2013 12

Χρήση DISTINCT/SELECT ALL Εκτός από το SELECT DISTINCT υπάρχει και το SELECT ALL, το οποίο ΔΕΝ αφαιρεί τα διπλότυπα. Συγκεκριμένα, SELECT [DISTINCT ALL] <attribute list> FROM <table list> Το SELECT ALL αντιπροσωπεύει ουσιαστικά την εξορισμού λειτουργία του SELECT. Όπως αναφέραμε και σε προηγούμενες διαλέξεις, στην SQL πολλά πράγματα δηλώνονται ρητά γιατί έτσι: Ξεκαθαρίζει η πρόθεση του σχεδιαστή Αποφεύγονται προβλήματα συμβατότητας που μπορεί να προκύψουν από μεταφορά του κώδικα σε άλλη ΒΔ. EPL342: Databases Panayiotis Andreou 2013 13

Προβολή /SELECT [FROM] (π) Παράδειγμα με δύο ή περισσότερους πίνακες: Αναφορά με Ταυτότητα, Όνομα Υπαλλήλου και όνομα τμήματος του υπαλλήλου E: EMPLOYEE SSN ENAME DOB GENDER DNO 1 Andreas 1/1/80 M 1 2 Kostas 1/1/85 M 1 3 Maria 4/3/83 F 1 D: DEPARTMENT DNO DNAME 1 Finance 2 Audit 3 Management 4 Eleni 6/7/85 F 2 5 Victoria 27/2/84 F 3 Σχεσιακή Άλγεβρα: π SSN,ENAME,DNAME (PERSON*DEPARMENT) SQL: SELECT SSN,ENAME,DNAME FROM PERSON, DEPARTMENT (πως συνδέονται οι πίνακες??) WHERE PERSON.DNO=DEPARTMENT.DNO EPL342: Databases Panayiotis Andreou 2013 14

Επιλογή/ WHERE (σ) Είσοδος: Λίστα από γνωρίσματα ή * (*: όλα τα γνωρίσματα) Ένας ή περισσότεροι πίνακες Συνθήκη Θ (υπολογίζεται σε TRUE/FALSE) Έξοδος: Όψη ή οποία περιλαμβάνει όλες τις πλειάδες από τους πίνακες που ικανοποιούν την συνθήκη Θ Παράδειγμα: Αναφορά με όλα τα γνωρίσματα από τον πίνακα PERSON όπου το PID είναι μεγαλύτερο του 2 Σχεσιακή Άλγεβρα: σ PID>2 (PERSON) SQL: SELECT * FROM PERSON WHERE PID>2 EPL342: Databases Panayiotis Andreou 2013 15

Επιλογή/ WHERE (σ) Το WHERE υποστηρίζει πολλά είδη συνθηκών: Αριθμητικές Συγκρίσεις: <, >, =, κτλ Συγκρίσεις Εύρους: BETWEEN a AND b Συγκρίσεις Σε Σύνολα: CITY IN ( City A, City B, City C ) Συγκρίσεις με NULL: VALUE IS NULL Πολλά άλλα Αν υπάρχουν πολλές Συνθήκες/Κριτήρια Επιλογής τότε διαχωρίζονται με λογικούς τελεστές: AND, OR, ΝΟΤ Π.χ,. ΝΟΤ GENDER= F AND PERSON_ID>3 Ισχύει η αντιμεταθετική ιδιότητα (commutative) Π.χ,. WHERE GENDER= F AND PERSON_ID>3 ισοδύναμο με WHERE PERSON_ID>3 AND GENDER= F EPL342: Databases Panayiotis Andreou 2013 16

Μετονομασία/Rename (ρ) Η μετονομασία επιτυγχάνεται με το aliasing (AS) Δεν χρειάζεται να γραφεί το AS για την μετονομασία πινάκων Ιδιαίτερα χρήσιμο όταν χρειαζόμαστε να χρησιμοποιήσουμε τον ίδιο πίνακα 2 φορές (π.χ., supervisor) Παραδείγματα: Μετονομασία Πινάκων Π.χ., SELECT * FROM PERSON (AS) P Μετονομασία Γνωρισμάτων Π.χ., SELECT PID AS PERSON_ID FROM PERSON Ταυτόχρονη Μετονομασία Πινάκων και Γνωρισμάτων Π.χ., SELECT P.PID AS PERSON_ID FROM PERSON (AS) P EPL342: Databases Panayiotis Andreou 2013 17

Ταξινόμηση (ORDER BY) Η ταξινόμηση επιτυγχάνεται με το (ORDER BY) Επιτρέπεται ταξινόμηση σε αύξουσα (ASCENDING ASC) και φθίνουσα (DESCENDING DESC) σειρά Η εξ ορισμού ταξινόμηση είναι η ASC Αν δεν δηλωθεί το ORDER BY τότε η ταξινόμηση γίνεται βάση του πρωτεύων κλειδιού Παραδείγματα (SELECT * FROM PERSON ) Ένα γνώρισμα, μία σειρά ( ORDER BY ENAME) Πολλά γνωρίσματα, πολλές σειρές ( ORDER BY DNO DESC, ENAME ASC) EPL342: Databases Panayiotis Andreou 2013 18

Πράξεις Συνόλων σε SQL (SQL Set Operations) Είσοδος: Δύο Πίνακες Έξοδος: Ένας καινούριος Πίνακας Η SQL παρόμοια με την σχεσιακή άλγεβρα υποστηρίζει τις ακόλουθες πράξεις σε σύνολα Ένωση/Union: UNION ( ) Αφαίρεση/ Set Difference: EXCEPT, MINUS ( ) Τομή/Intersection: INTERSECTION ( ) Καρτεσιανό Γινόμενο/ Cartesian Product:, CROSS JOIN (x) EPL342: Databases Panayiotis Andreou 2013 19

Πράξεις Συνόλων σε SQL H SQL:99 υλοποιεί αρκετές πράξεις συνόλων τις οποίες ορίσαμε στα πλαίσια της Σχεσιακής Άλγεβρας. Συγκεκριμένα, υποστηρίζονται οι ακόλουθες πράξεις: Ένωση: UNION [ALL] Τομή: INTERSECT Διαφορά Συνόλων: MINUS/EXCEPT/ Προϋποθέτουν ότι τα σύνολα είναι i) συμβατά προς τον τύπο και ii) η διάταξη των γνωρισμάτων είναι η ίδια (δεν χρειάζεται να έχουν το ίδιο όνομα) Διαφορά Πράξεων Συνόλων από άλλες πράξεις SQL: Τα αποτελέσματα είναι ΣΥΝΟΛΑ όχι ΠΟΛΥΣΥΝΟΛΑ (συνεπώς δεν υπάρχουν διπλότυπα στις πράξεις αυτές) Θα δούμε πως παράγονται Πολυσύνολα σε λίγο. EPL342: Databases Panayiotis Andreou 2013 20

Παράδειγμα: Ένωση/Union ( ) Παράδειγμα: SELECT SID, SNAME FROM STUDENT UNION SELECT TID, TNAME FROM TEACHER STUDENT SID SNAME 1 Andreas 2 Kostas 3 Maria 4 Eleni r(student)=4 TEACHER TID TNAME 1 Andreas 2 Anna r(teacher)=2 STUDENT_TEACHER SID SNAME 1 Andreas 2 Kostas 3 Maria 4 Eleni 2 Anna r(student_teacher)=??? EPL342: Databases Panayiotis Andreou 2013 21

Παράδειγμα: Αφαίρεση/Set Difference ( ) Παράδειγμα: SELECT SID, SNAME FROM STUDENT MINUS/EXCEPT/ SELECT TID, TNAME FROM TEACHER STUDENT SID SNAME 1 Andreas 2 Kostas 3 Maria 4 Eleni r(student)=4 TEACHER TID TNAME 1 Andreas 2 Anna r(teacher)=2 STUDENT_TEACHER SID SNAME 2 Kostas 3 Maria 4 Eleni r(student_teacher)=3 EPL342: Databases Panayiotis Andreou 2013 22

Παράδειγμα: Τομή/Intersection ( ) Παράδειγμα: SELECT SID, SNAME FROM STUDENT INTERSECTION SELECT TID, TNAME FROM TEACHER STUDENT SID SNAME 1 Andreas 2 Kostas 3 Maria 4 Eleni r(student)=4 TEACHER TID TNAME 1 Andreas 2 Anna r(teacher)=2 STUDENT_TEACHER SID SNAME 1 Andreas r(student_teacher)=??? EPL342: Databases Panayiotis Andreou 2013 23

Πράξεις Συνόλων σε SQL Για να επιστραφούν αποτελέσματα Πολυσυνόλων, αντί αποτελέσματα συνόλων, (δηλ., δεν διαγράφονται τα διπλότυπα από ένα αποτέλεσμα) μπορεί να γίνει χρήση των ακόλουθων εντολών: UNION ALL, υποστηρίζεται και σε TSQL Π.χ., {(1,Pet), (2,Cat)} UNION ALL {(2,Cat),(1, Pet)} Επιστρέφει: { (1,Pet), (2,Cat), (2,Cat), (1, Pet) } INTERSECT ALL (δεν υλοποιείται σε TSQL) Π.χ., {(1,Pet), (2,Cat)} INTERSECT ALL {(1, Pet)} Επιστρέφει: { (1,Pet), (1, Pet) } EXCEPT ALL (δεν υλοποιείται σε TSQL) Π.χ., {(1,Pet), (2,Cat), (2,Cat)} EXCEPT ALL {(1, Pet)} Επιστρέφει:{(2,Cat), (2,Cat) } EPL342: Databases Panayiotis Andreou 2013 24

Άλλες Πράξεις Συνόλων σε SQL Σημειώστε ότι εάν ένας τελεστής δεν υλοποιείται στην SQL τότε μπορεί να υλοποιηθεί με χρήση βασικών τελεστών. Παραδείγματα Συμμετρική Διαφορά, R S= (R S) (S R) Διαίρεση, R S = π Α (R) π Α ((π Α (R) x S) R) Στην συνέχεια θα δούμε ότι υπάρχουν πολλές άλλες πράξεις σύγκρισης με σύνολα που χρησιμοποιούνται για διατύπωση επερωτήσεων σε SQL ΙΝ, ΑΝΥ, ALL, CONTAINS, EXISTS, κτλ. EPL342: Databases Panayiotis Andreou 2013 25

Παραδείγματα/Ασκήσεις E: EMPLOYEE SSN NAME DOB GENDER DNO 1 Andreas 1/1/80 M 1 2 Kostas 1/1/85 M 1 3 Maria 4/3/83 F 1 D: DEPARTMENT DNO DNAME 1 Finance 2 Audit 3 Management 4 Eleni 6/7/85 F 2 5 Victoria 27/2/84 F 3 Τύπωσε τα ονόματα των Τμημάτων (σε φθίνουσα σειρα) Τύπωσε όνομα και dno των υπάλληλων που είναι γυναίκες Τύπωσε όλα τα ονόματα της βάσης δεδομένων Τύπωσε τα ονόμ. τμήμ. των υπαλλήλων που έχουν γεννηθεί το 85 Τύπωσε όλα τα ονόματα των υπαλλήλων που έχουν SSN που υπάρχει σαν αριθμός τμήματος EPL342: Databases Panayiotis Andreou 2013 26