Όταν υπάρχει ανάγκη δημιουργίας βάσης δεδομένων στο διαδίκτυο τότε η 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:
Εδώ βρίσκεται ο κώδικας με τις εντολές SQL για τη δημιουργία της βάσης δεδομένων:
customers.sql
Ασκήσεις 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
-
Προσθήκη της στήλης id και ταυτόχρονη δήλωσή της ως PRIMARY KEY
ALTER TABLE customers100 ADD COLUMN id INT NOT NULL AUTO_INCREMENT PRIMARY KEY;
-
Εισαγωγή δεδομένων: Χρήση της εντολής INSERT.
INSERT INTO customers (CustomersName, CustomersLastName, YearBirth, City)
VALUES ('Γιάννης', 'Παναγιώτου', 1990, 'Θεσσαλονίκη');
-
Ενημέρωση δεδομένων: Πώς μπορούμε να τροποποιήσουμε εγγραφές.
UPDATE customers SET City = 'Αθήνα' WHERE CustomersLastName = 'Παπαδόπουλος';
-
Διαγραφή δεδομένων: Πώς να διαγράφουμε εγγραφές.
DELETE FROM customers WHERE CustomersLastName = 'Νικολάου';
-
Περιορισμός αριθμού αποτελεσμάτων: Χρήση του LIMIT για εμφάνιση συγκεκριμένου αριθμού εγγραφών.
SELECT * FROM customers LIMIT 10;
-
Τελεστές σύγκρισης: Χρήση επιπλέον τελεστών σύγκρισης (BETWEEN, IN, NOT IN).
SELECT * FROM customers WHERE YearBirth BETWEEN 1980 AND 1990;
-
Χρήση του IS NULL ή IS NOT NULL: Για την αναζήτηση κενών τιμών σε κάποια στήλη.
SELECT * FROM customers WHERE City IS NULL;
-
Χρήση του CASE: Για πιο σύνθετες λογικές επιλογές σε εντολές.
SELECT CustomersName,
CASE
WHEN YearBirth > 2000 THEN 'Νεότερος από 20'
ELSE 'Παλαιότερος από 20'
END AS AgeCategory
FROM customers;
-
Παρουσίαση αριθμού χωρίς δεκαδικά ψηφία
SELECT ROUND(AVG(YearBirth), 0) AS field2 FROM customers;
ή εναλλακτικά:
SELECT CAST(AVG(YearBirth) AS INT) AS field2 FROM customers;
-
Παρουσίαση αριθμού με δυο δεκαδικά ψηφία
SELECT ROUND(AVG(YearBirth), 2) AS field2 FROM customers;
-
Παρουσίαση αριθμού με δυο δεκαδικά ψηφία στρογγυλεμένα προς τα πάνω
SELECT CEILING(AVG(YearBirth) * 100) / 100 AS field2 FROM customers;
-
Παρουσίαση αριθμού με δυο δεκαδικά ψηφία στρογγυλεμένα προς τα κάτω
SELECT FLOOR(AVG(YearBirth) * 100) / 100 AS field2 FROM customers;
-
Παρουσίαση ημερομηνίας σε μορφή dd/mm/yy:
SELECT DATE_FORMAT(DateBirth, '%d/%m/%y') AS field2 FROM customers;
-
Παρουσίαση ημερομηνίας σε μορφή mm/dd/yy:
SELECT DATE_FORMAT(DateBirth, '%m/%d/%y') AS field2 FROM customers;
-
Παρουσίαση ημερομηνίας σε μορφή d/m/yyyy:
SELECT DATE_FORMAT(DateBirth, '%e/%c/%Y') AS field2 FROM customers;
-
Παρουσίαση ημερομηνίας ως ημερομηνία Ελληνικού τύπου (π.χ. dd/mm/yyyy):
SELECT DATE_FORMAT(DateBirth, '%d/%m/%Y') AS field2 FROM customers;
-
Παρουσίαση ημερομηνίας ως ημερομηνία Αγγλικού τύπου (π.χ. dd/mm/yyyy):
Στο Ηνωμένο Βασίλειο χρησιμοποιείται η μορφή dd/mm/yyyy, που είναι η ίδια με την Ελληνική.
Αντίθετα στις Ηνωμένες Πολιτεέις Αμερικής μπαίνει πρώτα ο μήνας και μετά η ημέρα.
SELECT DATE_FORMAT(DateBirth, '%d/%m/%Y') AS field2 FROM customers;
-
Παρουσίαση του αποτελέσματος ως ημερομηνία Γερμανικού τύπου (π.χ. dd.mm.yyyy):
Στη Γερμανία, οι ημερομηνίες παρουσιάζονται συνήθως σε μορφή dd.mm.yyyy:
SELECT DATE_FORMAT(DateBirth, '%d.%m.%Y') AS field2 FROM customers;
-
UPPER(): Μετατρέπει το κείμενο σε κεφαλαία γράμματα.
SELECT UPPER(column_name) FROM table_name;
-
LOWER(): Μετατρέπει το κείμενο σε μικρά γράμματα.
SELECT LOWER(column_name) FROM table_name;
-
CONCAT(): Συγχωνεύει πολλαπλές στήλες ή τιμές σε μία.
SELECT CONCAT(first_name, ' ', last_name) FROM customers;
-
SUBSTRING(): Επιστρέφει ένα τμήμα του κειμένου.
SELECT SUBSTRING(column_name, 1, 5) FROM table_name;
-
TRIM(): Αφαιρεί τα κενά διαστήματα από την αρχή και το τέλος του κειμένου.
SELECT TRIM(column_name) FROM table_name;
-
LENGTH(): Επιστρέφει το μήκος του κειμένου σε χαρακτήρες.
SELECT LENGTH(column_name) FROM table_name;
-
ROUND(): Στρογγυλοποιεί έναν αριθμό σε συγκεκριμένα δεκαδικά ψηφία.
SELECT ROUND(price, 2) FROM products;
-
FORMAT(): Μορφοποιεί έναν αριθμό με κόμμα και δεκαδικά ψηφία.
SELECT FORMAT(price, 2) FROM products;
-
CEIL(): Στρογγυλοποιεί προς τα πάνω στον πλησιέστερο ακέραιο.
SELECT CEIL(value) FROM table_name;
-
FLOOR(): Στρογγυλοποιεί προς τα κάτω στον πλησιέστερο ακέραιο.
SELECT FLOOR(value) FROM table_name;
-
ABS(): Επιστρέφει την απόλυτη τιμή ενός αριθμού.
SELECT ABS(column_name) FROM table_name;
-
CAST(): Μετατρέπει έναν τύπο δεδομένων σε άλλον.
SELECT CAST(column_name AS DECIMAL(10,2)) FROM table_name;
-
CONVERT(): Μετατρέπει έναν τύπο δεδομένων σε άλλον.
SELECT CONVERT(column_name, DECIMAL(10,2)) FROM table_name;
-
TIME_FORMAT(): Μορφοποιεί την ώρα.
SELECT TIME_FORMAT(time_column, '%H:%i') FROM table_name;
-
DATEDIFF(): Υπολογίζει τη διαφορά μεταξύ δύο ημερομηνιών.
SELECT DATEDIFF(NOW(), DateBirth) FROM customers;
-
TIMESTAMPDIFF(): Υπολογίζει τη διαφορά μεταξύ δύο στιγμιοτύπων (timestamp).
SELECT TIMESTAMPDIFF(YEAR, DateBirth, NOW()) FROM customers;
Εδώ βρίσκονται οι εντολές mysql που θα χρησιμοποιήσουμε στο δεύτερο μάθημα
Απλή εντολή SQL:
Πλήρης εντολή SQL:
Εντολή SQL ομαδοποίησης:
Εάν θέλετε να κάνετε εξάσκηση στο δικό σας υπολογιστή τότε θα πρέπει να εγκαταστήσετε το xampp. Στον ακόλουθο σύνδεσμο δείχνουμε βήμα προς βημα τη διαδικασία για την εγκατάσταση του xampp
Τα πρώτα βήματα στο phpMyAdmin
Αρχική οθόνη του phpMyAdmin
Εδώ βλέπουμε την αρχική οθόνη του php my admin στην οποία μπορούμε να δημιουργήσουμε πίνακα στη βάση δεδομένων:
Στα αριστερά (1) βλέπουμε τη βάση δεδομένων και από κάτω τους πίνακες που έχει η βάση δεδομένων.
Πάνω-πάνω βλέπουμε πάλι τη βάση δεδομένων (2).
Υπάρχει ένα μενού (3) στο οποίο από την επιλογή ‘δομή’ (4) μπορούμε να δημιουργήσουμε νέο πίνακα στη βάση δεδομένων.
Για να δημιουργήσουμε πίνακα θα πρέπει να δώσουμε το όνομα (5) του πίνακα και το πλήθος (6) των στηλών του πίνακα.
Δημιουργία πίνακα της mysql με το phpMyAdmin
Στη συνέχεια δημιουργούμε τον πίνακα:
Φτιάχνουμε δύο πεδία στον πίνακα: id (1), name (2).
Το πρώτο είναι αριθμητικό πεδίο (3) ενώ το δεύτερο είναι πεδίο κειμένου (4).
Το αριθμητικό πεδίο είναι το κλειδί του πίνακα (5).
Όσον αφορά το πεδίο κειμένου είναι σημαντικό να επιλέξουμε την κατάλληλη κωδικοποίηση (6) ώστε να μην έχει πρόβλημα με την παρουσίαση των ελληνικών χαρακτήρων.
Διαχείριση πίνακα της mysql με το phpMyAdmin
Εδώ βλέπουμε τον πίνακα από δημιουργήθηκε(1):
Στη συνέχεια μπορούμε να κάνουμε προσθήκη νέας εγγραφής (2), αναζήτηση στις αποθηκευμένες εγγραφές (3) και παρουσίαση όλων των εγγραφών (4).
Επίσης μπορούμε να κάνουμε εισαγωγή (5) ολόκληρης βάσης δεδομένων μέσω αρχείου sql.
Ασκήσεις mysql βάσεις δεδομένων στη δημιουργία σχέσεων 1:Ν
1η άσκηση βάσεις δεδομένων στη δημιουργία σχέσεων 1:Ν
Δημιουργία Βάσης Δεδομένων για Σχολή Οδηγών:
- Κάθε μαθητής έχει ονοματεπώνυμο, ηλικία, αριθμό διπλώματος.
- Κάθε εκπαιδευτής έχει ονοματεπώνυμο, έτη εμπειρίας, αριθμό διπλώματος εκπαιδευτή.
- Κάθε μαθητής συνδέεται με έναν εκπαιδευτή, αλλά ένας εκπαιδευτής μπορεί να εκπαιδεύσει πολλούς μαθητές.
2η άσκηση βάσεις δεδομένων στη δημιουργία σχέσεων 1:Ν
Δημιουργία Βάσης Δεδομένων για Εστιατόριο:
- Κάθε γεύμα έχει όνομα, τιμή, κατηγορία (ορεκτικό, κυρίως πιάτο, επιδόρπιο).
- Κάθε σεφ έχει ονοματεπώνυμο, ειδικότητα, έτη εμπειρίας.
- Κάθε γεύμα παρασκευάζεται από έναν σεφ, αλλά ένας σεφ μπορεί να παρασκευάζει πολλά γεύματα.
3η άσκηση βάσεις δεδομένων στη δημιουργία σχέσεων 1:Ν
Δημιουργία Βάσης Δεδομένων για Κλινική Ζώων:
- Κάθε ζώο έχει όνομα, είδος, ηλικία.
- Κάθε κτηνίατρος έχει ονοματεπώνυμο, ειδικότητα, αριθμό αδείας.
- Κάθε ζώο εξετάζεται από έναν κτηνίατρο, αλλά ένας κτηνίατρος μπορεί να εξετάζει πολλά ζώα.
4η άσκηση βάσεις δεδομένων στη δημιουργία σχέσεων 1:Ν
Δημιουργία Βάσης Δεδομένων για Πανεπιστήμιο:
- Κάθε φοιτητής έχει ονοματεπώνυμο, αριθμό μητρώου, έτος εισαγωγής.
- Κάθε καθηγητής έχει ονοματεπώνυμο, ειδικότητα, τίτλο (π.χ. Καθηγητής, Επίκουρος).
- Κάθε φοιτητής έχει έναν επιβλέποντα καθηγητή, αλλά ένας καθηγητής μπορεί να είναι επιβλέπων πολλών φοιτητών.
5η άσκηση βάσεις δεδομένων στη δημιουργία σχέσεων 1:Ν
Δημιουργία Βάσης Δεδομένων για Ποδόσφαιρο:
- Κάθε παίκτης έχει ονοματεπώνυμο, ηλικία, θέση στο γήπεδο.
- Κάθε ομάδα έχει όνομα, έδρα, έτος ίδρυσης.
- Κάθε παίκτης ανήκει σε μία ομάδα, αλλά μία ομάδα μπορεί να έχει πολλούς παίκτες.
6η άσκηση βάσεις δεδομένων στη δημιουργία σχέσεων 1:Ν
Να δημιουργηθεί βάση δεδομένων για ενοικιάσεις αυτοκινήτων:
- Κάθε αυτοκίνητο έχει αριθμό κυκλοφορίας, μάρκα, μοντέλο, έτος κατασκευής.
- Κάθε πελάτης έχει ονοματεπώνυμο, διεύθυνση, αριθμό τηλεφώνου.
- Κάθε αυτοκίνητο μπορεί να ενοικιαστεί από έναν πελάτη κάθε φορά, αλλά ένας πελάτης μπορεί να έχει ενοικιάσει πολλά αυτοκίνητα σε διαφορετικές χρονικές στιγμές.
7η άσκηση βάσεις δεδομένων στη δημιουργία σχέσεων 1:Ν
Να δημιουργηθεί βάση δεδομένων για πανεπιστημιακές εργασίες:
- Κάθε εργασία έχει τίτλο, θέμα, ημερομηνία παράδοσης.
- Κάθε φοιτητής έχει όνομα, επώνυμο, αριθμό μητρώου.
- Κάθε εργασία εκπονείται από έναν φοιτητή, αλλά ένας φοιτητής μπορεί να έχει αναλάβει πολλές εργασίες.
8η άσκηση βάσεις δεδομένων στη δημιουργία σχέσεων 1:Ν
Να δημιουργηθεί βάση δεδομένων για κλινικές ιατρικής:
- Κάθε ραντεβού έχει ημερομηνία, ώρα, περιγραφή προβλήματος.
- Κάθε γιατρός έχει ονοματεπώνυμο, ειδικότητα, χρόνια εμπειρίας.
- Κάθε ραντεβού είναι με έναν γιατρό, αλλά ένας γιατρός μπορεί να έχει πολλά ραντεβού.
9η άσκηση βάσεις δεδομένων στη δημιουργία σχέσεων 1:Ν
Να δημιουργηθεί βάση δεδομένων για προμηθευτές και προϊόντα:
- Κάθε προϊόν έχει όνομα, περιγραφή, κατηγορία.
- Κάθε προμηθευτής έχει όνομα, διεύθυνση, τηλέφωνο.
- Κάθε προϊόν παρέχεται από έναν προμηθευτή, αλλά ένας προμηθευτής μπορεί να παρέχει πολλά προϊόντα.
10η άσκηση βάσεις δεδομένων στη δημιουργία σχέσεων 1:Ν
Να δημιουργηθεί βάση δεδομένων για μαθήματα και καθηγητές:
- Κάθε μάθημα έχει τίτλο, κωδικό, αριθμό διδακτικών ωρών.
- Κάθε καθηγητής έχει ονοματεπώνυμο, ειδικότητα, διδακτική εμπειρία.
- Κάθε μάθημα διδάσκεται από έναν καθηγητή, αλλά ένας καθηγητής μπορεί να διδάσκει πολλά μαθήματα.
Ασκήσεις δημιουργίας βάσης δεδομένων
Ακολουθούν απλες ασκήσεις για τη δημιουργία τυπικών βάσεων δεδομένων που χρησιμοποιούνται σε πολλές εφαρμογές:
Πρώτη άσκηση στις βάσεις δεδομένων:
Να δημιουργηθεί βάση δεδομένων για εκδοτικό οίκο:
- Κάθε βιβλίο έχει τίτλο, πλήθος σελίδων, τύπο εξωφύλλου, συγγραφέα.
- Κάθε συγγραφέας έχει ονοματεπώνυμο, τίτλο, σύντομο βιογραφικό.
- Κάθε βιβλίο έχει ένα συγγραφέα, αλλά ένας συγγραφέας μπορεί να έχει γράψει πολλά βιβλία.
Δεύτερη άσκηση στις βάσεις δεδομένων:
Να βελτιωθεί η βάση δεδομένων για τον εκδοτικό οίκο:
- Κάθε βιβλίο έχει τίτλο, πλήθος σελίδων, τύπο εξωφύλλου, συγγραφέα.
- Κάθε συγγραφέας έχει ονοματεπώνυμο, τίτλο, σύντομο βιογραφικό.
- Κάθε βιβλίο μπορεί να έχει πολλούς συγγραφείς, και κάθε συγγραφέας μπορεί να έχει γράψει πολλά βιβλία.
Τρίτη άσκηση στις βάσεις δεδομένων:
Να δημιουργηθεί βάση δεδομένων για πωλήσεις:
- Κάθε προϊόν έχει όνομα, τιμή, μέγεθος, χρώμα.
- Κάθε πωλητής έχει ονοματεπώνυμο, τίτλο, σύντομο βιογραφικό.
- Κάθε προϊόν έχει ένα πωλητή, αλλά ένας πωλητής μπορεί να έχει πουλήσει πολλά προϊόντα.
Τέταρτη άσκηση στις βάσεις δεδομένων:
Να βελτιωθεί η βάση δεδομένων για πωλήσεις:
- Κάθε προϊόν έχει όνομα, τιμή, μέγεθος, χρώμα.
- Κάθε πωλητής έχει ονοματεπώνυμο, τίτλο, σύντομο βιογραφικό.
- Κάθε προϊόν μπορεί να έχει πολλούς πωλητές, ενώ κάθε πωλητής μπορεί να έχει πουλήσει πολλά προϊόντα.
Πέμπτη άσκηση στις βάσεις δεδομένων:
Να δημιουργηθεί βάση δεδομένων για ηλεκτρονικό κατάστημα:
- Κάθε προϊόν έχει όνομα, τιμή, μέγεθος, χρώμα.
- Κάθε πελάτης έχει ονοματεπώνυμο, διεύθυνση, ταχυδρομικό κώδικα, περιοχή, φύλο.
- Κάθε παραγγελία περιλαμβάνει πελάτη, προϊόν, ποσότητα και αριθμό παραγγελίας.
Έκτη άσκηση στις βάσεις δεδομένων:
Έχουμε κομμωτήριο το οποίο προμηθεύεται βαφές, σαμπουάν και καλλυντικά.
Προμηθεύεται από τρεις εταιρείες: Korres, wella και kerastase.
Θέλουμε να δημιουργήσουμε βάση δεδομένων η οποία να επιτρέπει:
- Να υπάρχει αποθήκη με απόθεμα για το κάθε προϊόν.
- Να βλέπουμε σε ποια προϊόντα μειώθηκε πολύ το απόθεμα.
- Κάθε φορά που πωλείται προϊόν να καταγράφεται η πώληση και να αφαιρείται από το απόθεμα.
- Κάθε Χριστούγεννα να στέλνουμε προσφορές στους πελάτες μέσω sms και email.
- Κάθε φορά που μας επισκέπτεται ο υπάλληλος του προμηθευτή να βλέπουμε ποια προϊόντα χρειαζόμαστε (μικρό απόθεμα).
- Κάθε εβδομάδα να βλέπουμε ποιοί πελάτες έχουν γενέθλια ή ονομαστική εορτή και να τους στέλνουμε χρόνια πολλά.
- Να ξέρουμε ποιος προμηθευτής πουλάει περισσότερο.
- Να ξέρουμε αν οι περισσότερες πωλήσεις είναι σε βαφές, σαμπουάν ή καλλυντικά.
Ασκήσεις SQL
Στη συνέχεια ακολουθούν ασκήσεις SQL τις οποίες μπορείτε να εκτελέσετε στον υπολογιστή σας με το xampp και το phpmyadmin. Περιλαμβάνονται οι εντολές δημιουργίας των πινάκων στις βάσεις δεδομένων (create) καθώς και οι εντολές SQL για την καταχώρηση των δεδομένων (insert). Εδώ θα βείτε τις υπόλοιπες ασκήσεις για τα μαθήματα sql.
Κατασκευή web εφαρμογής
Οι web εφαρμογές ή αλλιώς διαδικτυακές εφαρμογές είναι λογισμικό διαχείρισης βάσης δεδομένων που εκτελούνται στο διαδίκτυο. Η σημαντικότερη γνώση για να δημιουργήσουμε μία web εφαρμογή είναι ικανοποιητική χρήση της γλώσσας sql. Μία διαδικτυακή εφαρμογή βάσεις δεδομένων περιλαμβάνει πολλά αρχεία προγραμματισμού τα οποία συνδέονται με τη βάση δεδομένων και παρουσιάζουν τα αποτελέσματα αναζήτησης. Επίσης περιλαμβάνει αρχεία εισαγωγής επεξεργασίας και διαγραφής δεδομένων από τη βάση. Όταν αποκτήσουμε ικανοποιητικές γνώσεις mysql τότε το επόμενο βήμα είναι να κάνουμε μία δοκιμαστική κατασκευή web εφαρμογής.
Ενδεικτικές εφαρμογές βάσης δεδομένων 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 στη δημιουργία παιχνιδιών
Η mysql είναι μία από τις βάσεις δεδομένων που χρησιμοποιούνται αρκετά συχνά στην κατασκευή παιχνιδιών. Υπάρχουν αρκετές πτυχές της διαδικασίας δημιουργίας παιχνιδιών που απαιτούν τη χρήση μιας ευέλικτης βάσης δεδομένων όπως είναι η mysql. Μπορείτε να χρησιμοποιήσετε τη mysql να αποθηκεύεται τις επιδόσεις των παικτών. Τα δεδομένα που μεταφέρονται στη βάση δεδομένων θα βρίσκονται εκεί ακόμα και αν ο παίκτης κλείσει το παιχνίδι ή αλλάξει συσκευή. Στον ακόλουθο σύνδεσμο μπορείτε να βρείτε αρκετά παραδείγματα που αφορούν τη χρήση της γλώσσας mysql στην κατασκευή παιχνιδιών.
Εφαρμογές που απαιτούν αναλυτική επεξεργασία συναλλαγών
Μία περίπτωση όπου είναι δύσκολο να χρησιμοποιηθεί η mysql είναι όταν απαιτείται αναλυτική επεξεργασία συναλλαγών. Παραδείγματα αυτής της κατηγορίας περιλαμβάνουν βάσεις δεδομένων για αεροπορικές εταιρείες η για μεγάλους οργανισμούς. Το πρόβλημα εδώ είναι η πολύ μεγάλη συχνότητα και το πολύ μεγάλο πλήθος στην εισαγωγή δεδομένων και στην ενημέρωση δεδομένων. Για παράδειγμα το πλήθος δεδομένων μπορεί να ανέρχεται σε αρκετά εκατομμύρια εγγράφων στη βάση δεδομένων ενώ το πλήθος ταυτόχρονων συναλλαγών μετριέται σε αρκετές εκατοντάδες. Προφανώς ο χρόνος απόκρισης είναι αρκετά μεγάλος και μετριέται σε κάποια λεπτά της ώρας. Κατάλληλο σύστημα για αυτές τις περιπτώσεις είναι ο SQL server.
Εφαρμογές data warehouse
Άλλη μία περίπτωση στην οποία δεν ενδείκνυται η χρήση της mysql είναι η ανάλυση μεγάλων όγκων δεδομένων στα λεγόμενα συστήματα data warehouse. Το πρόβλημα εδώ είναι ο τεράστιος όγκος δεδομένων ο οποίος συνήθως μετριέται σε πολλές εκατοντάδες εκατομμύρια εγγραφών στη βάση δεδομένων. Εδώ ο χρόνος απόκρισης είναι πάρα πολύ μεγάλος και μετριέται σε αρκετές ώρες. Δηλαδή για να δημιουργηθεί μία αναφορά απαιτούνται κάποιες ώρες. Αναφέρομαι εδώ αυτές τις περιπτώσεις ωστε να αποκτήσει μία εικόνα ο εκπαιδευόμενος σχετικά με το πότε μπορεί να χρησιμοποιήσει τη mysql και πότε όχι.
Περιεχόμενα σεμιναρίου mysql
Σε ένα σεμινάριο mysql ο εκπαιδευόμενος πρώτα από όλα πρέπει να κατανοήσει τις βασικές αρχές σχεδίασης βάσης δεδομένων. Τι είναι οι πίνακες, πώς θα επιλέξουμε τους τύπους πεδίων και πώς θα επιλέξουμε κύριο κλειδί. Με ποιο τρόπο μπορούμε να χρησιμοποιήσουμε τα κύρια και τα βοηθητικά κλειδιά ώστε να κάνουμε συσχέτιση μεταξύ των πινάκων. τι είναι η κανονικοποίηση βάσεις δεδομένων και με ποια διαδικασία μπορούμε να φέρουμε τη βάση στην πρώτη στη δεύτερη στην τρίτη κανονική μορφή. Στη συνέχεια καλό θα είναι ο εκπαιδευόμενος να αποκτήσει εμπειρία δημιουργώντας βάσεις δεδομένων οι οποίες να ικανοποιούν συνηθισμένες απαιτήσεις της αγοράς. Εδώ θα κληθεί να διαβάσει προσεκτικά τις απαιτήσεις του υποτιθέμενου πελάτη και να κρίνει ποιοι είναι οι κατάλληλοι τύποι για τις συνδέσεις πινάκων σε κάθε περίσταση. Στη συνέχεια ο εκπαιδευόμενος θα πρέπει να δημιουργήσει τις συνδέσεις πινάκων που αποφάσισε, δηλαδή είτε ένα προς ένα, είτε ένα προς πολλά ή πολλά προς πολλά. Ο εκπαιδευτής ενηλίκων θα πρέπει να επιμείνει ώστε ο εκπαιδευόμενος να κάνει σωστά την κανονικοποίηση της βάσης που σχεδίασε. Εάν υπάρχει ο χρόνος τότε ενδεχομένως να τεθούν ζητήματα βελτιστοποίησης της βάσης δεδομένων ώστε να μεγιστοποιηθεί η απόδοση.