IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8...

26
ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 1 Ιατρική Πληροφορική Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ .Ε. Χρήσιμοι Σύνδεσμοι Σημειώσεις μαθήματος: http://medisp.bme.teiath.gr/eclass/courses/TIO103/ https://eclass.teiath.gr/courses/TIO100/ Email: [email protected]

Transcript of IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8...

Page 1: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 1

ΙατρικήΠληροφορικήΔρ. Π. ΑΣΒΕΣΤΑΣ

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

ΧρήσιμοιΣύνδεσμοι

• Σημειώσεις μαθήματος:

http://medisp.bme.teiath.gr/eclass/courses/TIO103/

https://eclass.teiath.gr/courses/TIO100/

•E‐mail:

[email protected]

Page 2: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 2

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Η επιλογή δεδομένων από δύο ή περισσότερους πίνακες μπορεί να επιτευχθεί χρησιμοποιώντας τις λέξεις INNER JOIN (ή μόνο JOIN) σε μία εντολή SELECT

• Συνήθως, οι πίνακες από τους οποίους πρόκειται να επιλεγούν τα δεδομένα συνδέονται με μία σχέση ένα προς πολλά και το εξωτερικό κλειδί του ενός πίνακα συνδέεται με το πρωτεύον κλειδί του άλλου πίνακα

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Έστω, για παράδειγμα οι πίνακες για ασθενείς, ιατρούς και εξετάσεις

Page 3: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 3

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Έστω, για παράδειγμα οι πίνακες για ασθενείς, ιατρούς και εξετάσεις

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Έστω, για παράδειγμα οι πίνακες για ασθενείς, ιατρούς και εξετάσεις

Page 4: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 4

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Για να επιλεγούν το όνομα και το επώνυμο ασθενή, καθώς και το είδος και η ημερομηνία εξέτασης, η εντολή SQL είναι

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Με την εντολή αυτή θα εμφανιστούν μόνο οι ασθενείς που έχουν κάνει κάποια εξέταση. Αν υπάρχουν ασθενείς που δεν έχουν καταχωρημένη εξέταση, αυτοί δεν θα εμφανιστούν

Page 5: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 5

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Η σύνταξη της προηγούμενης εντολής μπορεί να απλοποιηθεί χρησιμοποιώντας τη λέξη USING με την προϋπόθεση ότι το εξωτερικό κλειδί του ενός πίνακα έχει το ίδιο όνομα με το πρωτεύον κλειδί του άλλου πίνακα

• Για παράδειγμα, εάν στον πίνακα με τους ασθενείς το πρωτεύον κλειδί ονομαζόταν astheneis_id και το ίδιο όνομα είχε δοθεί στο εξωτερικό κλειδί στον πίνακα με τις εξετάσεις, τότε η προηγούμενη εντολή θα μπορούσε να γραφτεί

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Οποιοσδήποτε από τους δύο τρόπους και εάν επιλεγεί (χρήση λέξης ON ή χρήση λέξης USING), η εντολή μπορεί να περιλαμβάνει τις λέξεις WHERE και ORDER BY

• Έστω ότι στο προηγούμενο παράδειγμα θέλαμε να εμφανιστούν οι εξετάσεις που έγιναν το πρώτο εξάμηνο του 2010 και τα αποτελέσματα να είναι ταξινομημένα με βάση την ημερομηνία εξέτασης από παλαιότερες σε νεώτερες, 

Page 6: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 6

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Η εντολή θα ήταν

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Το αποτέλεσμα θα ήταν

Page 7: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 7

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Στην περίπτωση που επιθυμείται να επιλεγούν δεδομένα από 3 πίνακες, για παράδειγμα επώνυμο ασθενή, επώνυμο ιατρού και ημερομηνία εξέτασης, η χρήση της λέξης JOIN γίνεται ως ακολούθως

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Η εντολή θα παράγει το ακόλουθο αποτέλεσμα

Page 8: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 8

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Όπως και πριν, η σύνταξη της εντολής μπορεί να απλοποιηθεί με χρήση της λέξης USING ως εξής:

• έστω ότι στον πίνακα με τους ασθενείς το πρωτεύον κλειδί ονομαζόταν astheneis_id και το ίδιο όνομα είχε δοθεί στο αντίστοιχο εξωτερικό κλειδί στον πίνακα με τις εξετάσεις

