DISTINCT, LIKE, NULL, AND, OR, BETWEEN

Σχετικά έγγραφα
Ηλεκτρονικοί Υπολογιστές II

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) ΤΕΙ ΔυτικήςΜακεδονίας


1 / 97

1 / 87



1 / 150

1 / 105


DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT

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

Ηλεκτρονικοί Υπολογιστές II

Ερωτήματα επιλογής με σύζευξη πινάκων

Ηλεκτρονικοί Υπολογιστές II

Ηλεκτρονικοί Υπολογιστές II


Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

1 / 106

Ηλεκτρονικοί Υπολογιστές II

Ηλεκτρονικοί Υπολογιστές II

Ηλεκτρονικοί Υπολογιστές II

Πρόλογος Μέρος Ι Μια βόλτα στις βάσεις δεδομένων Μια βόλτα στις βάσεις δεδομένων...25


1 / 106

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

Ηλεκτρονικοί Υπολογιστές II

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

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος


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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

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

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

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

Ηλεκτρονικοί Υπολογιστές I

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Ηλεκτρονικοί Υπολογιστές II

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

ΘΕΜΑΤΑ. Θέμα 1 ο Σύμφωνα με τους παραπάνω πίνακες και τη θέση που έχουν τα ξένα κλειδιά βρείτε τους


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

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 8/11/07

Ηλεκτρονικοί Υπολογιστές ΙI. Βάσεις Δεδομένων. Ακαδημαϊκό Έτος Εργαστήριο 5. Διαφάνεια 1. Κάπαρης Αναστάσιος

ΕΠΛ 342 Βάσεις εδοµένων

Βάσεις Δεδομένων Ι 8. Ερωτήματα (B) Τμήμα Διοίκησης Επιχειρήσεων (Μεσολόγγι) ΤΕΙ Δυτικής Ελλάδας

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Στοιχεία προτασιακής λογικής

Βάσεις Περιβαλλοντικών Δεδομένων

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


Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης

Ανάπτυξη και Σχεδίαση Λογισμικού

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

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

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

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

HY118-Διακριτά Μαθηματικά. Προτασιακός Λογισμός. Προηγούμενη φορά. Βάσεις της Μαθηματικής Λογικής. 02 Προτασιακός Λογισμός

HY118-Διακριτά Μαθηματικά

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

SQL Data Manipulation Language

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

Βάσεις Δεδομένων Ι. Παραδείγματα. Γεώργιος Ευαγγελίδης, Καθηγητής Τμήμα Εφαρμοσμένης Πληροφορικής

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

Επεξεργασία Ερωτήσεων

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Επεξεργασία Ερωτήσεων

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

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

Κεφάλαιο 10 Άλλες Πράξεις Θεωρίας Συνόλων

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

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

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

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

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

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

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

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

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

a. Επιλέγουμε τις γραμμές προς διαγραφή a. Επιλέγουμε τις στήλες προς διαγραφή a. Γράφουμε σε μια στήλη μια σειρά από αριθμούς ή αλφαριθμητικά

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός

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

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

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης

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

Σχεσιακός Λογισμός. Σχεσιακός Λογισμός Πλειάδων. σχεσιακά πλήρης γλώσσα

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

Εργαστήριο Σημασιολογικού Ιστού

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

Αντώνης Χρυσόπουλος Στέλιος Μόσχογλου Θεοδόσης Σουργκούνης MYSQL PHP ADVANCED. Χέρι χέρι με τον Καρατζαφέρη

Transcript:

Περισσότερα για τα απλά ερωτήματα SQL DISTINCT, LIKE, NULL, AND, OR, BETWEEN Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 66

