Όταν υπάρχει ανάγκη δημιουργίας βάσης δεδομένων στο διαδίκτυο τότε η mysql αποτελεί την πιο δημοφιλή επιλογή. Η βάση δεδομένων mysql αποτελεί δωρεάν λογισμικό το οποίο χρησιμοποιείται πολύ συχνά στις web εφαρμογές. Για την ακρίβεια η σχεδίαση μιας web εφαρμογής ξεκινά με τη σχεδίαση της βάσης δεδομένων. Επίσης τα δημοφιλή προγράμματα κατασκευής ιστοσελίδων όπως είναι το wordpress, το joomla, το opencart και πολλά άλλα χρησιμοποιούν mysql για την αποθήκευση των δεδομένων. Γενικότερα θα λέγαμε ότι mysql αποτελεί ένα πολύ σημαντικό κομμάτι για τη διαδικασία κατασκευής ιστοσελίδων. Για αυτό πρέπει να αφιερώνουμε αρκετό χρόνο στα μαθήματα κατασκευής Ιστοσελίδων.
Mysql και PHP
Όταν έχουμε να κάνουμε με δημιουργία διαδικτυακής εφαρμογής τότε η βάση δεδομένων php συνδυάζεται συνήθως με τη γλώσσα προγραμματισμού PHP. Χρησιμοποιούμε τη γλώσσα php για να επεξεργαστούμε τα δεδομένα που βρίσκονται στη βάση δεδομένων Mysql. Αυτό ακριβώς συμβαίνει στο opencart, στο wordpress και στο joomla. Αυτό μπορούμε να κάνουμε και εμείς οι ίδιοι όταν φτιάξουμε τη δική μας web εφαρμογή. Η γνώση της γλώσσας php επιτρέπει στον προγραμματιστή να δημιουργήσει τη δική του εφαρμογή η οποία να επεξεργάζεται τα δεδομένα της βάσης δεδομένων που θα σχεδιάσει ο ίδιος. Καλό θα είναι ο εκπαιδευόμενος να συνδυάσει τα μαθήματα mysql με τα μαθήματα php.
Java και MySQL
Η σύνδεση στη βάση δεδομένων mysql με τη γλώσσα προγραμματισμού php αποτελεί το πρότυπο της αγοράς για διαδικτυακές εφαρμογές. Μια άλλη πολύ συνηθισμένη περίπτωση είναι όταν έχουμε εφαρμογές σε σταθερό υπολογιστή ή εφαρμογές που θα εκτελεστούν μέσα από κινητά τηλέφωνα smartphones. Τότε το πρότυπο της αγοράς είναι η σύνδεση στη mysql μέσω της γλώσσας προγραμματισμού java. Πρόκειται για έναν πολύ δημοφιλή συνδυασμό ο οποίος χρησιμοποιείται από πάρα πολλές εταιρείες στην ελληνική αγορά. Επίσης πρόκειται για ένα αντικείμενο το οποίο διδάσκεται σε αρκετές πανεπιστημιακές σχολές και μάλιστα αποτελεί αντικείμενο πολλών διπλωματικών εργασιών. Η σύνδεση γίνεται χρησιμοποιώντας το JAVA JDBC το οποίο μας επιτρέπει πρόσβαση σε δεδομένα κάθε τύπου σχεσιακής βάσης δεδομένων. Για να μπορέσει ο εκπαιδευόμενος να αποκτήσει ευχέρεια στην ανάπτυξη εφαρμογών βάσης δεδομένων με java Θα πρέπει πρώτα να αποκτήσει ευκαιρία με τις βασικές εντολές της γλώσσας προγραμματισμού java. Αυτό μπορεί να το πετύχει πολύ εύκολα παρακολουθώντας ένα βασικό σεμινάριο java. Εάν έχει ήδη προγραμματιστικές γνώσεις η εμπειρία σε κάποια άλλη γλώσσα προγραμματισμού τότε ενδεχομένως να διαρκούν 2-3 ιδιαίτερα μαθήματα java.
Σεμινάρια mysql
Σε ένα σεμινάριο mysql με ένα οργανωμένο και δομημένο τρόπο μαθαίνουμε να σχεδιάζουμε μια βάση δεδομένων. Το ζητούμενο κατά τη δημιουργία βάσης δεδομένων είναι να ικανοποιήσει τις ανάγκες του πελάτη με τον καλύτερο τρόπο. Στα μαθήματα mysql μέσα από απλά παραδείγματα ο εκπαιδευόμενος μαθαίνει να σχεδιάζει και να υλοποιεί τους πίνακες, τα πεδία αλλά και τη συσχέτιση μεταξύ των πινάκων σε μια βάση δεδομένων Mysql. Χρησιμοποιούμε παραδείγματα μέσα από πραγματικές ανάγκες που προκύπτουν πολύ συχνά κατά τη δημιουργία διαδικτυακών εφαρμογών. Κατά την εκπαίδευση ενηλίκων είναι πολύ σημαντικό να χρησιμοποιούνται παραδείγματα βγαλμένα από την εμπειρία σε πραγματικές διαδικτυακές εφαρμογές. Με αυτό τον τρόπο το όφελος είναι διπλό. Από τη μια το ενδιαφέρον του εκπαιδευόμενου παραμένει αμείωτο μέχρι το τέλος του σεμιναρίου Mysql. Και από την άλλη στο τέλος του μαθήματος mysql ο εκπαιδευόμενος έχει ήδη μια μικρή πρακτική εμπειρία.
Στον ακόλουθο σύνδεσμο θα βρείτε playlist που περιλαμβάνει αποκλειστικά βίντεο εκπαίδευσης με τεχνικές διαχείρισης βάσεων δεδομένων.
PLAYLIST YOUTUBE: Εκπαιδευτικά video που αφορούν βάσεις δεδομένων
Δημιουργία πινάκων στη βάση δεδομένων:
Το πρώτο βήμα για τη δημιουργία βάσης δεδομένων είναι να κάνετε εξάσκηση στη δημιουργία πινάκων:
- Να δημιουργηθεί πίνακας "Ομάδες" με τρια πεδία: id, ομάδα, χρώμα
- Να δημιουργηθεί πίνακας "Τροφές" με τρια πεδία: id, τροφή, θερμίδες (ανά κιλό)
- Να δημιουργηθεί πίνακας "Αθλήματα" με τρια πεδία: id, άθλημα, θερμίδες (ανά ώρα)
- Να δημιουργηθεί πίνακας "Χώρες" με τρια πεδία: id, χώρα, πρωτεύουσα
- Να δημιουργηθεί πίνακας "Νομοί" με τρια πεδία: id, νομός, πρωτεύουσα
- Να δημιουργηθεί πίνακας "Αυτοκίνητα" με τρια πεδία: id, μάρκα, χώρα
- Να δημιουργηθεί πίνακας "Αυτοκίνητα1" με τρια πεδία: id, μάρκα, μοντέλο
Στη συνέχεια να καταχωρήσετε περίπου 20 εγγραφές σε κάθε πίνακα.
Και μετά να εκτελέσετε εντολές SELECT σε κάθε πίνακα (π.χ. να βρείτε τροφές με λίγες θερμίδες, αθλήματα στ αοποία καταναλώνονται πολλές θερμίδες, πόλεις που αρχίζουν από "A", χώρες που αρχίζουν από "B", κλπ)
Ασκήσεις MySQL
Ακολουθούν ασκήσεις mysql. Στον ακόλουθο σύνδεσμο μπορείτε να κάνετε άμεση εφαρμογή των εντολών mysql. Η σελίδα δημιουργήθηκε με τη γλώσσα php:
http://22282212531.thesite.link/a1/4.php
-
Να εμφανίσετε όλες τις εγγραφές του πίνακα Customers
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1, CustomersLastName as field2, YearBirth as field3, City as field4 from customers
-
Να εμφανίσετε τα ονόματα όλων των εγγραφών του πίνακα Customers
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1 from customers
-
Να εμφανίσετε τα ονόματα όλων των εγγραφών του πίνακα Customers με έτος γέννησης 1980
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1 from customers Where YearBirth = 2000
-
Να εμφανίσετε τα ονόματα όλων των εγγραφών του πίνακα Customers με επώνυμο "Νικολάου"
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1 from customers where CustomersLastName = 'Νικολάου'
-
Να εμφανίσετε όνομα και πόλη όλων των εγγραφών του πίνακα Customers με επώνυμο "Νικολάου"
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1, City as field4 from customers where CustomersLastName = 'Νικολάου'
-
Να εμφανίσετε όνομα και επώνυμο όλων των εγγραφών του πίνακα Customers με πόλη "Βόλος"
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1, CustomersLastName as field2 from customers where city like "Βόλος"
-
Να εμφανίσετε όνομα και επώνυμο όλων των εγγραφών του πίνακα Customers με έτος γέννησης μεγαλύτερο από 1970
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1, CustomersLastName as field2 from customers Where YearBirth > 1970
-
Να εμφανίσετε πόλη και επώνυμο όλων των εγγραφών του πίνακα Customers με έτος γέννησης μικρότερο από 1980
ΑΠΑΝΤΗΣΗ:
select CustomersLastName as field2, City as field4 from customers Where YearBirth < 1980
-
Να εμφανίσετε πόλη και επώνυμο όλων των εγγραφών του πίνακα Customers με έτος γέννησης μικρότερο ή ίσο από 1980
ΑΠΑΝΤΗΣΗ:
select CustomersLastName as field2, City as field4 from customers Where YearBirth <= 1980
-
Να εμφανίσετε πόλη και επώνυμο όλων των εγγραφών του πίνακα Customers με έτος γέννησης διαφορετικό από 1980
ΑΠΑΝΤΗΣΗ:
select CustomersLastName as field2, City as field4 from customers Where YearBirth <> 1980
-
Να εμφανίσετε μοναδικές τιμές ονομάτων όλων των εγγραφών του πίνακα Customers
ΑΠΑΝΤΗΣΗ:
select DISTINCT CustomersName as field1 from customers
-
Να εμφανίσετε μοναδικές τιμές των πόλεων όλων των εγγραφών του πίνακα Customers
ΑΠΑΝΤΗΣΗ:
select DISTINCT city as field1 from customers
-
Να εμφανίσετε μοναδικές τιμές πόλεων στις οποίες μένουν άνθρωποι (εγγραφές) με έτος γέννησης μεγαλύτερο από το 1980
ΑΠΑΝΤΗΣΗ:
select DISTINCT city as field1 from customers Where YearBirth > 1980
-
Να εμφανίσετε μοναδικές τιμές επωνύμων όλων των εγγραφών του πίνακα Customers με όνομα "Μαρία"
ΑΠΑΝΤΗΣΗ:
select DISTINCT CustomersLastName as field1 from customers where CustomersName = 'Μαρία'
-
Να εμφανίσετε όλα τα ονόματα που αρχίζουν από A
ΑΠΑΝΤΗΣΗ:
SELECT CustomersLastName as field1 FROM customers Where CustomersLastName LIKE 'Α%'
-
Να εμφανίσετε όλα τα επώνυμα που αρχίζουν από Γεω
ΑΠΑΝΤΗΣΗ:
SELECT CustomersLastName as field1 FROM customers Where CustomersLastName LIKE 'Γεω%'
-
Να εμφανίσετε όλα τα ονόματα που τελειώνουν σε ος
ΑΠΑΝΤΗΣΗ:
SELECT CustomersLastName as field1 FROM customers Where CustomersLastName LIKE '%ος'
-
Να εμφανίσετε όλα τα έτη γέννησης που περιέχουν το 97 σε οποιοδήποτε σημείο
ΑΠΑΝΤΗΣΗ:
SELECT YearBirth as field1 FROM customers Where YearBirth LIKE '%97%'
-
Να εμφανίσετε όλα τα πεδία των εγγαρφών που γιορτάζουν στις 21 Μαϊου (Κώστας, Ελένη)
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1, CustomersLastName as field2, YearBirth as field3, City as field4 from customers where CustomersName = 'Κώστας' OR CustomersName = 'Ελένη'
-
Να γράψετε ΣΕ ΜΙΑ ΣΤΗΛΗ το όνομα και το επώνυμο (εντολή CONCAT)
ΑΠΑΝΤΗΣΗ:
SELECT CONCAT(CustomersName, " ", CustomersLastName) AS field2 from customers
-
Να βρείτε το πλήθος των εγγραφών του πίνακα customers (δηλαδή πόσα ονόματα περιέχει ο πίνακας customers)
ΑΠΑΝΤΗΣΗ:
SELECT COUNT(*) AS field2 FROM customers;
-
Να βρείτε το πλήθος των εγγραφών του πίνακα customers με όνομα 'Σταυρούλα'
ΑΠΑΝΤΗΣΗ:
SELECT COUNT(*) AS field2 FROM customers where CustomersName = 'Σταυρούλα'
-
Να βρείτε το πλήθος των εγγραφών του πίνακα customers με έτος γέννησης μεγαλύτερο του 2000
ΑΠΑΝΤΗΣΗ:
SELECT COUNT(*) AS field2 FROM customers Where YearBirth > 2000
-
Να βρείτε το πλήθος των εγγραφών του πίνακα customers με έτος γέννησης μικρότερο του 1980
ΑΠΑΝΤΗΣΗ:
SELECT COUNT(*) AS field2 FROM customers Where YearBirth < 1980
-
Να βρείτε το πλήθος των εγγραφών του πίνακα customers
ΑΠΑΝΤΗΣΗ:
SELECT COUNT(CustomersName) AS field2 FROM customers
-
Να βρείτε το πλήθος των μοναδικών ονομάτων του πίνακα customers
ΑΠΑΝΤΗΣΗ:
SELECT COUNT(DISTINCT CustomersName) AS field2 FROM customers
-
Να βρείτε το πλήθος των ονομάτων του πίνακα customers με διαμονή στην Αθήνα
ΑΠΑΝΤΗΣΗ:
SELECT COUNT(CustomersName) AS field2 FROM customers where city like "Αθήνα"
-
Να βρείτε το πλήθος των μοναδικών ονομάτων του πίνακα customers με διαμονή στην Αθήνα
ΑΠΑΝΤΗΣΗ:
SELECT COUNT(DISTINCT CustomersName) AS field2 FROM customers where city like "Αθήνα"
-
Να εμφανίσετε τα ονόματα του πίνακα customers με διαμονή στην Αθήνα
ΑΠΑΝΤΗΣΗ:
SELECT CustomersName AS field2 FROM customers where city like "Αθήνα"
-
Να εμφανίσετε τα μοναδικά ονόματα του πίνακα customers με διαμονή στην Αθήνα
ΑΠΑΝΤΗΣΗ:
SELECT DISTINCT CustomersName AS field2 FROM customers where city like "Αθήνα"
-
Να βρείτε το μεγαλύτερο έτος γέννησης του πίνακα customers
ΑΠΑΝΤΗΣΗ:
SELECT MAX(YearBirth) AS field2 FROM customers
-
Να βρείτε το μεγαλύτερο έτος γέννησης του πίνακα customers όσων μένουν στα Τρίκαλα
ΑΠΑΝΤΗΣΗ:
SELECT MAX(YearBirth) AS field2 FROM customers where city like "Τρίκαλα"
-
Να εμφανίσετε τα έτη γέννησης του πίνακα customers όσων μένουν στα Τρίκαλα
ΑΠΑΝΤΗΣΗ:
SELECT YearBirth AS field2 FROM customers where city like "Τρίκαλα"
-
Να βρείτε το μικρότερο έτος γέννησης του πίνακα customers
ΑΠΑΝΤΗΣΗ:
SELECT MIN(YearBirth) AS field2 FROM customers
-
Να βρείτε το μικρότερο έτος γέννησης του πίνακα customers όσων μένουν στο Βόλο
ΑΠΑΝΤΗΣΗ:
SELECT MIN(YearBirth) AS field2 FROM customers where city like "Βόλος"
-
Να εμφανίσετε τα έτη γέννησης του πίνακα customers όσων μένουν στο Βόλο
ΑΠΑΝΤΗΣΗ:
SELECT YearBirth AS field2 FROM customers where city like "Βόλος"
-
Να βρείτε το μέσο όρο για το έτος γέννησης του πίνακα customers
ΑΠΑΝΤΗΣΗ:
SELECT AVG(YearBirth) AS field2 FROM customers
-
Να βρείτε το μέσο όρο για το έτος γέννησης του πίνακα customers όσων μένουν στην Άρτα
ΑΠΑΝΤΗΣΗ:
SELECT AVG(YearBirth) AS field2 FROM customers where city like "Άρτα"
-
Να εμφανίσετε τα έτη γέννησης του πίνακα customers όσων μένουν στην Άρτα
ΑΠΑΝΤΗΣΗ:
SELECT YearBirth AS field2 FROM customers where city like "Άρτα"
-
Να βρείτε το μέσο όρο του έτους γέννησης ανά πόλη για τον πίνακα customers
ΑΠΑΝΤΗΣΗ:
SELECT city as field1, AVG(YearBirth) AS field2 FROM customers group by city
-
Να βρείτε τη μεγαλύτερη τιμή του έτους γέννησης ανά πόλη για τον πίνακα customers
ΑΠΑΝΤΗΣΗ:
SELECT city as field1, MAX(YearBirth) AS field2 FROM customers group by city
-
Να βρείτε την ελάχιστη τιμή του έτους γέννησης ανά πόλη για τον πίνακα customers
ΑΠΑΝΤΗΣΗ:
SELECT city as field1, MIN(YearBirth) AS field2 FROM customers group by city
-
Να βρείτε το πλήθος των ανθρώπων που μένουν σε κάθε πόλη
ΑΠΑΝΤΗΣΗ:
SELECT city as field1, COUNT(*) AS field2 FROM customers group by city
-
Να βρείτε το πλήθος των ανθρώπων ανά όνομα
ΑΠΑΝΤΗΣΗ:
SELECT CustomersName as field1, COUNT(*) AS field2 FROM customers group by CustomersName
-
Να βρείτε το πλήθος των ανθρώπων ανά επώνυμο
ΑΠΑΝΤΗΣΗ:
SELECT CustomersLastName as field1, COUNT(*) AS field2 FROM customers group by CustomersLastName
-
Να εμφανίσετε όλες τις εγγραφές του πίνακα Customers ταξινομημένες ως προς όνομα
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1, CustomersLastName as field2, YearBirth as field3, City as field4 from customers ORDER BY CustomersName
-
Να εμφανίσετε όλες τις εγγραφές του πίνακα Customers ταξινομημένες ως προς όνομα με αντίστροφη αλφαβητική σειρά (από το Ω ως το Α)
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1, CustomersLastName as field2, YearBirth as field3, City as field4 from customers ORDER BY CustomersName desc
-
Να εμφανίσετε όλες τις εγγραφές του πίνακα Customers ταξινομημένες ως προς επώνυμο
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1, CustomersLastName as field2, YearBirth as field3, City as field4 from customers ORDER BY CustomersLastName
-
Να εμφανίσετε όλες τις εγγραφές του πίνακα Customers ταξινομημένες ως προς επώνυμο με αντίστροφη αλφαβητική σειρά (από το Ω ως το Α)
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1, CustomersLastName as field2, YearBirth as field3, City as field4 from customers ORDER BY CustomersLastName desc
-
Να εμφανίσετε όλες τις εγγραφές του πίνακα Customers ταξινομημένες σε αύξουσα σειρά προς έτος γέννησης
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1, CustomersLastName as field2, YearBirth as field3, City as field4 from customers ORDER BY YearBirth
-
Να εμφανίσετε όλες τις εγγραφές του πίνακα Customers ταξινομημένες σε φθίνουσα σειρά προς έτος γέννησης
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1, CustomersLastName as field2, YearBirth as field3, City as field4 from customers ORDER BY YearBirth desc
-
Να εμφανίσετε όλες τις εγγραφές του πίνακα Customers ταξινομημένες ως προς πόλη
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1, CustomersLastName as field2, YearBirth as field3, City as field4 from customers ORDER BY City
-
Να εμφανίσετε όλες τις εγγραφές του πίνακα Customers ταξινομημένες ως προς πόλη με αντίστροφη αλφαβητική σειρά (από το Ω ως το Α)
ΑΠΑΝΤΗΣΗ:
select CustomersName as field1, CustomersLastName as field2, YearBirth as field3, City as field4 from customers ORDER BY City desc
-
Να βρείτε το μέσο όρο του έτους γέννησης ανά πόλη για τον πίνακα customers και να τα παρουσιάσετε με αντίστροφη αλφαβητική σειρά ως προς την πόλη (από το Ω ως το Α)
ΑΠΑΝΤΗΣΗ:
SELECT city as field1, AVG(YearBirth) AS field2 FROM customers group by city ORDER BY city desc
-
Να βρείτε τη μεγαλύτερη τιμή του έτους γέννησης ανά πόλη για τον πίνακα customers και να τα παρουσιάσετε με αντίστροφη αλφαβητική σειρά ως προς την πόλη (από το Ω ως το Α)
ΑΠΑΝΤΗΣΗ:
SELECT city as field1, MAX(YearBirth) AS field2 FROM customers group by city ORDER BY city desc
-
Να βρείτε την ελάχιστη τιμή του έτους γέννησης ανά πόλη για τον πίνακα customers και να τα παρουσιάζετε με αύξουσα σειρά ως προς το έτος
ΑΠΑΝΤΗΣΗ:
SELECT city as field1, MIN(YearBirth) AS field2 FROM customers group by city ORDER BY field2
-
Να βρείτε το πλήθος των ανθρώπων που μένουν σε κάθε πόλη και να τα παρουσιάσετε με αύξουσα σειρά ως προς το πλήθος
ΑΠΑΝΤΗΣΗ:
SELECT city as field1, COUNT(*) AS field2 FROM customers group by city ORDER BY field2
-
Να βρείτε το πλήθος των ανθρώπων που μένουν σε κάθε πόλη και να τα παρουσιάσετε με φθίνουσα σειρά ως προς το πλήθος
ΑΠΑΝΤΗΣΗ:
SELECT city as field1, COUNT(*) AS field2 FROM customers group by city ORDER BY field2 desc
-
Να βρείτε το πλήθος των ανθρώπων ανά όνομα και να τα παρουσιάσετε με αύξουσα σειρά ως προς το πλήθος
ΑΠΑΝΤΗΣΗ:
SELECT CustomersName as field1, COUNT(*) AS field2 FROM customers group by CustomersName ORDER BY field2
-
Να βρείτε το πλήθος των ανθρώπων ανά επώνυμο και να τα παρουσιάσετε με φθίνουσα σειρά ως προς το πλήθος
ΑΠΑΝΤΗΣΗ:
SELECT CustomersLastName as field1, COUNT(*) AS field2 FROM customers group by CustomersLastName ORDER BY field2 desc
-
Να βρείτε το μέσο όρο ηλικίας ανά όνομα
ΑΠΑΝΤΗΣΗ:
SELECT CustomersName as field1, AVG(YearBirth) AS field2 FROM customers group by CustomersName
-
Να βρείτε το μέσο όρο ηλικίας ανά όνομα και να παρουσιάσετε αποτέλεσμα μόνο για τα ονόματα που έχουν μέσο όρο ηλικίας μεγαλύτερο του 1990
ΑΠΑΝΤΗΣΗ:
SELECT CustomersName as field1, AVG(YearBirth) AS field2 FROM customers group by CustomersName HAVING AVG(YearBirth) > 1990
-
Να βρείτε τη μέγιστη ηλικία ανθρώπων ανά πόλη
ΑΠΑΝΤΗΣΗ:
SELECT City as field1, MAX(YearBirth) AS field2 FROM customers group by City
-
Να βρείτε τη μέγιστη ηλικία ανθρώπων ανά πόλη και να παρουσιάσετε αποτέλεσμα μόνο για τα πόλεις που έχουν μέγιστη ηλικία μικρότερη του 1995
ΑΠΑΝΤΗΣΗ:
SELECT City as field1, MAX(YearBirth) AS field2 FROM customers group by City HAVING MAX(YearBirth) < 1995
-
Να βρείτε τη μέγιστη ηλικία ανθρώπων ανά πόλη και να παρουσιάσετε αποτέλεσμα μόνο για τα πόλεις που έχουν μέγιστη ηλικία μικρότερη του 1995 ταξινομημένα σε φθίνουσα σειρά ως προς έτος
ΑΠΑΝΤΗΣΗ:
SELECT City as field1, MAX(YearBirth) AS field2 FROM customers group by City HAVING MAX(YearBirth) < 1995 ORDER BY field2 desc
Εάν θέλετε να κάνετε εξάσκηση στο δικό σας υπολογιστή τότε θα πρέπει να εγκαταστήσετε το xampp. Στον ακόλουθο σύνδεσμο δείχνουμε βήμα προς βημα τη διαδικασία για την εγκατάσταση του xampp
Ασκήσεις δημιουργίας βάσης δεδομένων
Ακολουθούν απλες ασκήσεις για τη δημιουργία τυπικών βάσεων δεδομένων που χρησιμοποιούνται σε πολλές εφαρμογές:
Πρώτη άσκηση στις βάσεις δεδομένων:
Να δημιουργηθεί βάση δεδομένων για εκδοτικό οίκο:
- Κάθε βιβλίο έχει τίτλο, πλήθος σελίδων, τύπο εξωφύλλου, συγγραφέα.
- Κάθε συγγραφέας έχει ονοματεπώνυμο, τίτλο, σύντομο βιογραφικό.
- Κάθε βιβλίο έχει ένα συγγραφέα, αλλά ένας συγγραφέας μπορεί να έχει γράψει πολλά βιβλία.
Δεύτερη άσκηση στις βάσεις δεδομένων:
Να βελτιωθεί η βάση δεδομένων για τον εκδοτικό οίκο:
- Κάθε βιβλίο έχει τίτλο, πλήθος σελίδων, τύπο εξωφύλλου, συγγραφέα.
- Κάθε συγγραφέας έχει ονοματεπώνυμο, τίτλο, σύντομο βιογραφικό.
- Κάθε βιβλίο μπορεί να έχει πολλούς συγγραφείς, και κάθε συγγραφέας μπορεί να έχει γράψει πολλά βιβλία.
Τρίτη άσκηση στις βάσεις δεδομένων:
Να δημιουργηθεί βάση δεδομένων για πωλήσεις:
- Κάθε προϊόν έχει όνομα, τιμή, μέγεθος, χρώμα.
- Κάθε πωλητής έχει ονοματεπώνυμο, τίτλο, σύντομο βιογραφικό.
- Κάθε προϊόν έχει ένα πωλητή, αλλά ένας πωλητής μπορεί να έχει πουλήσει πολλά προϊόντα.
Τέταρτη άσκηση στις βάσεις δεδομένων:
Να βελτιωθεί η βάση δεδομένων για πωλήσεις:
- Κάθε προϊόν έχει όνομα, τιμή, μέγεθος, χρώμα.
- Κάθε πωλητής έχει ονοματεπώνυμο, τίτλο, σύντομο βιογραφικό.
- Κάθε προϊόν μπορεί να έχει πολλούς πωλητές, ενώ κάθε πωλητής μπορεί να έχει πουλήσει πολλά προϊόντα.
Πέμπτη άσκηση στις βάσεις δεδομένων:
Να δημιουργηθεί βάση δεδομένων για ηλεκτρονικό κατάστημα:
- Κάθε προϊόν έχει όνομα, τιμή, μέγεθος, χρώμα.
- Κάθε πελάτης έχει ονοματεπώνυμο, διεύθυνση, ταχυδρομικό κώδικα, περιοχή, φύλο.
- Κάθε παραγγελία περιλαμβάνει πελάτη, προϊόν, ποσότητα και αριθμό παραγγελίας.
Ασκήσεις SQL
Στη συνέχεια ακολουθούν ασκήσεις SQL τις οποίες μπορείτε να εκτελέσετε στον υπολογιστή σας με το xampp και το phpmyadmin. Περιλαμβάνονται οι εντολές δημιουργίας των πινάκων στις βάσεις δεδομένων (create) καθώς και οι εντολές SQL για την καταχώρηση των δεδομένων (insert). Εδώ θα βείτε τις υπόλοιπες ασκήσεις για τα μαθήματα sql.
Ενδεικτικές εφαρμογές βάσης δεδομένων mysql
Η βάση δεδομένων mysql είναι κατάλληλη για μία ευρεία γκάμα προγραμματιστικών εφαρμογών. Ένα τυπικό προγραμματισμού παράδειγμα που χρειάζεται βάση δεδομένων θα μπορούσε να είναι η ανάπτυξη εφαρμογής για ένα εμπορικό κατάστημα το οποίο θέλει να οργανώσει την αποθήκη του. Η πρόσβαση στη βάση δεδομένων μπορεί να γίνει με πολλές γλώσσες προγραμματισμού. Μία πολύ απλή γλώσσα την οποία μπορούμε να χρησιμοποιήσουμε για να αποκτήσουμε πρόσβαση στα δεδομένα είναι η γλώσσα προγραμματισμού vba. εκτελούμε πολύ απλά τη vba μέσα από το excel και χρησιμοποιούμε απευθείας τα δεδομένα στο φύλλο εργασίας. Το πώς μπορεί να γίνει αυτό μπορείτε να το μάθετε παρακολουθώντας ένα ένα σεμινάριο vba. Ως χαρακτηριστικό παράδειγμα που διδάσκεται σε αρκετές σχολές πληροφορικής μπορούμε να αναφέρουμε τη μηχανογράφηση ενός dvd club. Ένα δεύτερο παράδειγμα προγραμματισμού που απαιτεί βάση δεδομένων MySQL θα μπορούσε να είναι η μηχανογράφηση ενός λογιστικού γραφείου στο οποίο να έχει αποθηκευμένα τα στοιχεία των πελατών του τα οποία να χρησιμοποιεί και τις εκτυπώσεις των σχετικών λογιστικών εντύπων. Μπορούμε ακόμα να χρησιμοποιήσουμε τη mysql για να αποθηκεύσουμε τα ονόματα, τα τηλέφωνα και τις διευθύνσεις του προσωπικού μας τηλεφωνικού καταλόγου. Σε όλες αυτές τις εφαρμογές ο όγκος δεδομένων είναι μικρός όπως επίσης και η συχνότητα των συναλλαγών είναι μικρή. Για να παρακολουθήσει κάποιος ολόκληρη τη διαδικασία κατασκευής του προγράμματος πρέπει να διαθέτει προγραμματιστικές γνώσεις. Δεν γίνεται κατανοητή η ροή του προγράμματος εάν δεν έχει παρακολουθήσει κάποιος μαθήματα προγραμματισμού.
Πότε δεν ενδείκνυται η χρήση της mysql
Η mysql δεν ενδείκνυται για ιδιαίτερα απαιτητικές εφαρμογές βάσης δεδομένων. Σε περίπτωση που χρειάζεται να διαχειριστούμε πολύ μεγάλο όγκο δεδομένων η πολύ μεγάλη συχνότητα συναλλαγών τότε θα πρέπει να προχωρήσουμε σε μεγαλύτερα συστήματα διαχείρισης βάσεων δεδομένων. σε αυτή την κατηγορία των μεγαλύτερων συστημάτων διαχείρισης βάσης δεδομένων ανήκει ο SQL Server, η Oracle καθώς και η PostgreSQL. Ως φυσική συνέχεια της mysql όταν ανέβει πολύ ο όγκος των απαιτήσεων θεωρείται η PostgreSQL διότι είναι το πιο δημοφιλές Open Source Σύστημα Διαχείρισης Σχεσιακής Βάσης Δεδομένων. Ας πάρουμε για παράδειγμα τη δημιουργία eshop opencart. Όσο ο όγκος των συναλλαγών είναι σχετικά μικρός μας καλύπτει απόλυτα η mysql. Εάν όμως ανέβει σε πολύ υψηλά επίπεδα τότε πρέπει να αναπροσαρμόσουμε την κατασκευή eshop opencart σε άλλη βάση δεδομένων.
MySQL στην κατασκευή e-shop
Η MySQL χρησιμοποιείται σε όλες τις πλατφόρμες κατασκευής eshop. Οι δημοφιλέστερες πλατφόρμες κατασκευής eshop όπως είναι το Magento, το Openart και το Woocommerce χρησιμοποιούν τη mysql ως σύστημα διαχείρισης βάσης δεδομένων. Η γνώση της mysql είναι αναγκαία για τη δημιουργία eshop διότι μποεί να δώσει εύκολη και γρήγορη λύση σε προβλήματα που δεν μπορεί να λύσει εύκολα το Content Managment System. Η ικανότητα διαχείρισης της βάσης δεδομένων είναι μια ικανότητα που βοηθά πολύ στην κατασκευή e-shop.
Εφαρμογές που απαιτούν αναλυτική επεξεργασία συναλλαγών
Μία περίπτωση όπου είναι δύσκολο να χρησιμοποιηθεί η mysql είναι όταν απαιτείται αναλυτική επεξεργασία συναλλαγών. Παραδείγματα αυτής της κατηγορίας περιλαμβάνουν βάσεις δεδομένων για αεροπορικές εταιρείες η για μεγάλους οργανισμούς. Το πρόβλημα εδώ είναι η πολύ μεγάλη συχνότητα και το πολύ μεγάλο πλήθος στην εισαγωγή δεδομένων και στην ενημέρωση δεδομένων. Για παράδειγμα το πλήθος δεδομένων μπορεί να ανέρχεται σε αρκετά εκατομμύρια εγγράφων στη βάση δεδομένων ενώ το πλήθος ταυτόχρονων συναλλαγών μετριέται σε αρκετές εκατοντάδες. Προφανώς ο χρόνος απόκρισης είναι αρκετά μεγάλος και μετριέται σε κάποια λεπτά της ώρας. Κατάλληλο σύστημα για αυτές τις περιπτώσεις είναι ο SQL server.
Εφαρμογές data warehouse
Άλλη μία περίπτωση στην οποία δεν ενδείκνυται η χρήση της mysql είναι η ανάλυση μεγάλων όγκων δεδομένων στα λεγόμενα συστήματα data warehouse. Το πρόβλημα εδώ είναι ο τεράστιος όγκος δεδομένων ο οποίος συνήθως μετριέται σε πολλές εκατοντάδες εκατομμύρια εγγραφών στη βάση δεδομένων. Εδώ ο χρόνος απόκρισης είναι πάρα πολύ μεγάλος και μετριέται σε αρκετές ώρες. Δηλαδή για να δημιουργηθεί μία αναφορά απαιτούνται κάποιες ώρες. Αναφέρομαι εδώ αυτές τις περιπτώσεις ωστε να αποκτήσει μία εικόνα ο εκπαιδευόμενος σχετικά με το πότε μπορεί να χρησιμοποιήσει τη mysql και πότε όχι.
Περιεχόμενα σεμιναρίου mysql
Σε ένα σεμινάριο mysql ο εκπαιδευόμενος πρώτα από όλα πρέπει να κατανοήσει τις βασικές αρχές σχεδίασης βάσης δεδομένων. Τι είναι οι πίνακες, πώς θα επιλέξουμε τους τύπους πεδίων και πώς θα επιλέξουμε κύριο κλειδί. Με ποιο τρόπο μπορούμε να χρησιμοποιήσουμε τα κύρια και τα βοηθητικά κλειδιά ώστε να κάνουμε συσχέτιση μεταξύ των πινάκων. τι είναι η κανονικοποίηση βάσεις δεδομένων και με ποια διαδικασία μπορούμε να φέρουμε τη βάση στην πρώτη στη δεύτερη στην τρίτη κανονική μορφή. Στη συνέχεια καλό θα είναι ο εκπαιδευόμενος να αποκτήσει εμπειρία δημιουργώντας βάσεις δεδομένων οι οποίες να ικανοποιούν συνηθισμένες απαιτήσεις της αγοράς. Εδώ θα κληθεί να διαβάσει προσεκτικά τις απαιτήσεις του υποτιθέμενου πελάτη και να κρίνει ποιοι είναι οι κατάλληλοι τύποι για τις συνδέσεις πινάκων σε κάθε περίσταση. Στη συνέχεια ο εκπαιδευόμενος θα πρέπει να δημιουργήσει τις συνδέσεις πινάκων που αποφάσισε, δηλαδή είτε ένα προς ένα, είτε ένα προς πολλά ή πολλά προς πολλά. Ο εκπαιδευτής ενηλίκων θα πρέπει να επιμείνει ώστε ο εκπαιδευόμενος να κάνει σωστά την κανονικοποίηση της βάσης που σχεδίασε. Εάν υπάρχει ο χρόνος τότε ενδεχομένως να τεθούν ζητήματα βελτιστοποίησης της βάσης δεδομένων ώστε να μεγιστοποιηθεί η απόδοση.