• έστω ότι στον πίνακα με τους ιατρούς το πρωτεύον κλειδί ονομαζόταν iatroi_id και το ίδιο όνομα είχε δοθεί στο αντίστοιχο εξωτερικό κλειδί στον πίνακα με τις εξετάσεις

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

Page 9: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 9

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Πρέπει να τονιστεί ότι εάν δύο πίνακες δεν συνδέονται άμεσα (όπως ασθενείς και ιατροί), αλλά μέσω ενός τρίτου πίνακα (εξετάσεις), τότε ακόμα και δεν ζητούνται δεδομένα από τον τρίτο πίνακα, ο πίνακας αυτός πρέπει να χρησιμοποιηθεί

• Για παράδειγμα, για να εμφανιστούν το επώνυμο ασθενή και το επώνυμο ιατρού

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

Page 10: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 10

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

• Το πλεονέκτημα της εφαρμογής της JOIN για επιλογή δεδομένων από δύο πίνακες είναι ότι μπορεί να χρησιμοποιηθεί για την επιλογή δεδομένων από τον έναν πίνακα από τους δύο πίνακες ακόμα και αν οι εγγραφές του δεν σχετίζονται με εγγραφές του άλλου πίνακα.

• Για παράδειγμα, έστω ότι επιθυμείται να εμφανιστούν όνομα και επώνυμο για ασθενείς ακόμα και εάν δεν έχουν κάνει κάποια εξέταση και για όσους υπάρχουν  εξετάσεις, να εμφανιστούν το είδος και η ημερομηνία εξέτασης. 

ΕΠΙΛΟΓΗΔΕΔΟΜΕΝΩΝ– JOIN

Page 11: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 11

ΣΥΝΑΡΤΗΣΕΙΣ

• Η MySQL υποστηρίζει συναρτήσεις που μπορούν εφαρμοστούν στιςτιμές μίας στήλης ενός πίνακα

• Μία ιδιαίτερα χρήσιμη συνάρτηση είναι ηDATE_FORMAT(col_name, format), όπου col_name είναι το όνομαμίας στήλης που περιέχει ημερομηνίες και format είναι μίασυμβολοσειρά που καθορίζει τη μορφοποίηση

• Εάν για παράδειγμα θέλουμε να εμφανιστούν το επώνυμο και τοεπώνυμο ασθενών και η ημερομηνία εξέτασης στη συνήθη μορφή(μέρα‐μήνας‐χρόνος), η εντολή θα είναι

ΣΥΝΑΡΤΗΣΕΙΣ

• Το αποτέλεσμα θα είναι

Page 12: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 12

ΣΥΝΑΡΤΗΣΕΙΣ

• Η MySQL υποστηρίζει τις ακόλουθες συναρτήσεις, οι οποίες χρησιμοποιούνται με την εντολή SELECT:

• COUNT(field): επιστρέφει το πλήθος των γραμμών του πίνακα που έχουν τιμή στη στήλη field

• MIN(field): επιστρέφει την ελάχιστη τιμή  της στήλης field

• MAX(field): επιστρέφει τη μέγιστη τιμή  της στήλης field

• AVG(field): επιστρέφει το μέσο όρο των τιμών της στήλης field

• STDDEV_SAMP(field): επιστρέφει την τυπική απόκλιση των τιμών της στήλης field

• SUM(field): επιστρέφει το άθροισμα της στήλης field

• ABS(field): υπολογίζει την απόλυτη τιμή κάθε τιμή της στήλης field

• ROUND(field): υπολογίζει τον πλησιέστερο ακέραιο κάθε τιμής της στήλης field

• ROUND(field, n): στρογγυλοποιεί κάθε τιμή της στήλης fieldχρησιμοποιώντας n δεκαδικά ψηφία

ΣΥΝΑΡΤΗΣΕΙΣ

• Για παράδειγμα, για να υπολογιστεί η μέση τιμή του βάρους των ασθενών, η εντολή είναι:

Page 13: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 13

ΣΥΝΑΡΤΗΣΕΙΣ

• Για να υπολογιστούν η ελάχιστη και η μέγιστη τιμή του βάρους των ασθενών, η εντολή είναι:

ΣΥΝΑΡΤΗΣΕΙΣ

