1 / 106

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



1 / 105

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

1 / 150


1 / 97

1 / 87

DELETE, UPDATE, INSERT

DISTINCT, LIKE, NULL, AND, OR, BETWEEN

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

DELETE, UPDATE, INSERT.

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

1 / 106


ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ MYSQL

ΕΝΗΜΕΡΩΣΗ ΔΕΔΟΜΕΝΩΝ. UPDATE products SET prod_fpa=19 WHERE prod_fpa=23; SELECT prod_descr,purchase,purchase_date FROM products WHERE prod_fpa=9;

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

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

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

PHP 3. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

Συναρτήσεις στη Visual Basic 6.0

MYSQL 2. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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


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

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

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

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

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

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


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


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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

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

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

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

Παράδειγμα Select Introduction Group By Join Aliases.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (3)

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

ΣΥΝΑΡΤΗΣΕΙΣ. Η σύνταξη μιας συνάρτησης σ ένα κελί έχει την γενική μορφή: =όνομα_συνάρτησης(όρισμα1; όρισμα2;.)

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

Τυχαίοι αριθμοί Αλφαριθμητικά και χαρακτήρες

ΜΑΗΣ ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΠΡΑΞΕΙΣ. Παράδειγμα #1. Πράξεις μεταξύ ακεραίων αριθμών

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

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

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

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