Σκοπός του μαθήματος Αποκλείσετε διπλοεγγραφές από αποτελέσματα ερωτημάτων Χειρίζεστε άγνωστες ή ελλιπείς τιμές (NULL) Εφαρμόζετε αναζήτηση με βάση ταίριασμα κειμένου Εκτελείτε ερωτήματα πολύπλοκων περιορισμών εφαρμόζοντας λογικούς τελεστές Εκτελείτε ερωτήματα με τη χρήση του τελεστή συνόλου και του τελεστή περιοχής 2 / 66

Περιεχόμενα 1 Απαλοιφή διπλοεγγραφών με DISTINCT 2 Ελεγχος για τιμές NULL 3 Ταίριασμα κειμένου 4 Λογική σύζευξη και διάζευξη 5 Τελεστής συνόλου IN 6 Τελεστής περιοχής τιμών BETWEEN... AND... 3 / 66

Απαλοιφή διπλοεγγραφών Να βρεθεί σε ποια τμήματα απασχολούνται οι υπάλληλοι Χωρίς απαλοιφή διπλοεγγραφών 1 SELECT depid 2 FROM employees; Με απαλοιφή διπλοεγγραφών 1 SELECT DISTINCT depid 2 FROM employees; depid 1 1 1 2 2... depid 1 2 3 4 5 6 4 / 66

Συνδυασμός πεδίων Να δοθεί το τμήμα και ο μισθός των υπαλλήλων 1 SELECT DISTINCT depid, salary 2 FROM employees; depid salary 6 1212.50 1 2787.69 2 1321.92 3 1101.70 6 1908.28...... Εδώ ελέγχεται ο συνδυασμός των τιμών στα πεδία depid και salary Ετσι, μια τιμή στο πεδίο depid μπορεί να εμφανιστεί δεύτερη (ή πολλαπλή) επειδή αντιστοιχίζεται με διαφορετική τιμή στο πεδίο salary Αν το ζεύγος τιμών τμήμα μισθός είναι ίδιο για δύο διαφορετικές εγγραφές τότε θα εμφανιστεί στο αποτέλεσμα μόνο μία φορά (λόγω DISTINCT) 5 / 66

DISTINCT και προβολή στη σχεσιακή άλγεβρα Η σχεσιακή πράξη της προβολής, πχ: Π depid (employees) εκφράζεται στην SQL πάντα με DISTINCT: 1 SELECT DISTINCT depid 2 FROM employees; και όχι χωρίς αυτό, πχ: 1 SELECT depid 2 FROM employees; Ο λόγος είναι απλός: η σχεσιακή άλγεβρα αφορά πράξεις συνόλων, οπότε δε μπορεί να υπάρχουν διπλοεγγραφές, τα στοιχεία ενός συνόλου είναι μοναδικά. 6 / 66

Και κάτι για εξάσκηση Να βρεθούν τα τμήματα στα οποία ο μισθός των υπαλλήλων θα ανέβει πάνω από 80 αν πάρουν αύξηση 3.5% 1 SELECT DISTINCT depid 2 FROM employees 3 WHERE salary*0.035 > 80; Π depid (σ salary 0.035>80 (employees)) depid 1 3 Μόνο στα τμήματα 1 και 3 υπάρχουν υπάλληλοι που αν ο μισθός τους αυξηθεί κατά 3.5% η αύξηση θα είναι μεγαλύτερη από 80. Στα τμήματα αυτά, πιθανά να υπάρχουν περισσότεροι από ένας υπάλληλος με τέτοια αύξηση. Αλλά αυτό που ενδιαφέρει είναι σε ποιο τμήμα, όχι σε ποιους και πόσους υπαλλήλους. 7 / 66

Περιεχόμενα 1 Απαλοιφή διπλοεγγραφών με DISTINCT 2 Ελεγχος για τιμές NULL 3 Ταίριασμα κειμένου 4 Λογική σύζευξη και διάζευξη 5 Τελεστής συνόλου IN 6 Τελεστής περιοχής τιμών BETWEEN... AND... 8 / 66

Χειρισμός τιμών NULL 9 / 66

Χειρισμός τιμών NULL 1 Δε μπορούμε να χειριστούμε τιμές NULL με τελεστές σύγκρισης 10 / 66

Χειρισμός τιμών NULL 1 Δε μπορούμε να χειριστούμε τιμές NULL με τελεστές σύγκρισης 2 Μια τιμή είναι (IS) ή δεν είναι (IS NOT) NULL 11 / 66

Χειρισμός τιμών NULL 1 Δε μπορούμε να χειριστούμε τιμές NULL με τελεστές σύγκρισης 2 Μια τιμή είναι (IS) ή δεν είναι (IS NOT) NULL 3 Ο έλεγχος για τιμές NULL αποδίδει πάντοτε TRUE ή FALSE 12 / 66

Χειρισμός τιμών NULL 1 Δε μπορούμε να χειριστούμε τιμές NULL με τελεστές σύγκρισης 2 Μια τιμή είναι (IS) ή δεν είναι (IS NOT) NULL 3 Ο έλεγχος για τιμές NULL αποδίδει πάντοτε TRUE ή FALSE 4 Δύο τιμές NULL δεν είναι ίσες μεταξύ τους, η μεταξύ τους σύγκριση δεν έχει νόημα 13 / 66

Παραδείγματα με NULL Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων χωρίς καταχωρημένο μισθό 1 SELECT * 2 FROM employees 3 WHERE salary IS NULL; 14 / 66

Παραδείγματα με NULL Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων χωρίς καταχωρημένο μισθό 1 SELECT * 2 FROM employees 3 WHERE salary IS NULL; Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων με καταχωρημένο μισθό 1 SELECT * 2 FROM employees 3 WHERE salary IS NOT NULL; 15 / 66

NULL και DISTINCT Χωρίς DISTINCT 1 SELECT salary 2 FROM employees 3 WHERE salary IS NULL; 4 salary 5 ---------- 6 NULL 7 NULL 8 NULL 16 / 66

NULL και DISTINCT Χωρίς DISTINCT 1 SELECT salary 2 FROM employees 3 WHERE salary IS NULL; 4 salary 5 ---------- 6 NULL 7 NULL 8 NULL Με DISTINCT 1 SELECT DISTINCT salary 2 FROM employees 3 WHERE salary IS NULL; 4 salary 5 ---------- 6 NULL 17 / 66

Λάθη στον έλεγχο για NULL Με τον τελεστή = 1 SELECT * 2 FROM employees 3 WHERE salary = NULL; 4 5 Empty set (0.00 sec) 18 / 66

Λάθη στον έλεγχο για NULL Με τον τελεστή = 1 SELECT * 2 FROM employees 3 WHERE salary = NULL; 4 5 Empty set (0.00 sec) Ως κείμενο 1 SELECT * 2 FROM employees 3 WHERE salary = NULL ; 4 5 Empty set, 1 warning (0.00 sec) 19 / 66

NULL και αλγεβρικές πράξεις Πρόσθεση 1000 στο μισθό των υπαλλήλων χωρίς μισθό 1 SELECT empid, salary, salary+1000 2 FROM employees 3 WHERE salary IS NULL; 4 5 empid salary salary+1000 6 --------+--------+-------------+ 7 230 NULL NULL 8 483 NULL NULL 9 593 NULL NULL 10 -------------------------------- 20 / 66

Περιεχόμενα 1 Απαλοιφή διπλοεγγραφών με DISTINCT 2 Ελεγχος για τιμές NULL 3 Ταίριασμα κειμένου 4 Λογική σύζευξη και διάζευξη 5 Τελεστής συνόλου IN 6 Τελεστής περιοχής τιμών BETWEEN... AND... 21 / 66

Ταίριασμα κειμένου Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων με μικρό όνομα Νίκη 1 SELECT * 2 FROM employees 3 WHERE firstname = Νίκη ; 1 Μπορούμε να κάνουμε συγκρίσεις αλφαριθμητικών με τελεστές σύγκρισης όπως και με αριθμούς. 2 Ωστόσο, το αλφαριθμητικό τοποθετείται πάντα μέσα σε εισαγωγικά. 3 Τα εισαγωγικά μπορεί να είναι μονά ( ) ή διπλά ( ), ποτέ όμως δεν είναι αυτάκια! 22 / 66

Τελεστές ανισότητας και σύγκριση κειμένου Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων με μικρό μετά τη Νίκη 1 SELECT * 2 FROM employees 3 WHERE firstname > Νίκη ; 23 / 66

Τελεστές ανισότητας και σύγκριση κειμένου Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων με μικρό μετά τη Νίκη 1 SELECT * 2 FROM employees 3 WHERE firstname > Νίκη ; Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων με μικρό όνομα μετά το Ν 1 SELECT * 2 FROM employees 3 WHERE firstname > Ν ; 24 / 66

Ταίριασμα κειμένου με τον τελεστή LIKE Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων με μικρό όνομα που αρχίζει από Ν 1 SELECT * 2 FROM employees 3 WHERE firstname LIKE N% ; 25 / 66

Ταίριασμα κειμένου με τον τελεστή LIKE Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων με μικρό όνομα που αρχίζει από Ν 1 SELECT * 2 FROM employees 3 WHERE firstname LIKE N% ; Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων με μικρό όνομα που αρχίζει από Α και τελειώνει σε Α 1 SELECT * 2 FROM employees 3 WHERE firstname LIKE A%A ; 26 / 66

LIKE: χαρακτήρες υποκατάστασης % (ή *) : υποκαθιστά από κανένα ως πολλούς χαρακτήρες (ή?) : υποκαθιστά ακριβώς ένα χαρακτήρα Οι χαρακτήρες υποκατάστασης μπορούν αν συνδυαστούν μεταξύ τους 27 / 66

LIKE: χαρακτήρες υποκατάστασης % (ή *) : υποκαθιστά από κανένα ως πολλούς χαρακτήρες (ή?) : υποκαθιστά ακριβώς ένα χαρακτήρα Οι χαρακτήρες υποκατάστασης μπορούν αν συνδυαστούν μεταξύ τους Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων με μικρό όνομα που έχει 5 χαρακτήρες και τελειώνει σε Α 1 SELECT * 2 FROM employees 3 WHERE firstname LIKE A ; 28 / 66

Ασκήσεις με ταίριασμα κειμένου 29 / 66

Ασκήσεις με ταίριασμα κειμένου 1 Να βρεθούν οι υπάλληλοι που το όνομά τους αρχίζει από Α. 30 / 66

Ασκήσεις με ταίριασμα κειμένου 1 Να βρεθούν οι υπάλληλοι που το όνομά τους αρχίζει από Α. 2 Να βρεθούν οι υπάλληλοι που το όνομά τους τελειώνει σε ς. 31 / 66

Ασκήσεις με ταίριασμα κειμένου 1 Να βρεθούν οι υπάλληλοι που το όνομά τους αρχίζει από Α. 2 Να βρεθούν οι υπάλληλοι που το όνομά τους τελειώνει σε ς. 3 Να βρεθούν οι υπάλληλοι που το όνομά τους έχει δεύτερο χαρακτήρα το α. 32 / 66

Ασκήσεις με ταίριασμα κειμένου 1 Να βρεθούν οι υπάλληλοι που το όνομά τους αρχίζει από Α. 2 Να βρεθούν οι υπάλληλοι που το όνομά τους τελειώνει σε ς. 3 Να βρεθούν οι υπάλληλοι που το όνομά τους έχει δεύτερο χαρακτήρα το α. 4 Να βρεθούν οι υπάλληλοι που το όνομά τους έχει δεύτερο χαρακτήρα το α και τελειώνει σε ς. 33 / 66

Περιεχόμενα 1 Απαλοιφή διπλοεγγραφών με DISTINCT 2 Ελεγχος για τιμές NULL 3 Ταίριασμα κειμένου 4 Λογική σύζευξη και διάζευξη 5 Τελεστής συνόλου IN 6 Τελεστής περιοχής τιμών BETWEEN... AND... 34 / 66

Ο τελεστής AND 35 / 66

Ο τελεστής AND 1 Δύο παραστάσεις στον όρο WHERE μπορούν να συνδυαστούν μεταξύ τους με το λογικό τελεστή AND. 36 / 66

Ο τελεστής AND 1 Δύο παραστάσεις στον όρο WHERE μπορούν να συνδυαστούν μεταξύ τους με το λογικό τελεστή AND. 2 Χρησιμοποιούμε τον τελεστή AND όταν θέλουμε να ελέγξουμε την τιμή αληθείας και των δύο παραστάσεων ταυτόχρονα. 37 / 66

Ο τελεστής AND 1 Δύο παραστάσεις στον όρο WHERE μπορούν να συνδυαστούν μεταξύ τους με το λογικό τελεστή AND. 2 Χρησιμοποιούμε τον τελεστή AND όταν θέλουμε να ελέγξουμε την τιμή αληθείας και των δύο παραστάσεων ταυτόχρονα. 3 Οι βάσεις δεδομένων ακολουθούν την τριαδική λογική: TRUE, FALSE, UNK. 38 / 66

Ο τελεστής AND 1 Δύο παραστάσεις στον όρο WHERE μπορούν να συνδυαστούν μεταξύ τους με το λογικό τελεστή AND. 2 Χρησιμοποιούμε τον τελεστή AND όταν θέλουμε να ελέγξουμε την τιμή αληθείας και των δύο παραστάσεων ταυτόχρονα. 3 Οι βάσεις δεδομένων ακολουθούν την τριαδική λογική: TRUE, FALSE, UNK. 4 Στο αποτέλεσμα του ερωτήματος εισέρχονται μόνο οι εγγραφές που αποδίδουν TRUE. 39 / 66

Πίνακας αληθείας AND AND TRUE FALSE UNK TRUE TRUE FALSE UNK FALSE FALSE FALSE FALSE UNK UNK FALSE UNK Ο τελεστής AND αποδίδει TRUE μόνο όταν και οι δύο παραστάσεις είναι TRUE 40 / 66

Ενα παράδειγμα με τον τελεστή AND Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων που εργάζονται στο τμήμα 4 και ο μισθός τους είναι μεγαλύτερος από 1100 1 SELECT * 2 FROM employees 3 WHERE depid = 4 4 AND salary > 1100; empid firstname lastname depid salary hiredate 206 Νίκος Βλάχος 4 1102.04 2002-12-03 311 Νίκος Στεργιόπουλος 4 1386.05 2002-02-01 41 / 66

Ο τελεστής OR 42 / 66

Ο τελεστής OR 1 Δύο παραστάσεις στον όρο WHERE μπορούν να συνδυαστούν μεταξύ τους με το λογικό τελεστή OR. 43 / 66

Ο τελεστής OR 1 Δύο παραστάσεις στον όρο WHERE μπορούν να συνδυαστούν μεταξύ τους με το λογικό τελεστή OR. 2 Χρησιμοποιούμε τον τελεστή OR όταν θέλουμε να ελέγξουμε την τιμή αληθείας τουλάχιστον μιας από τις δύο παραστάσεις. 44 / 66

Ο τελεστής OR 1 Δύο παραστάσεις στον όρο WHERE μπορούν να συνδυαστούν μεταξύ τους με το λογικό τελεστή OR. 2 Χρησιμοποιούμε τον τελεστή OR όταν θέλουμε να ελέγξουμε την τιμή αληθείας τουλάχιστον μιας από τις δύο παραστάσεις. 3 Οι βάσεις δεδομένων ακολουθούν την τριαδική λογική: TRUE, FALSE, UNK. 45 / 66

Ο τελεστής OR 1 Δύο παραστάσεις στον όρο WHERE μπορούν να συνδυαστούν μεταξύ τους με το λογικό τελεστή OR. 2 Χρησιμοποιούμε τον τελεστή OR όταν θέλουμε να ελέγξουμε την τιμή αληθείας τουλάχιστον μιας από τις δύο παραστάσεις. 3 Οι βάσεις δεδομένων ακολουθούν την τριαδική λογική: TRUE, FALSE, UNK. 4 Στο αποτέλεσμα του ερωτήματος εισέρχονται μόνο οι εγγραφές που αποδίδουν TRUE. 46 / 66

Πίνακας αληθείας OR OR TRUE FALSE UNK TRUE TRUE TRUE TRUE FALSE TRUE FALSE UNK UNK TRUE UNK UNK Ο τελεστής OR αποδίδει TRUE όταν μία τουλάχιστον παράσταση είναι TRUE. 47 / 66

Ενα παράδειγμα με τον τελεστή OR Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων που εργάζονται στο τμήμα 4 ή ο μισθός τους είναι μεγαλύτερος από 1100 1 SELECT * 2 FROM employees 3 WHERE depid = 4 4 OR salary >= 1100; empid firstname lastname depid salary hiredate... 206 Νίκος Βλάχος 4 1102.04 2002-12-03 230 Βαγγέλης Χριστόπουλος 4 NULL 2002-12-03 234 Αδαμαντία Θεοτοκάτου 5 1534.65 1999-10-01 243 Δέσποινα Παπαδοπούλου 2 1609.52 1999-03-05 311 Νίκος Στεργιόπουλος 4 1386.05 2002-02-01... 48 / 66

Μακριά από παγίδες Να βρεθούν τα ονοματεπώνυμα των υπαλλήλων που εργάζονται στα τμήματα 1 και 3 49 / 66

Μακριά από παγίδες Να βρεθούν τα ονοματεπώνυμα των υπαλλήλων που εργάζονται στα τμήματα 1 και 3 Λάθος απάντηση 1 SELECT firstname, lastname 2 FROM employees 3 WHERE depid = 1 4 AND depid = 3; 50 / 66

Μακριά από παγίδες Να βρεθούν τα ονοματεπώνυμα των υπαλλήλων που εργάζονται στα τμήματα 1 και 3 Λάθος απάντηση 1 SELECT firstname, lastname 2 FROM employees 3 WHERE depid = 1 4 AND depid = 3; Σωστή απάντηση 1 SELECT firstname, lastname 2 FROM employees 3 WHERE depid = 1 4 OR depid = 3; 51 / 66

Σύνθετες παραστάσεις και παρενθέσεις Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων που δεν προσλήφθηκαν το 2002 και εργάζονται στο τμήμα 3 52 / 66

Σύνθετες παραστάσεις και παρενθέσεις Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων που δεν προσλήφθηκαν το 2002 και εργάζονται στο τμήμα 3 Λάθος απάντηση 1 SELECT * 2 FROM employees 3 WHERE depid = 3 4 AND hiredate < 2002-01-01 5 OR hiredate > 2002-12-31 ; 53 / 66