• Για να υπολογιστεί το πλήθος των γραμμών του πίνακα ασθενών, η εντολή είναι

Page 14: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 14

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

Άσκηση

Έστω μία βάση δεδομένων με πληροφορίες για πελάτες, κατηγορίες προϊόντων, προϊόντα, παραγγελίες και λεπτομέρειες παραγγελιών μιας εταιρείας, η οποία περιλαμβάνει τους ακόλουθους πίνακες:

• πίνακας πελατών customers:

• κωδικός πελάτη

• επώνυμο

• όνομα

• πίνακας κατηγοριών προϊόντων product_categories:

• κωδικός κατηγορίας

• περιγραφή

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

Άσκηση

Έστω μία βάση δεδομένων με πληροφορίες για πελάτες, κατηγορίες προϊόντων, προϊόντα, παραγγελίες και λεπτομέρειες παραγγελιών μιας εταιρείας, η οποία περιλαμβάνει τους ακόλουθους πίνακες:

• πίνακας προϊόντων products:

• κωδικός προϊόντος

• κωδικός κατηγορίας

• ονομασία

• τιμή

• απόθεμα

Page 15: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 15

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

Άσκηση

Έστω μία βάση δεδομένων με πληροφορίες για πελάτες, κατηγορίες προϊόντων, προϊόντα, παραγγελίες και λεπτομέρειες παραγγελιών μιας εταιρείας, η οποία περιλαμβάνει τους ακόλουθους πίνακες:

• πίνακας παραγγελιών orders:

• κωδικός

• κωδικός πελάτη

• ημερομηνία παραγγελίας

• σχόλια

• κατάσταση

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

Άσκηση

Έστω μία βάση δεδομένων με πληροφορίες για πελάτες, κατηγορίες προϊόντων, προϊόντα, παραγγελίες και λεπτομέρειες παραγγελιών μιας εταιρείας, η οποία περιλαμβάνει τους ακόλουθους πίνακες:

• πίνακας λεπτομερειών παραγγελιών order_details:

• κωδικός

• κωδικός παραγγελίας

• κωδικός προϊόντος

• τεμάχια

Page 16: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 16

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

Άσκηση

Να γραφτούν εντολές SQL ώστε να:

1. δημιουργούνται οι πίνακες

2. εμφανίζονται επώνυμο και όνομα πελατών και οι ημερομηνίες των αντίστοιχων παραγγελιών. Να γίνει ταξινόμηση με βάση την ημερομηνία παραγγελίας από παλαιότερες σε νεώτερες

3. εμφανίζονται οι ονομασίες των προϊόντων που είναι στην κατηγορία Αναλώσιμα Εργαστηρίων

4. εμφανίζονται οι ημερομηνίες των 5 τελευταίων  παραγγελιών του πελάτη με ονοματεπώνυμο John Doe, ταξινομημένες από την πιο πρόσφατη προς την πιο παλιά

5. να υπολογίζεται το πλήθος των παραγγελιών για τον πελάτη με ονοματεπώνυμο John Doe

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

Λύση

1. Δημιουργία πινάκων

Πίνακας πελατών

Πίνακας κατηγοριών προϊόντων

Page 17: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 17

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

Λύση

1. Δημιουργία πινάκων

Πίνακας προϊόντων

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

Λύση

1. Δημιουργία πινάκων

Πίνακας παραγγελιών

Page 18: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 18

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

Λύση

1. Δημιουργία πινάκων

Πίνακας λεπτομέρειες παραγγελιών

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

Λύση

2. Επώνυμο και όνομα πελατών και οι ημερομηνίες των αντίστοιχων παραγγελιών. Ταξινόμηση με βάση την ημερομηνία παραγγελίας από παλαιότερες σε νεώτερες

Page 19: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 19

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

Λύση

3. Ονομασίες των προϊόντων που είναι στην κατηγορία Αναλώσιμα Εργαστηρίων

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

Λύση

4. Ημερομηνίες των 5 τελευταίων  παραγγελιών του πελάτη με ονοματεπώνυμο John Doe. Ταξινόμηση από την πιο πρόσφατη προς την πιο παλιά

Page 20: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 20

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

Λύση

5. Πλήθος των παραγγελιών για τον πελάτη με ονοματεπώνυμο John Doe

ΧΡΗΣΗMYSQLΜΕΣΩMATLAB