SQL Server 2005 Tutorial Αςκήςεισ. Γεράσιμος Μαρκέτος InfoLab, Τμήμα Ρληροφορικήσ, Ρανεπιςτήμιο Ρειραιϊσ (

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

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

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

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

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

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

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

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

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

SQL Data Manipulation Language

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

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

ΟΝΟΜΑΤΕΠΩΝΥΜΟ : Αντικείμενα: Βάσεις δεδομένων, σχέσεις μεταξύ πινάκων, ερωτήματα, φόρμες και αναφορές.

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006

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

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

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

Υπολογιστικά Συστήματα

MOCϦϣΎϬϴϠϋϝϮμΤϟϢΗϊΟήϤϟ. USE northwind SELECT employeeid, lastname, firstname, title FROM employees GO

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

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

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

Κεφάλαιο 3. Ερωτήματα SQL

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

Ερωτήσεις Σωστού-Λάθους

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

Transcript:

Ενσωματωμένες συναρτήσεις στην SQL και επιπλέον στοιχεία προγραμματισμού Παραδείγματα και εφαρμογές από τη βάση δεδομένων company Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr astavrak@uoi.gr @AStavrakoudis Άνοιξη 2016 1 / 106

Περιεχόμενα 1 Πράξεις αριθμομηχανής 2 Συναρτήσεις αλγεβρικών όρων και παραστάσεων 3 Συναρτήσεις κειμένου και αλφαριθμητικών 4 Συναρτήσεις ημερομηνίας και ώρας 5 Συναρτήσεις ελέγχου ροής 2 / 106

Ο πίνακας DUAL SQL ως αριθμομηχανή 3 / 106

Ο πίνακας DUAL SQL ως αριθμομηχανή 1 SELECT 1 2 FROM DUAL; 3 4 1 5 --- 6 1 4 / 106

Ο πίνακας DUAL SQL ως αριθμομηχανή 1 SELECT 1 2 FROM DUAL; 3 4 1 5 --- 6 1 1 SELECT 1+1 2 FROM DUAL; 3 4 1+1 5 ---- 6 2 5 / 106

Πράξεις με συναρτήσεις Εφαρμογή γνωστών συναρτήσεων 6 / 106

Πράξεις με συναρτήσεις Εφαρμογή γνωστών συναρτήσεων 1 SELECT sqrt(2) 2 FROM DUAL; 3 4 sqrt(2) 5 ---------------- 6 1.4142135623731 7 / 106

Πράξεις με συναρτήσεις Εφαρμογή γνωστών συναρτήσεων 1 SELECT sqrt(2) 2 FROM DUAL; 3 4 sqrt(2) 5 ---------------- 6 1.4142135623731 1 SELECT cos(pi()/4) 2 FROM DUAL; 3 4 cos(pi()/4) 5 ------------------ 6 0.707106781186548 8 / 106

Πολλές παραστάσεις μαζί Προβολή πολλών παραστάσεων 9 / 106

Πολλές παραστάσεις μαζί Προβολή πολλών παραστάσεων 1 SELECT sqrt(2), log(2), exp(2) 2 FROM DUAL; 3 4 sqrt(2) log(2) exp(2) 5 ----------------------------------------------------- 6 1.4142135623731 0.693147180559945 7.38905609893065 10 / 106

Πολλές παραστάσεις μαζί Προβολή πολλών παραστάσεων 1 SELECT sqrt(2), log(2), exp(2) 2 FROM DUAL; 3 4 sqrt(2) log(2) exp(2) 5 ----------------------------------------------------- 6 1.4142135623731 0.693147180559945 7.38905609893065 1 SELECT 2, log(2)/sqrt(2) 2 FROM DUAL; 3 4 2 log(2)/sqrt(2) 5 --------------------- 6 2 0.490129071734274 11 / 106

Ερωτήματα χωρίς FROM; Ο πίνακας DUAL δεν είναι απαραίτητος στη MySQL 12 / 106

Ερωτήματα χωρίς FROM; Ο πίνακας DUAL δεν είναι απαραίτητος στη MySQL 1 SELECT CURRENT_DATE 2 FROM DUAL; 3 4 CURRENT_DATE 5 ------------- 6 2014-03-31 13 / 106

Ερωτήματα χωρίς FROM; Ο πίνακας DUAL δεν είναι απαραίτητος στη MySQL 1 SELECT CURRENT_DATE 2 FROM DUAL; 3 4 CURRENT_DATE 5 ------------- 6 2014-03-31 1 SELECT CURRENT_DATE; 2 3 CURRENT_DATE 4 ------------- 5 2014-03-31 14 / 106

Περιεχόμενα 1 Πράξεις αριθμομηχανής 2 Συναρτήσεις αλγεβρικών όρων και παραστάσεων 3 Συναρτήσεις κειμένου και αλφαριθμητικών 4 Συναρτήσεις ημερομηνίας και ώρας 5 Συναρτήσεις ελέγχου ροής 15 / 106

Αριθμητικές συναρτήσεις 1 Υπάρχουν πολλές διαθέσιμες συναρτήσεις για αριθμούς ή αλγεβρικές παραστάσεις, παρόμοιες με αυτές που έχουμε εξετάσει στα λογιστικά φύλλα. 16 / 106

Αριθμητικές συναρτήσεις 1 Υπάρχουν πολλές διαθέσιμες συναρτήσεις για αριθμούς ή αλγεβρικές παραστάσεις, παρόμοιες με αυτές που έχουμε εξετάσει στα λογιστικά φύλλα. 2 Για παράδειγμα, log για τον υπολογισμό λογαρίθμου, pow για ύψωση σε δύναμη ή cos για υπολογισμό συνημιτόνου. 17 / 106

Αριθμητικές συναρτήσεις 1 Υπάρχουν πολλές διαθέσιμες συναρτήσεις για αριθμούς ή αλγεβρικές παραστάσεις, παρόμοιες με αυτές που έχουμε εξετάσει στα λογιστικά φύλλα. 2 Για παράδειγμα, log για τον υπολογισμό λογαρίθμου, pow για ύψωση σε δύναμη ή cos για υπολογισμό συνημιτόνου. 3 Επιτρέπεται η εμφώλευση συναρτήσεων. 18 / 106

Αριθμητικές συναρτήσεις 1 Υπάρχουν πολλές διαθέσιμες συναρτήσεις για αριθμούς ή αλγεβρικές παραστάσεις, παρόμοιες με αυτές που έχουμε εξετάσει στα λογιστικά φύλλα. 2 Για παράδειγμα, log για τον υπολογισμό λογαρίθμου, pow για ύψωση σε δύναμη ή cos για υπολογισμό συνημιτόνου. 3 Επιτρέπεται η εμφώλευση συναρτήσεων. 4 Προσοχή, το όρισμα πρέπει να είναι έγκυρο. 19 / 106

Αριθμητικές συναρτήσεις 1 Υπάρχουν πολλές διαθέσιμες συναρτήσεις για αριθμούς ή αλγεβρικές παραστάσεις, παρόμοιες με αυτές που έχουμε εξετάσει στα λογιστικά φύλλα. 2 Για παράδειγμα, log για τον υπολογισμό λογαρίθμου, pow για ύψωση σε δύναμη ή cos για υπολογισμό συνημιτόνου. 3 Επιτρέπεται η εμφώλευση συναρτήσεων. 4 Προσοχή, το όρισμα πρέπει να είναι έγκυρο. 5 Ακολουθούν παραδείγματα. 20 / 106

Στρογγυλοποίηση με τη ROUND Να βρεθεί ο κωδικός και ο μισθός των υπαλλήλων του τμήματος 4 καθώς και ο μισθός με στρογγυλοποίηση σε εκατοντάδες. 21 / 106

Στρογγυλοποίηση με τη ROUND Να βρεθεί ο κωδικός και ο μισθός των υπαλλήλων του τμήματος 4 καθώς και ο μισθός με στρογγυλοποίηση σε εκατοντάδες. 1 SELECT empid, salary, ROUND(salary, -2) 2 FROM employees 3 WHERE depid = 4; 4 22 / 106

Στρογγυλοποίηση με τη ROUND Να βρεθεί ο κωδικός και ο μισθός των υπαλλήλων του τμήματος 4 καθώς και ο μισθός με στρογγυλοποίηση σε εκατοντάδες. 1 SELECT empid, salary, ROUND(salary, -2) 2 FROM employees 3 WHERE depid = 4; 4 5 empid salary ROUND(salary, -2) 6 ---------------------------------- 7 206 1102.04 1100 8 230 NULL NULL 9 311 1386.05 1400 10 593 NULL NULL 11 780 1054.71 1100 23 / 106

Ομαδοποίηση μετά από στρογγυλοποίηση Να βρεθεί το πλήθος των υπαλλήλων ανά εκατοντάδα μισθού. 24 / 106

Ομαδοποίηση μετά από στρογγυλοποίηση Να βρεθεί το πλήθος των υπαλλήλων ανά εκατοντάδα μισθού. 1 SELECT ROUND(salary, -2) AS SalCat, COUNT(*) AS cntsc 2 FROM employees 3 GROUP BY ROUND(salary, -2); 4 25 / 106

Ομαδοποίηση μετά από στρογγυλοποίηση Να βρεθεί το πλήθος των υπαλλήλων ανά εκατοντάδα μισθού. 1 SELECT ROUND(salary, -2) AS SalCat, COUNT(*) AS cntsc 2 FROM employees 3 GROUP BY ROUND(salary, -2); 4 5 SalCat cntsc 6 -------------- 7 NULL 3 8 1100 9 9 1200 2 10 1300 6 11 1400 2 12 1500 1 13 1600 2 14 1800 1 15 1900 2 26 / 106

Στρογγυλοποίηση στο 250 Να βρεθεί το πλήθος των υπαλλήλων ανά εκατοντάδα μισθού. 27 / 106

Στρογγυλοποίηση στο 250 Να βρεθεί το πλήθος των υπαλλήλων ανά εκατοντάδα μισθού. 1 SELECT ROUND(salary, -2) AS SalCat, COUNT(*) AS cntsc 2 FROM employees 3 GROUP BY ROUND(salary, -2); 4 28 / 106

Στρογγυλοποίηση στο 250 Να βρεθεί το πλήθος των υπαλλήλων ανά εκατοντάδα μισθού. 1 SELECT ROUND(salary, -2) AS SalCat, COUNT(*) AS cntsc 2 FROM employees 3 GROUP BY ROUND(salary, -2); 4 5 SalCat cntsc 6 -------------- 7 NULL 3 8 1100 9 9 1200 2 10 1300 6 11 1400 2 12 1500 1 13 1600 2 14 1800 1 15 1900 2 29 / 106

Στρογγυλοποίηση με τη FLOOR Να βρεθεί ο κωδικός και ο μισθός των υπαλλήλων του τμήματος 2 καθώς και ο μισθός με στρογγυλοποίηση προς τα κάτω. 30 / 106

Στρογγυλοποίηση με τη FLOOR Να βρεθεί ο κωδικός και ο μισθός των υπαλλήλων του τμήματος 2 καθώς και ο μισθός με στρογγυλοποίηση προς τα κάτω. 1 SELECT empid, salary, FLOOR(salary) 2 FROM employees 3 WHERE depid = 2; 4 31 / 106

Στρογγυλοποίηση με τη FLOOR Να βρεθεί ο κωδικός και ο μισθός των υπαλλήλων του τμήματος 2 καθώς και ο μισθός με στρογγυλοποίηση προς τα κάτω. 1 SELECT empid, salary, FLOOR(salary) 2 FROM employees 3 WHERE depid = 2; 4 5 empid salary FLOOR(salary) 6 ------------------------------ 7 153 1321.92 1321 8 243 1609.52 1609 9 419 1323.80 1323 10 503 1105.04 1105 32 / 106

Στρογγυλοποίηση με τη FLOOR σε εκατοντάδα Να βρεθεί ο κωδικός και ο μισθός των υπαλλήλων του τμήματος 2 καθώς και ο μισθός με στρογγυλοποίηση εκατοντάδας προς τα κάτω. 33 / 106

Στρογγυλοποίηση με τη FLOOR σε εκατοντάδα Να βρεθεί ο κωδικός και ο μισθός των υπαλλήλων του τμήματος 2 καθώς και ο μισθός με στρογγυλοποίηση εκατοντάδας προς τα κάτω. 1 SELECT empid, salary, FLOOR(salary/100)*100 2 FROM employees 3 WHERE depid = 2; 4 34 / 106

Στρογγυλοποίηση με τη FLOOR σε εκατοντάδα Να βρεθεί ο κωδικός και ο μισθός των υπαλλήλων του τμήματος 2 καθώς και ο μισθός με στρογγυλοποίηση εκατοντάδας προς τα κάτω. 1 SELECT empid, salary, FLOOR(salary/100)*100 2 FROM employees 3 WHERE depid = 2; 4 5 empid salary FLOOR(salary/100)*100 6 -------------------------------------- 7 153 1321.92 1300 8 243 1609.52 1600 9 419 1323.80 1300 10 503 1105.04 1100 35 / 106

Στρογγυλοποίηση με FLOOR x 250 Να βρεθεί ο κωδικός και ο μισθός των υπαλλήλων του τμήματος 2 καθώς και ο μισθός με στρογγυλοποίηση προς τα κάτω σε πολλαπλάσιο του 250. 36 / 106

Στρογγυλοποίηση με FLOOR x 250 Να βρεθεί ο κωδικός και ο μισθός των υπαλλήλων του τμήματος 2 καθώς και ο μισθός με στρογγυλοποίηση προς τα κάτω σε πολλαπλάσιο του 250. 1 SELECT empid, salary, FLOOR(salary/250)*250 2 FROM employees 3 WHERE depid = 2; 4 37 / 106

Στρογγυλοποίηση με FLOOR x 250 Να βρεθεί ο κωδικός και ο μισθός των υπαλλήλων του τμήματος 2 καθώς και ο μισθός με στρογγυλοποίηση προς τα κάτω σε πολλαπλάσιο του 250. 1 SELECT empid, salary, FLOOR(salary/250)*250 2 FROM employees 3 WHERE depid = 2; 4 5 empid salary FLOOR(salary/250)*250 6 -------------------------------------- 7 153 1321.92 1250 8 243 1609.52 1500 9 419 1323.80 1250 10 503 1105.04 1000 38 / 106

Περιεχόμενα 1 Πράξεις αριθμομηχανής 2 Συναρτήσεις αλγεβρικών όρων και παραστάσεων 3 Συναρτήσεις κειμένου και αλφαριθμητικών 4 Συναρτήσεις ημερομηνίας και ώρας 5 Συναρτήσεις ελέγχου ροής 39 / 106

Συναρτήσεις κειμένου και αλφαριθμητικών 1 Συναρτήσεις που επεξεργάζονται κείμενο και συμβολοσειρές. 40 / 106

Συναρτήσεις κειμένου και αλφαριθμητικών 1 Συναρτήσεις που επεξεργάζονται κείμενο και συμβολοσειρές. 2 Για παράδειγμα, left για τη λήψη αριστερού μέρους ενός αλφαριθμητικού, length για την καταμέτρηση χαρακτήρων, ή replace για την αντικατάσταση κειμένου από κείμενο. 41 / 106

Συναρτήσεις κειμένου και αλφαριθμητικών 1 Συναρτήσεις που επεξεργάζονται κείμενο και συμβολοσειρές. 2 Για παράδειγμα, left για τη λήψη αριστερού μέρους ενός αλφαριθμητικού, length για την καταμέτρηση χαρακτήρων, ή replace για την αντικατάσταση κειμένου από κείμενο. 3 Επιτρέπεται η εμφώλευση συναρτήσεων. 42 / 106

Συναρτήσεις κειμένου και αλφαριθμητικών 1 Συναρτήσεις που επεξεργάζονται κείμενο και συμβολοσειρές. 2 Για παράδειγμα, left για τη λήψη αριστερού μέρους ενός αλφαριθμητικού, length για την καταμέτρηση χαρακτήρων, ή replace για την αντικατάσταση κειμένου από κείμενο. 3 Επιτρέπεται η εμφώλευση συναρτήσεων. 4 Προσοχή, το όρισμα πρέπει να είναι έγκυρο. 43 / 106

Συναρτήσεις κειμένου και αλφαριθμητικών 1 Συναρτήσεις που επεξεργάζονται κείμενο και συμβολοσειρές. 2 Για παράδειγμα, left για τη λήψη αριστερού μέρους ενός αλφαριθμητικού, length για την καταμέτρηση χαρακτήρων, ή replace για την αντικατάσταση κειμένου από κείμενο. 3 Επιτρέπεται η εμφώλευση συναρτήσεων. 4 Προσοχή, το όρισμα πρέπει να είναι έγκυρο. 5 Ακολουθούν παραδείγματα. 44 / 106

Ενοποίηση κειμένου Να δώσετε το όνομα και το επώνυμο των υπαλλήλων του τμήματος 4 σε μία στήλη, ως ονοματεπώνυμο. 45 / 106

Ενοποίηση κειμένου Να δώσετε το όνομα και το επώνυμο των υπαλλήλων του τμήματος 4 σε μία στήλη, ως ονοματεπώνυμο. 1 SELECT CONCAT(firstname,, lastname) 2 FROM employees 3 WHERE depid = 4; 4 46 / 106

Ενοποίηση κειμένου Να δώσετε το όνομα και το επώνυμο των υπαλλήλων του τμήματος 4 σε μία στήλη, ως ονοματεπώνυμο. 1 SELECT CONCAT(firstname,, lastname) 2 FROM employees 3 WHERE depid = 4; 4 5 CONCAT(firstname,, lastname) 6 --------------------------------- 7 Νίκος Βλάχος 8 Βαγγέλης Χριστόπουλος 9 Νίκος Στεργιόπουλος 10 Παύλος Περίδης 11 Ευθαλεία Μικράκη 47 / 106

Ενοποίηση και αποκοπή κειμένου Να δώσετε το αρχικό του ονόματος και το επώνυμο των υπαλλήλων του τμήματος 4 σε μία στήλη, ως ονοματεπώνυμο. 48 / 106

Ενοποίηση και αποκοπή κειμένου Να δώσετε το αρχικό του ονόματος και το επώνυμο των υπαλλήλων του τμήματος 4 σε μία στήλη, ως ονοματεπώνυμο. 1 SELECT CONCAT(LEFT(firstname, 1),., lastname) 2 FROM employees 3 WHERE depid = 4; 4 49 / 106

Ενοποίηση και αποκοπή κειμένου Να δώσετε το αρχικό του ονόματος και το επώνυμο των υπαλλήλων του τμήματος 4 σε μία στήλη, ως ονοματεπώνυμο. 1 SELECT CONCAT(LEFT(firstname, 1),., lastname) 2 FROM employees 3 WHERE depid = 4; 4 5 CONCAT(LEFT(firstname, 1),., lastname) 6 ------------------------------------------- 7 Ν. Βλάχος 8 Β. Χριστόπουλος 9 Ν. Στεργιόπουλος 10 Π. Περίδης 11 Ε. Μικράκη 50 / 106

Ενοποίηση και αποκοπή κειμένου Να δώσετε ονοματεπώνυμο και το μήκος της συμβολοσειράς του των υπαλλήλων του τμήματος 4. 51 / 106

Ενοποίηση και αποκοπή κειμένου Να δώσετε ονοματεπώνυμο και το μήκος της συμβολοσειράς του των υπαλλήλων του τμήματος 4. 1 SELECT CONCAT(firstname,, lastname) 2 AS name, 3 LENGTH(CONCAT(firstname, lastname)) 4 AS cnt 5 FROM employees 6 WHERE depid = 4; 7 52 / 106

Ενοποίηση και αποκοπή κειμένου Να δώσετε ονοματεπώνυμο και το μήκος της συμβολοσειράς του των υπαλλήλων του τμήματος 4. 1 SELECT CONCAT(firstname,, lastname) 2 AS name, 3 LENGTH(CONCAT(firstname, lastname)) 4 AS cnt 5 FROM employees 6 WHERE depid = 4; 7 8 name cnt 9 ------------------------------ 10 Βαγγέλης Χριστόπουλος 40 11 Ευθαλεία Μικράκη 30 12 Νίκος Βλάχος 22 13 Νίκος Στεργιόπουλος 36 14 Παύλος Περίδης 26 53 / 106

Προσοχή! utf-8 Να δώσετε ονοματεπώνυμο και το μήκος της συμβολοσειράς του των υπαλλήλων του τμήματος 4. 1 SELECT CONCAT(firstname,, lastname) 2 AS name, 3 LENGTH(CONCAT(firstname, lastname))/2 4 AS cnt 5 FROM employees 6 WHERE depid = 4; 7 8 name cnt 9 ------------------------------ 10 Βαγγέλης Χριστόπουλος 20 11 Ευθαλεία Μικράκη 15 12 Νίκος Βλάχος 11 13 Νίκος Στεργιόπουλος 18 14 Παύλος Περίδης 13 54 / 106

Πιο σωστός τρόπος Να δώσετε ονοματεπώνυμο και το μήκος της συμβολοσειράς του των υπαλλήλων του τμήματος 4. 1 SELECT CONCAT(firstname,, lastname) 2 AS name, 3 CHAR_LENGTH(CONCAT(firstname, lastname)) 4 AS cnt 5 FROM employees 6 WHERE depid = 4; 7 8 name cnt 9 ------------------------------ 10 Βαγγέλης Χριστόπουλος 20 11 Ευθαλεία Μικράκη 15 12 Νίκος Βλάχος 11 13 Νίκος Στεργιόπουλος 18 14 Παύλος Περίδης 13 55 / 106

Αλλαγή σε κεφαλαία Να δώσετε τον κωδικό και το όνομα των τμημάτων με κεφαλαία γράμματα. 56 / 106

Αλλαγή σε κεφαλαία Να δώσετε τον κωδικό και το όνομα των τμημάτων με κεφαλαία γράμματα. 1 SELECT depid, UPPER(depname) 2 FROM departments; 3 57 / 106

Αλλαγή σε κεφαλαία Να δώσετε τον κωδικό και το όνομα των τμημάτων με κεφαλαία γράμματα. 1 SELECT depid, UPPER(depname) 2 FROM departments; 3 4 depid UPPER(depname) 5 ------------------------------ 6 1 ΔΙΟ ΙΚΗΣΗΣ/ΕΠ ΙΒΛΕΨΗΣ 7 2 ΟΙΚΟΝΟΜΟΛ ΟΓΩΝ/ΛΟΓΙΣΤ ΩΝ 8 3 ΕΠΙΣΤΗΜ ΟΝΩΝ/ΜΗΧΑΝΙΚ ΩΝ 9 4 ΕΞΩΤΕΡΙΚ ΩΝ ΣΥΝΕΡΓΑΤ ΩΝ 10 5 ΓΡΑΜΜΑΤΕ ΙΑΣ 11 6 ΠΩΛ ΗΣΕΩΝ 58 / 106

Αντικατάσταση κειμένου Να δώσετε τον κωδικό και το όνομα των τμημάτων με κεφαλαία γράμματα, χωρίς τόνους. 59 / 106

Αντικατάσταση κειμένου Να δώσετε τον κωδικό και το όνομα των τμημάτων με κεφαλαία γράμματα, χωρίς τόνους. 1 SELECT depid, REPLACE(UPPER(depname),, ) 2 FROM departments; 3 60 / 106

Αντικατάσταση κειμένου Να δώσετε τον κωδικό και το όνομα των τμημάτων με κεφαλαία γράμματα, χωρίς τόνους. 1 SELECT depid, REPLACE(UPPER(depname),, ) 2 FROM departments; 3 4 depid REPLACE(UPPER(depname),, ) 5 ------------------------------ 6 1 ΔΙΟΙΚΗΣΗΣ/ΕΠΙΒΛΕΨΗΣ 7 2 ΟΙΚΟΝΟΜΟΛΟΓΩΝ/ΛΟΓΙΣΤΩΝ 8 3 ΕΠΙΣΤΗΜΟΝΩΝ/ΜΗΧΑΝΙΚΩΝ 9 4 ΕΞΩΤΕΡΙΚΩΝ ΣΥΝΕΡΓΑΤΩΝ 10 5 ΓΡΑΜΜΑΤΕΙΑΣ 11 6 ΠΩΛΗΣΕΩΝ 61 / 106

Μέρος συμβολοσειράς Χαρακτήρες 1 3 62 / 106

Μέρος συμβολοσειράς Χαρακτήρες 1 3 1 SELECT lastname, SUBSTR(lastname, 1, 3) 2 FROM employees 3 WHERE empid = 419; 4 63 / 106

Μέρος συμβολοσειράς Χαρακτήρες 1 3 1 SELECT lastname, SUBSTR(lastname, 1, 3) 2 FROM employees 3 WHERE empid = 419; 4 5 lastname SUBSTR(lastname, 1, 3) 6 ------------------------------------ 7 Αρβανιτάκης Αρβ 64 / 106

Μέρος συμβολοσειράς Χαρακτήρες 1 3 1 SELECT lastname, SUBSTR(lastname, 1, 3) 2 FROM employees 3 WHERE empid = 419; 4 5 lastname SUBSTR(lastname, 1, 3) 6 ------------------------------------ 7 Αρβανιτάκης Αρβ Χαρακτήρες -6 3 65 / 106

Μέρος συμβολοσειράς Χαρακτήρες 1 3 1 SELECT lastname, SUBSTR(lastname, 1, 3) 2 FROM employees 3 WHERE empid = 419; 4 5 lastname SUBSTR(lastname, 1, 3) 6 ------------------------------------ 7 Αρβανιτάκης Αρβ Χαρακτήρες -6 3 1 SELECT lastname, SUBSTR(lastname, -6, 3) 2 FROM employees 3 WHERE empid = 419; 4 66 / 106

Μέρος συμβολοσειράς Χαρακτήρες 1 3 1 SELECT lastname, SUBSTR(lastname, 1, 3) 2 FROM employees 3 WHERE empid = 419; 4 5 lastname SUBSTR(lastname, 1, 3) 6 ------------------------------------ 7 Αρβανιτάκης Αρβ Χαρακτήρες -6 3 1 SELECT lastname, SUBSTR(lastname, -6, 3) 2 FROM employees 3 WHERE empid = 419; 4 5 lastname SUBSTR(lastname, -6, 3) 6 ------------------------------------ 67 / 106

Θέση αλφαριθμητικού σε κείμενο Να βρεθεί το όνομα και η θέση του λ στο όνομα των υπαλλήλων του τμήματος 4. 68 / 106

Θέση αλφαριθμητικού σε κείμενο Να βρεθεί το όνομα και η θέση του λ στο όνομα των υπαλλήλων του τμήματος 4. 1 SELECT firstname, LOCATE( λ, firstname) 2 FROM emloyees 3 WHERE depid = 4; 4 69 / 106

Θέση αλφαριθμητικού σε κείμενο Να βρεθεί το όνομα και η θέση του λ στο όνομα των υπαλλήλων του τμήματος 4. 1 SELECT firstname, LOCATE( λ, firstname) 2 FROM emloyees 3 WHERE depid = 4; 4 5 firstname LOCATE( λ, firstname) 6 -------------------------------------- 7 Νίκος 0 8 Βαγγέλης 6 9 Νίκος 0 10 Παύλος 4 11 Ευθαλεία 5 70 / 106

Περιεχόμενα 1 Πράξεις αριθμομηχανής 2 Συναρτήσεις αλγεβρικών όρων και παραστάσεων 3 Συναρτήσεις κειμένου και αλφαριθμητικών 4 Συναρτήσεις ημερομηνίας και ώρας 5 Συναρτήσεις ελέγχου ροής 71 / 106

Συναρτήσεις ημερομηνίας και ώρας 1 Συναρτήσεις που επεξεργάζονται ημερολογιακά δεδομένα. 72 / 106

Συναρτήσεις ημερομηνίας και ώρας 1 Συναρτήσεις που επεξεργάζονται ημερολογιακά δεδομένα. 2 Για παράδειγμα, year για τη λήψη έτους μιας ημερομηνίας, hour για τη ώρας, ή datediff για τον υπολογισμό διαφοράς δύο ημερομηνιών. 73 / 106

Συναρτήσεις ημερομηνίας και ώρας 1 Συναρτήσεις που επεξεργάζονται ημερολογιακά δεδομένα. 2 Για παράδειγμα, year για τη λήψη έτους μιας ημερομηνίας, hour για τη ώρας, ή datediff για τον υπολογισμό διαφοράς δύο ημερομηνιών. 3 Επιτρέπεται η εμφώλευση συναρτήσεων. 74 / 106

Συναρτήσεις ημερομηνίας και ώρας 1 Συναρτήσεις που επεξεργάζονται ημερολογιακά δεδομένα. 2 Για παράδειγμα, year για τη λήψη έτους μιας ημερομηνίας, hour για τη ώρας, ή datediff για τον υπολογισμό διαφοράς δύο ημερομηνιών. 3 Επιτρέπεται η εμφώλευση συναρτήσεων. 4 Προσοχή, το όρισμα πρέπει να είναι έγκυρο. 75 / 106

Συναρτήσεις ημερομηνίας και ώρας 1 Συναρτήσεις που επεξεργάζονται ημερολογιακά δεδομένα. 2 Για παράδειγμα, year για τη λήψη έτους μιας ημερομηνίας, hour για τη ώρας, ή datediff για τον υπολογισμό διαφοράς δύο ημερομηνιών. 3 Επιτρέπεται η εμφώλευση συναρτήσεων. 4 Προσοχή, το όρισμα πρέπει να είναι έγκυρο. 5 Ακολουθούν παραδείγματα. 76 / 106

Ημερομηνία και ώρα τώρα Ημερομηνία και ώρα: 1 SELECT CURDATE(), CURTIME() 2 FROM DUAL; 3 4 CURDATE() CURTIME() 5 ---------------------- 6 2014-03-24 11:24:43 77 / 106

Ημερομηνία και ώρα τώρα Ημερομηνία και ώρα: 1 SELECT CURDATE(), CURTIME() 2 FROM DUAL; 3 4 CURDATE() CURTIME() 5 ---------------------- 6 2014-03-24 11:24:43 Ολα μαζί: 1 SELECT NOW() 2 FROM DUAL; 3 4 NOW() 5 -------------------- 6 2014-03-24 11:24:43 78 / 106

Χρονοσφραγίδα Εδώ: 1 SELECT LOCALTIMESTAMP() 2 FROM DUAL; 3 4 LOCALTIMESTAMP() 5 -------------------- 6 2014-03-24 11:24:43 79 / 106

Χρονοσφραγίδα Εδώ: 1 SELECT LOCALTIMESTAMP() 2 FROM DUAL; 3 4 LOCALTIMESTAMP() 5 -------------------- 6 2014-03-24 11:24:43 UTC: 1 SELECT UTC_TIMESTAMP() 2 FROM DUAL; 3 4 UTC_TIMESTAMP() 5 -------------------- 6 2014-03-24 09:24:43 80 / 106

Ετος πρόσληψης Να βρεθεί το πλήθος των προσλήψεων το 2003 1 SELECT COUNT(*) 2 FROM employees 3 WHERE hiredate BETWEEN 2003-01-01 AND 2003-12-31 ; 4 5 COUNT(*) 6 --------- 7 3 81 / 106

Ετος πρόσληψης Να βρεθεί το πλήθος των προσλήψεων το 2003 1 SELECT COUNT(*) 2 FROM employees 3 WHERE hiredate BETWEEN 2003-01-01 AND 2003-12-31 ; 4 5 COUNT(*) 6 --------- 7 3 Να βρεθεί το πλήθος των προσλήψεων το 2003 1 SELECT COUNT(*) 2 FROM employees 3 WHERE YEAR(hiredate) = 2003; 4 5 COUNT(*) 6 --------- 82 / 106

Μορφοποίηση ημερομηνίας Να δοθεί ο τίτλος και η ημερομηνία έναρξης όλων τον έργων με τη μορφή mm/yy (μήνας/έτος) 1 SELECT title, DATE_FORMAT(startdate, %b/%y ) 2 AS StartMonth 3 FROM projects; 4 5 title startmonth 6 ------------------------------------- 7 Επίβλεψη έρευνας για... Jun/05 8 Επίβλεψη κατασκευής... Jun/06 9 Μελέτη και επίβλεψη... Apr/06 10 Παροχή συμβουλευτικών... Jun/03 11 Μελέτη εναλλακτικών... Aug/07 12 Μελέτη οικονομικής... Apr/03 83 / 106

Ημέρα της εβδομάδος Να βρεθεί το πλήθος των προσλήψεων υπαλλήλων ανά ημέρα της εβδομάδας. 1 SELECT DATE_FORMAT(hiredate, %W ) AS wday, 2 COUNT(*) AS cnt 3 FROM employees 4 GROUP BY DATE_FORMAT(hiredate, %w ) 5 ORDER BY DATE_FORMAT(hiredate, %w ); 6 7 wday cnt 8 --------------- 9 Monday 6 10 Tuesday 8 11 Wednesday 4 12 Thursday 4 13 Friday 8 84 / 106

Διάρκεια σε μήνες Να βρεθεί ο κωδικός και η διάρκεια σε μήνες εκτέλεσης όλων των έργων στα οποία απασχολούνται υπάλληλοι του τμήματος 5 με μισθό πάνω από 1500. 1 SELECT DISTINCT p.proid, 2 (YEAR(p.enddate)-YEAR(p.startdate))*12 3 +(MONTH(p.enddate)-MONTH(p.startdate)) AS period 4 FROM (projects p INNER JOIN workson w 5 ON p.proid = w.proid) 6 INNER JOIN employees e 7 ON e.empid = w.empid 8 WHERE e.depid = 5 9 AND e.salary > 1500; 10 11 proid period 12 -------------- 13 14 49 85 / 106

Πρόσθεση με ημερομηνίες Να βρεθεί η ημερομηνία λήξης του έργου 21 μετά από παράταση 2 μηνών. 1 SELECT DATE_ADD(enddate, INTERVAL 2 month) 2 AS NewEnddate 3 FROM projects 4 WHERE proid = 21; 5 6 NewEnddate 7 ----------- 8 2005-07-31 86 / 106

Πρόσθεση με ημερομηνίες Να βρεθεί η ημερομηνία λήξης του έργου 21 μετά από παράταση 60 ημερών. 1 SELECT DATE_ADD(enddate, INTERVAL 60 day) 2 AS NewEnddate 3 FROM projects 4 WHERE proid = 21; 5 6 NewEnddate 7 ----------- 8 2005-07-30 87 / 106

Περιεχόμενα 1 Πράξεις αριθμομηχανής 2 Συναρτήσεις αλγεβρικών όρων και παραστάσεων 3 Συναρτήσεις κειμένου και αλφαριθμητικών 4 Συναρτήσεις ημερομηνίας και ώρας 5 Συναρτήσεις ελέγχου ροής 88 / 106

Συναρτήσεις ελέγχου ροής 1 Εισάγουν στοιχεία προγραμματισμού και δομών ελέγχου. 89 / 106

Συναρτήσεις ελέγχου ροής 1 Εισάγουν στοιχεία προγραμματισμού και δομών ελέγχου. 2 Για παράδειγμα, if για τη απόδοση τιμής υπό συνθήκη, case για την απόδοση τιμής σε διάφορες υπο-περιπτώσεις. 90 / 106

Συναρτήσεις ελέγχου ροής 1 Εισάγουν στοιχεία προγραμματισμού και δομών ελέγχου. 2 Για παράδειγμα, if για τη απόδοση τιμής υπό συνθήκη, case για την απόδοση τιμής σε διάφορες υπο-περιπτώσεις. 3 Επιτρέπεται η εμφώλευση συναρτήσεων. 91 / 106

Συναρτήσεις ελέγχου ροής 1 Εισάγουν στοιχεία προγραμματισμού και δομών ελέγχου. 2 Για παράδειγμα, if για τη απόδοση τιμής υπό συνθήκη, case για την απόδοση τιμής σε διάφορες υπο-περιπτώσεις. 3 Επιτρέπεται η εμφώλευση συναρτήσεων. 4 Προσοχή, το όρισμα πρέπει να είναι έγκυρο. 92 / 106

Συναρτήσεις ελέγχου ροής 1 Εισάγουν στοιχεία προγραμματισμού και δομών ελέγχου. 2 Για παράδειγμα, if για τη απόδοση τιμής υπό συνθήκη, case για την απόδοση τιμής σε διάφορες υπο-περιπτώσεις. 3 Επιτρέπεται η εμφώλευση συναρτήσεων. 4 Προσοχή, το όρισμα πρέπει να είναι έγκυρο. 5 Ακολουθούν παραδείγματα. 93 / 106

Η συνάρτηση IF 1η απλή περίπτωση 1 SELECT IF(5>3, T, F ) 2 FROM DUAL; 3 4 IF(5>3, T, F ) 5 ------------------ 6 T 94 / 106

Η συνάρτηση IF 1η απλή περίπτωση 1 SELECT IF(5>3, T, F ) 2 FROM DUAL; 3 4 IF(5>3, T, F ) 5 ------------------ 6 T 2η απλή περίπτωση 1 SELECT IF(3>5, 1, -1) 2 FROM DUAL; 3 4 IF(3>5, 1, -1) 5 --------------- 6-1 95 / 106

Η συνάρτηση IF Να βρεθεί το ονοματεπώνυμο των υπαλλήλων του τμήματος 2 καθώς και η έκφραση Ναι/ Οχι ανάλογα με το αν παίρνουν μισθό άνω του 1500. 96 / 106

Η συνάρτηση IF Να βρεθεί το ονοματεπώνυμο των υπαλλήλων του τμήματος 2 καθώς και η έκφραση Ναι/ Οχι ανάλογα με το αν παίρνουν μισθό άνω του 1500. 1 SELECT firstname, lastname, 2 IF(salary>1500, Ναι, Οχι ) AS slevel 3 FROM employees 4 WHERE depid = 2; 5 6 firstname lastname slevel 7 ------------------------------------ 8 Μαρία Αλεβιζάτου Οχι 9 Δέσποινα Παπαδοπούλου Ναι 10 Πέτρος Αρβανιτάκης Οχι 11 Μαριλένα Κρέσπα Οχι 97 / 106

Απασχόληση; Ναί ή Οχι Να βρεθεί το ονοματεπώνυμο των υπαλλήλων του τμήματος 1 καθώς και η έκφραση Ναι/ Οχι ανάλογα με το αν απασχολούνται σε κάποιο έργο. 98 / 106

Απασχόληση; Ναί ή Οχι Να βρεθεί το ονοματεπώνυμο των υπαλλήλων του τμήματος 1 καθώς και η έκφραση Ναι/ Οχι ανάλογα με το αν απασχολούνται σε κάποιο έργο. 1 SELECT DISTINCT e.firstname, e.lastname, 2 IF(w.empid IS NULL, Ναι, Οχι ) AS status 3 FROM employees e LEFT JOIN workson w 4 ON e.empid = w.empid 5 WHERE depid = 1; 6 7 firstname lastname status 8 ----------------------------------- 9 Μαρία Αθανασίου Οχι 10 Κρινιώ Μαροπούλου Οχι 11 Κυριάκος Ρούσσης Ναι 99 / 106

Απασχόληση; Ναί ή Οχι Να βρεθεί το ονοματεπώνυμο των υπαλλήλων του τμήματος 1 καθώς και η έκφραση Ναι/ Οχι ανάλογα με το αν απασχολούνται σε κάποιο έργο. 100 / 106

Απασχόληση; Ναί ή Οχι Να βρεθεί το ονοματεπώνυμο των υπαλλήλων του τμήματος 1 καθώς και η έκφραση Ναι/ Οχι ανάλογα με το αν απασχολούνται σε κάποιο έργο. 1 SELECT DISTINCT e.firstname, e.lastname, 2 IFNULL(w.empid, Ναι, Οχι ) AS status 3 FROM employees e LEFT JOIN workson w 4 ON e.empid = w.empid 5 WHERE depid = 1; 6 7 firstname lastname status 8 ----------------------------------- 9 Μαρία Αθανασίου Οχι 10 Κρινιώ Μαροπούλου Οχι 11 Κυριάκος Ρούσσης Ναι 101 / 106

Ροή ελέγχου: CASE Να βρεθεί το ονοματεπώνυμο των υπαλλήλων του τμήματος 2 καθώς και η έκφραση Μικρό/Μεγάλο (επίπεδο μισθού) ανάλογα με το αν παίρνουν μισθό άνω του 1500. 102 / 106

Ροή ελέγχου: CASE Να βρεθεί το ονοματεπώνυμο των υπαλλήλων του τμήματος 2 καθώς και η έκφραση Μικρό/Μεγάλο (επίπεδο μισθού) ανάλογα με το αν παίρνουν μισθό άνω του 1500. 1 SELECT firstname, lastname, 2 CASE 3 WHEN salary > 1500 THEN Μεγάλο 4 ELSE Μικρό 5 END AS dep2sal 6 FROM employees 7 WHERE depid = 2; 8 9 firstname lastname dep2sal 10 ---------------------------------------- 11 Μαρία Αλεβιζάτου Μικρό 12 Δέσποινα Παπαδοπούλου Μεγάλο 13 Πέτρος Αρβανιτάκης Μικρό 103 / 106

Ροή ελέγχου: CASE 3 περιπτώσεων Να βρεθεί το ονοματεπώνυμο των υπαλλήλων του τμήματος 2 καθώς και η έκφραση Μικρό/Μεσαίο/Μεγάλο ανάλογα με το αν παίρνουν μισθό άνω του 1200 ή 1500. 104 / 106

Ροή ελέγχου: CASE 3 περιπτώσεων Να βρεθεί το ονοματεπώνυμο των υπαλλήλων του τμήματος 2 καθώς και η έκφραση Μικρό/Μεσαίο/Μεγάλο ανάλογα με το αν παίρνουν μισθό άνω του 1200 ή 1500. 1 SELECT firstname, lastname, 2 CASE 3 WHEN salary > 1500 THEN Μεγάλο 4 WHEN salary > 1200 THEN Μεσαίο 5 ELSE Μικρό 6 END AS dep2sal 7 FROM employees 8 WHERE depid = 2; 9 10 firstname lastname dep2sal 11 ---------------------------------------- 12 Μαρία Αλεβιζάτου Μεσαίο 13 Δέσποινα Παπαδοπούλου Μεγάλο 105 / 106

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