Σύνθετες παραστάσεις και παρενθέσεις Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων που δεν προσλήφθηκαν το 2002 και εργάζονται στο τμήμα 3 Λάθος απάντηση 1 SELECT * 2 FROM employees 3 WHERE depid = 3 4 AND hiredate < 2002-01-01 5 OR hiredate > 2002-12-31 ; Σωστή απάντηση 1 SELECT * 2 FROM employees 3 WHERE depid = 3 4 AND ( hiredate < 2002-01-01 OR 54 / 66

Ασκήσεις με λογική σύζευξη και διάζευξη 55 / 66

Ασκήσεις με λογική σύζευξη και διάζευξη 1 Π empid,lastname,depid (σ depid=1 salary>1500 (employees)) 56 / 66

Ασκήσεις με λογική σύζευξη και διάζευξη 1 Π empid,lastname,depid (σ depid=1 salary>1500 (employees)) 2 Π empid,lastname,depid (σ depid=2 salary<1200 (employees)) 57 / 66

Ασκήσεις με λογική σύζευξη και διάζευξη 1 Π empid,lastname,depid (σ depid=1 salary>1500 (employees)) 2 Π empid,lastname,depid (σ depid=2 salary<1200 (employees)) 3 Π empid,lastname (σ depid=4 salary 0.05>60 (employees)) 58 / 66

Ασκήσεις με λογική σύζευξη και διάζευξη 1 Π empid,lastname,depid (σ depid=1 salary>1500 (employees)) 2 Π empid,lastname,depid (σ depid=2 salary<1200 (employees)) 3 Π empid,lastname (σ depid=4 salary 0.05>60 (employees)) 4 Π empid,lastname ( σ(depid=3 depid=4) salary=null (employees) ) 59 / 66

Περιεχόμενα 1 Απαλοιφή διπλοεγγραφών με DISTINCT 2 Ελεγχος για τιμές NULL 3 Ταίριασμα κειμένου 4 Λογική σύζευξη και διάζευξη 5 Τελεστής συνόλου IN 6 Τελεστής περιοχής τιμών BETWEEN... AND... 60 / 66

Ο τελεστής συνόλου IN Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων που εργάζονται στα τμήματα 2, 3 και 4 1 SELECT * 2 FROM employees 3 WHERE depid = 2 4 OR depid = 3 5 OR depid = 4; Το ίδιο, αλλά πιο απλά 1 SELECT * 2 FROM employees 3 WHERE depid IN (2,3,4); 61 / 66

Άρνηση του IN Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων που δεν εργάζονται στα τμήματα 2, 3 και 4 1 SELECT * 2 FROM employees 3 WHERE depid NOT IN (2,3,4); Η, ισοδύναμα με: 1 SELECT * 2 FROM employees 3 WHERE depid!= 2 4 AND depid!= 3 5 AND depid!= 4; 62 / 66

Περιεχόμενα 1 Απαλοιφή διπλοεγγραφών με DISTINCT 2 Ελεγχος για τιμές NULL 3 Ταίριασμα κειμένου 4 Λογική σύζευξη και διάζευξη 5 Τελεστής συνόλου IN 6 Τελεστής περιοχής τιμών BETWEEN... AND... 63 / 66

Ο τελεστής περιοχής τιμών Να βρεθούν όλες οι λεπτομέρειες των υπαλλήλων για εκείνους τους υπαλλήλους που παίρνουν μισθό από 1100 ως 1200 1 SELECT * 2 FROM employees 3 WHERE salary BETWEEN 1100 AND 1200; empid firstname lastname depid salary hiredate 172 Χρήστος Βλάσσης 3 1101.70 2000-07-04 206 Νίκος Βλάχος 4 1102.04 2002-12-03 381 Περικλής Κιτσάκης 6 1100.13 2003-02-14 431 Κώστας Παπαδόπουλος 3 1100.23 2002-09-16 503 Μαριλένα Κρέσπα 2 1105.04 2001-03-07 64 / 66

Ο τελεστής περιοχής τιμών για ημερομηνίες Να βρεθεί ο κωδικός των τμημάτων στα οποία απασχολούνται υπάλληλοι που προσλήφθηκαν μέσα στο 2004 1 SELECT DISTINCT depid 2 FROM employees 3 WHERE hiredate BETWEEN 2004-01-01 4 AND 2004-12-31 ; depid 4 3 65 / 66

Σχόλια και ερωτήσεις Σας ευχαριστώ για την προσοχή σας Είμαι στη διάθεσή σας για σχόλια, απορίες και ερωτήσεις 66 / 66