• Γενικά, υπάρχουν 3 βήματα που εκτελούνται όταν μία εφαρμογή πρόκειται να αλληλεπιδράσει με μία βάση δεδομένων:

• Δημιουργία σύνδεσης με τη βάση δεδομένων

• Εκτέλεση μίας η περισσοτέρων εντολών SQL

• Τερματισμός σύνδεσης με βάση δεδομένων

Page 21: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 21

ΧΡΗΣΗMYSQLΜΕΣΩMATLAB–ΔΗΜΙΟΥΡΓΙΑΣΥΝΔΕΣΗΣ• Η πρώτη ενέργεια που πρέπει να γίνει για να υπάρξειαλληλεπίδραση με μία βάση δεδομένων μέσω Matlab είναινα δημιουργηθεί μία σύνδεση μεταξύ της εφαρμογής και τουσυστήματος διαχείρισης βάσεων δεδομένων MySQL. Ταστοιχεία που χρειάζονται για να δημιουργηθεί η σύνδεσηείναι:

• το όνομα της βάσης δεδομένων που θα χρησιμοποιηθεί

• η IP διεύθυνση του υπολογιστή όπου είναι εγκατεστημένο το ΣΔΒΔ MySQL

• ο αριθμός πόρτας που χρησιμοποιεί το ΣΔΒΔ MySQL

• ένα όνομα χρήστη

• ένα συνθηματικό

ΧΡΗΣΗMYSQLΜΕΣΩMATLAB–ΔΗΜΙΟΥΡΓΙΑΣΥΝΔΕΣΗΣ• Η πρώτη ενέργεια που πρέπει να γίνει για να υπάρξειαλληλεπίδραση με μία βάση δεδομένων μέσω Matlab είναινα δημιουργηθεί μία σύνδεση μεταξύ της εφαρμογής και τουσυστήματος διαχείρισης βάσεων δεδομένων MySQL. Ταστοιχεία που χρειάζονται για να δημιουργηθεί η σύνδεσηείναι:

• το όνομα της βάσης δεδομένων που θα χρησιμοποιηθεί

• η IP διεύθυνση του υπολογιστή όπου είναι εγκατεστημένο το ΣΔΒΔ MySQL

• ο αριθμός πόρτας που χρησιμοποιεί το ΣΔΒΔ MySQL

• ένα όνομα χρήστη

• ένα συνθηματικό

Page 22: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 22

ΧΡΗΣΗMYSQLΜΕΣΩMATLAB–ΔΗΜΙΟΥΡΓΙΑΣΥΝΔΕΣΗΣ• Συνήθως, ο αριθμός πόρτας είναι 3306. Στην περίπτωση όπου το ΣΔΒΔ MySQL είναι στον ίδιο υπολογιστή με την εφαρμογή η διεύθυνση IP είναι 127.0.0.1 ή ισοδύναμα localhost.

• Οι εντολές Matlab για τη δημιουργία σύνδεσης με μία βάση δεδομένων με το όνομα ‘askhsh10’, με όνομα χρήστη ‘student’, συνθηματικό ‘student’ στην IP 192.168.1.100 είναι:

ΧΡΗΣΗMYSQLΜΕΣΩMATLAB–ΔΗΜΙΟΥΡΓΙΑΣΥΝΔΕΣΗΣ• Όπως φαίνεται, κάθε παράμετρος της σύνδεσης βρίσκεται σεμία μεταβλητή. Η μεταβλητή driver καθορίζει τον τύπο τουπρογράμματος οδήγησης που θα χρησιμοποιηθεί για τηδιασύνδεση με τη βάση δεδομένων. Ένα πρόγραμμαοδήγησης περιλαμβάνει ένα σύνολο βοηθητικώνσυναρτήσεων συνήθως γραμμένων σε γλώσσα C ή Java πουαναλαμβάνουν να εκτελέσουν τις λειτουργίες χαμηλούεπιπέδου για τη διασύνδεση με τη βάση δεδομένων.

Page 23: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 23

ΧΡΗΣΗMYSQLΜΕΣΩMATLAB–ΔΗΜΙΟΥΡΓΙΑΣΥΝΔΕΣΗΣ• Η δημιουργία της σύνδεσης γίνεται με χρήση της συνάρτησης του Matlab database, η οποία παίρνει ως ορίσματα εισόδου τις παραμέτρους της σύνδεσης και επιστρέφει ένα κατάλληλο αντικείμενο με πληροφορίες για τη σύνδεση.

• Ο έλεγχος εάν η σύνδεση είναι επιτυχής πραγματοποιείται μεχρήση της συνάρτησης isconnection, η οποία λαμβάνει ωςόρισμα εισόδου το αντικείμενο που επιστρέφει η συνάρτησηdatabase. H συνάρτηση isconnection επιστρέφει 1 σεπερίπτωση επιτυχούς σύνδεσης, διαφορετικά επιστρέφει 0.

ΧΡΗΣΗMYSQLΜΕΣΩMATLAB–ΕΚΤΕΛΕΣΗΕΝΤΟΛΩΝSQL• Αφού δημιουργηθεί η σύνδεση της εφαρμογής με τη βάση δεδομένων, είναι πλέον εφικτό να εκτελεστούν εντολές SQL.

• Έστω για παράδειγμα ότι στη βάση δεδομένων υπάρχει ένας πίνακας με το όνομα astheneis με την ακόλουθη δομή:

Page 24: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 24

ΧΡΗΣΗMYSQLΜΕΣΩMATLAB–ΕΚΤΕΛΕΣΗΕΝΤΟΛΩΝSQL• Τότε, για να επιλεγούν το όνομα και το επώνυμο κάθε ασθενή οι εντολές Matlab είναι οι ακόλουθες:

• Η εντολή setdbprefs('DataReturnFormat','structure');

καθορίζει ότι τα αποτελέσματα θα είναι μια μεταβλητή τύπου δομής(structure).• Η εντολή

sql = 'SELECT first_name, last_name FROM astheneis';τοποθετεί στη μεταβλητή sql την εντολή που πρόκειται να εκτελεστεί.• Η εντολή:

X = fetch(conn, sql);χρησιμοποιεί τη συνάρτηση fetch, η οποία λαμβάνει ως ορίσματαεισόδου το αντικείμενο με τη σύνδεση και την προς εκτέλεση εντολή, γιαεκτέλεση της εντολής

ΧΡΗΣΗMYSQLΜΕΣΩMATLAB–ΕΚΤΕΛΕΣΗΕΝΤΟΛΩΝSQL• Η συνάρτηση fetch επιστρέφει τα αποτελέσματα εκτέλεσης σε μία μεταβλητή τύπου δομής: 

• Στο προηγούμενο παράδειγμα, Χ.first_name είναι ένας πίνακας 50 στοιχείων με τα ονόματα των ασθενών και X.last_name είναι ένας άλλος πίνακας 50 στοιχείων με τα επώνυμα των ασθενών.

Page 25: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 25

ΧΡΗΣΗMYSQLΜΕΣΩMATLAB–ΕΚΤΕΛΕΣΗΕΝΤΟΛΩΝSQL• Στη συνέχεια, μπορεί να γίνει οποιαδήποτε επεξεργασία επιθυμούμε με τα δεδομένα που υπάρχουν στη μεταβλητή Χ. Εάν για παράδειγμα, επιθυμείται να εμφανιστούν το όνομα και το επώνυμο κάθε ασθενή οι εντολές είναι:

ΧΡΗΣΗMYSQLΜΕΣΩMATLAB–ΤΕΡΜΑΤΙΣΜΟΣΣΥΝΔΕΣΗΣ• Αφού εκτελεστούν όλες οι εντολές SQL που θέλουμε, η σύνδεση με τη βάση δεδομένων μπορεί να τερματιστεί καλώντας τη συνάρτηση close, με όρισμα το αντικείμενο με τις πληροφορίες της σύνδεσης:

Page 26: IATRIKH PLHROFORIKH ASVESTAS DIALEXH 8 newmedisp.bme.uniwa.gr/eclass/modules/document/file.php/TIO103... · ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ ∆ΙΑΛΕΞΗ 8 4 ΕΠΙΛΟΓΗ

ΙΑΤΡΙΚΗ ΠΛΗΡΟΦΟΡΙΚΗ

∆ΙΑΛΕΞΗ 8 26

ΧΡΗΣΗMYSQLΜΕΣΩMATLAB

• Το συνολικό πρόγραμμα είναι: