Στα μαθήματα SQL μαθαίνουμε να χρησιμοποιούμε τςι εντολές της γλώσσας SQL. Έχουν προηγηθεί θεωρητικά μαθήματα στα οποία διδάχθηκαν οι βασικές αρχές βάσεων δεδομένων. Τώρα ερχόμαστε να χρησιμοποιήσουμε τις θεωρητικές γνώσεις με πρακτικό τρόπο εκτελώντας τις εντολές που υπάρχουν στις ασκήσεις. Ο καλύτερος τρόπος για να κατανοήσετε τη θεωρία και να εξοικειωθείτε με τη γλώσσα SQL είναι να εκτελέσετε μόνοι σας τις εντολές μια προς μια.
Τα μαθήματα SQL περιλαμβάνουν ασκήσεις οι οποίες μας βοηθούν να χρησιμοποιήσουμε τη γλώσσα.
Έχουμε δημιουργήσει ήση τις εντολές create sql και insert sql που απαιτούνται για τη δημιουργία των βάσεων δεδομένων που χρησιμοποιούμε στα παραδείγματα. Όλα τα αρχεία SQL βρίσκονται σε ένα αρχείο zip.
Μαθήματα MYSQL
Πριν προχωρήσετε στα μαθήματα SQL προτείνουμε να κάνετε εξάσκηση με τις ασκήσεις που έχουμε δημοσιεύσει στα μαθήματα MYSQL. Στην ενότητα των μαθημάτων MYSQL μπορείτε να κάνετε εξάσκηση χωρίς να απαιτείται δημιουργία βάσης δεδομένων. Οι ασκήσεις mysql μπορούν να εκτελεστούν σε βάση δεδομένων που έχουμε ήδη δημοσιεύσει στο διαδίκτυο. Μπορείτε να εκτελέσετε τις εντολές mysql μέσω σελίδας php που έχουμε δημιουργήσει για αυτό το σκοπό. Εδώ βρίσκονται οι ασκήσεις και τα μαθήματα MYSQL.
Εντολή SQL που διαβάζει δεδομένα από πολλούς πίνακες:
Ασκήσεις SQL
Δημιουργήσαμε ασκήσεις SQL με τις οποίες μπορείτε να κάνετε εξάσκηση. Δίνεται η δυνατότητα να χρησιμοποιήσετε αυτά που μάθατε στο μάθημα SQL τοποθετώντας τη βάση δεδομένων σε δικό σας υπολογιστή και ετελώντας μια προς μια τις εντολές SQL.
Πρώτη άσκηση SQL (ταινίες)
Στην πρώτη άσκηση SQL ζητείται να δημιουργηθούν ερωτήματα SQL (sql queries) σε έναν πίνακα. Ο πίνακας περιέχει τίτλους ταινιών. Περιλαμβάνονται Ελληνικές και ξένες ταινίες. Δεν υπάρχει δεύτερος πίνακας συνεπώς δεν υπάρχει λόγος να χρησιμοποιήσουμε join (π.χ. inner join, left join, right join, full join κλπ.
Έχουμε δημιουργήσει ένα αρχείο SQL το οποίο μπορείτε να χρησιμοποιήσετε για να τοποθετήσετε τη βάση δεδομένων στο δικό σας υπολογιστή (π.χ. στο xampp) ή στο δικό σας hosting.
- Να εμφανίσετε τίτλο και έτος για όλες τις ταινίες της δεκαετίας του 1980:
ΑΠΑΝΤΗΣΗ:
select titlos, year from tainies where year > 1979 and year < 1990
-
Να εμφανίσετε τίτλο και έτος για όλες τις ταινίες της δεκαετίας του 1970:
ΑΠΑΝΤΗΣΗ:
select titlos, year from tainies where year > 1969 and year < 1980
-
Να εμφανίσετε τίτλο ταινιών που καταχώρησε ο Διονύσης:
ΑΠΑΝΤΗΣΗ:
select titlos from tainies where sinergatis = 'Dionysis'
-
Να εμφανίσετε τίτλο ταινιών που καταχώρησε η Εύα:
ΑΠΑΝΤΗΣΗ:
select titlos from tainies where sinergatis = 'Eva'
-
Να εμφανίσετε πλήθος ταινιών ανά έτος:
ΑΠΑΝΤΗΣΗ:
select year, count(*) from tainies group by year
-
Να βρείτε το πλήθος των ταινιών:
ΑΠΑΝΤΗΣΗ:
select count(*) as f1 from tainies
-
Να βρείτε το πλήθος των μοναδικών ταινιών:
ΑΠΑΝΤΗΣΗ:
select count(DISTINCT titlos) as f1 from tainies
-
Να βρείτε πόσες ταινίες είναι διπλές:
ΑΠΑΝΤΗΣΗ:
select (count(*) - count(DISTINCT titlos)) as f1 from tainies
-
Να εμφανίσετε τίτλο για τις ταινίες που ο τίτλος τους ξεκινά από "D":
ΑΠΑΝΤΗΣΗ:
select titlos from tainies where titlos like 'D%'
-
Να εμφανίσετε τίτλο για τις ταινίες που ο τίτλος έχει δυο ή περισσότερες λέξεις:
ΑΠΑΝΤΗΣΗ:
SELECT titlos FROM `tainies` WHERE titlos like '% %';
-
Να εμφανίσετε τίτλο για τις ταινίες που ο τίτλος έχει μια λέξη:
ΑΠΑΝΤΗΣΗ:
SELECT titlos FROM `tainies` WHERE not titlos like '% %';
-
Να εμφανίσετε τίτλο για τις ταινίες που ο τίτλος ξεκινά από A, B ή C:
ΑΠΑΝΤΗΣΗ:
SELECT titlos FROM `tainies` WHERE titlos like 'A%' or titlos LIKE 'B%' or titlos like 'c%';
-
Να εμφανίσετε τίτλο για τις ταινίες που ο τίτλος ξεκινά από A, B ή C ταξινομημένα αλφαβητικά:
ΑΠΑΝΤΗΣΗ:
SELECT titlos FROM `tainies` WHERE titlos like 'A%' or titlos LIKE 'B%' or titlos like 'c%' ORDER BY titlos;
-
Να εμφανίσετε πλήθος ταινιών ανά χώρα:
ΑΠΑΝΤΗΣΗ:
select country, count(*) from tainies group by country
-
Να εμφανίσετε τα ονόματα των συνεργατών:
ΑΠΑΝΤΗΣΗ:
SELECT DISTINCT sinergatis from tainies;
- Να εμφανίσετε το πλήθος ταινιών ανά συνεργάτη:
ΑΠΑΝΤΗΣΗ:
select sinergatis, count(*) from tainies group by sinergatis
-
Να βρείτε το πλήθος των συνεργατών:
ΑΠΑΝΤΗΣΗ:
SELECT count(DISTINCT sinergatis) from tainies;
-
Να βρείτε το πλήθος των μοναδικών ταινιών ανά έτος:
ΑΠΑΝΤΗΣΗ:
select year, count(DISTINCT titlos) from tainies group by year
-
Να εμφανίσετε το πλήθος των ταινιών ανά αρχικό γράμμα τίτλου:
ΑΠΑΝΤΗΣΗ:
select left(titlos,1) as f1, count(*) from tainies group by f1
-
Να εμφανίσετε τις ταινίες των οποίων ο τίτλος έχει λιγότερους από 10 χαρακτήρες:
ΑΠΑΝΤΗΣΗ:
SELECT titlos, char_length(titlos) as f1 FROM `tainies` having f1 < 10;
Δεύτερη άσκηση SQL (συγγραφείς και βιβλία)
Στη δεύτερη άσκηση SQL μαθαίνουμε τη σύνδεση μεταξύ πινάκων. Η άσκηση αφορά συγγραφείς και βιβλία. Εφαρμόζουμε όσα μάαθαμε στα μαθήματα SQL για τη χρήση πρωτεύοντος και ξένου κλειδιού στη σύνδεση μεταξύ πινάκων.
Προτείνουμε να χρησιμοποιήσετε το αρχείο SQL που βρίσκεται στο αρχείο zip για να δημιουργήσετε αντίγραφο της βάσης δεοδμένων στο δικό σας υπολογιστή. Αυτό σας δίνει τη δυνατότητα να εκτελέσετε μόνοι σας μια προς μια τις εντολές και να κάνετε εξάσκηση για να εμπεδώσετε όσα μάθατε στα μαθήματα SQL.
- Να εμφανίσετε τίτλο και συγγραφέα για όλα τα βιβλία:
ΑΠΑΝΤΗΣΗ:
SELECT author.full_name, book.title FROM book inner join author on author.author_id = book.author;
-
Να εμφανίσετε τίτλο και συγγραφέα για όλα τα βιβλία με μαλακό εξώφυλλο:
ΑΠΑΝΤΗΣΗ:
SELECT author.full_name, book.title FROM book inner join author on author.author_id = book.author where book.book_cover="softcover";
-
Να βρείτε το πλήθος των βιβλίων:
ΑΠΑΝΤΗΣΗ:
select count(*) from book;
-
Να βρείτε το πλήθος των συγγραφέων:
ΑΠΑΝΤΗΣΗ:
select count(*) from author;
-
Να βρείτε το μέσο όρο του πλήθους σελίδων:
ΑΠΑΝΤΗΣΗ:
select avg(num_of_pages) from book;
-
Να βρείτε τους τίτλους βιβλίων με λίγες σελίδες (δηλαδή κάτω από το μέσο όρο του πλήθους σελίδων):
ΑΠΑΝΤΗΣΗ:
select title, num_of_pages from book where num_of_pages < (select avg(num_of_pages) from book);
-
Να βρείτε τους τίτλους βιβλίων με πολύ λίγες σελίδες (δηλαδή κάτω από το μισό του μέσου όρου του πλήθους σελίδων):
ΑΠΑΝΤΗΣΗ:
select title, num_of_pages from book where num_of_pages < (select avg(num_of_pages) from book) / 2;
-
Να βρείτε τους τίτλους βιβλίων με πολλές σελίδες (δηλαδή πάνω από το μέσο όρο του πλήθους σελίδων):
ΑΠΑΝΤΗΣΗ:
select title, num_of_pages from book where num_of_pages > (select avg(num_of_pages) from book);
-
Να βρείτε τους τίτλους βιβλίων με πάρα πολλές σελίδες (δηλαδή πάνω από τα 2/3 του μέσου όρου του πλήθους σελίδων):
ΑΠΑΝΤΗΣΗ:
select title, num_of_pages from book where num_of_pages > (select avg(num_of_pages) from book) * 2 / 3;
-
Να εμφανίσετε τίτλο και πλήθος σελίδων για κάθε βιβλίο:
ΑΠΑΝΤΗΣΗ:
SELECT title, num_of_pages FROM `book`;
-
Να βρείτε το συνολικό πλήθος σελίδων των βιβλίων ενός συγγραφέα:
ΑΠΑΝΤΗΣΗ:
SELECT author.full_name, sum(book.num_of_pages) FROM book inner join author on author.author_id = book.author group by author.full_name;
-
Να βρείτε πόσες σελίδες έχει το μεγαλύτερο βιβλίο (δηλαδή αυτό με το μεγαλύτερο πλήθος σελίδων):
ΑΠΑΝΤΗΣΗ:
SELECT max(num_of_pages) FROM book;
-
Να βρείτε πόσες σελίδες έχει το μεγαλύτερο βιβλίο (δηλαδή αυτό με το μεγαλύτερο πλήθος σελίδων):
ΑΠΑΝΤΗΣΗ:
SELECT min(num_of_pages) FROM book;
-
Να βρείτε τον τίτλο του βιβλίου με τις περισσότερες σελίδες:
ΑΠΑΝΤΗΣΗ:
SELECT title FROM `book` WHERE num_of_pages = (SELECT max(num_of_pages) FROM book);
-
Να βρείτε τον τίτλο του βιβλίου με τις λιγότερες σελίδες:
ΑΠΑΝΤΗΣΗ:
SELECT title FROM `book` WHERE num_of_pages = (SELECT min(num_of_pages) FROM book);
-
Να βρείτε ποιος συγγραφέας έγραψε το βιβλίο με τις περισσότερες σελίδες:
ΑΠΑΝΤΗΣΗ:
SELECT author.full_name, book.title, book.num_of_pages FROM book inner join author on author.author_id = book.author where book.num_of_pages = (select max(num_of_pages) from book);
-
Να βρείτε ποιος συγγραφέας έγραψε το βιβλίο με τις λιγότερες σελίδες:
ΑΠΑΝΤΗΣΗ:
SELECT author.full_name, book.title, book.num_of_pages FROM book inner join author on author.author_id = book.author where book.num_of_pages = (select min(num_of_pages) from book);
-
Να βρείτε τα βιβλία τα οποία περιλαμβάνουν στον τίτλο τη λέξη "γάμος":
ΑΠΑΝΤΗΣΗ:
SELECT * FROM `book` WHERE `title` LIKE '%γάμος%'
-
Να βρείτε το πλήθος βιβλίων ανά συγγραφέα:
ΑΠΑΝΤΗΣΗ:
SELECT author.full_name, count(*) FROM book inner join author on author.author_id = book.author group by author.full_name;
-
Να βρείτε το άθροισμα σελίδων ανά συγγραφέα:
ΑΠΑΝΤΗΣΗ:
SELECT author.full_name, sum(book.num_of_pages) FROM book inner join author on author.author_id = book.author group by author.full_name;
-
Για κάθε συγγραφέα να βρείτε τον τίτλο βιβλίου με τις περισσότερες σελίδες:
ΑΠΑΝΤΗΣΗ:
SELECT
full_name,
author_id as A,
(select max(num_of_pages) from book where author = A) as B,
(select title from book where author = A and num_of_pages = B limit 1) as C
FROM `author`
HAVING B > 0;
- Για κάθε συγγραφέα να βρείτε τον τίτλο βιβλίου με τις λιγότερες σελίδες:
ΑΠΑΝΤΗΣΗ:
SELECT
full_name,
author_id as A,
(select min(num_of_pages) from book where author = A) as B,
(select title from book where author = A and num_of_pages = B limit 1) as C
FROM `author`
HAVING B > 0;
-
Να βρείτε το μέσο όρο του πλήθους σελίδων ανά συγγραφέα:
ΑΠΑΝΤΗΣΗ:
SELECT author.full_name, avg(book.num_of_pages) FROM book inner join author on author.author_id = book.author group by author.full_name;
-
Να εμφανίσετε τίτλο και πλήθος σελιδων για όλα τα βιβλία ενός συγκεκριμένου συγγραφέα:
ΑΠΑΝΤΗΣΗ:
SELECT author.full_name, book.title, book.num_of_pages FROM book inner join author on author.author_id = book.author;
-
Να βρείτε όλες τις γυναίκες συγγραφείς:
ΑΠΑΝΤΗΣΗ:
select full_name from author where title = 2;
-
Να βρείτε όλους τους άντρες συγγραφείς:
ΑΠΑΝΤΗΣΗ:
select full_name from author where title = 1;
-
Να βρείτε τους τίτλους βιβλίων που γράφτηκαν από γυναίκες:
ΑΠΑΝΤΗΣΗ:
SELECT author.full_name, book.title FROM book inner join author on author.author_id = book.author where author.title = 2;
-
Να εμφανίσετε τίτλο και όνομα συγγραφέα για τα βιβλία που ο τίτλος τους ξεκινά από "A":
ΑΠΑΝΤΗΣΗ:
select title from book where title like 'A%'
- Να εμφανίσετε τίτλο και όνομα συγγραφέα για τα βιβλία που ο τίτλος έχει δυο ή περισσότερες λέξεις:
ΑΠΑΝΤΗΣΗ:
SELECT title FROM `book` WHERE title like '% %';
- Να εμφανίσετε τίτλο και όνομα συγγραφέα για τα βιβλία που ο τίτλος έχει μια λέξη:
ΑΠΑΝΤΗΣΗ:
SELECT title FROM `book` WHERE not title like '% %';
- Να εμφανίσετε τίτλο και όνομα συγγραφέα για τα βιβλία που ο τίτλος ξεκινά από M, L ή W:
ΑΠΑΝΤΗΣΗ:
SELECT title FROM `book` WHERE title like 'M%' or title LIKE 'L%' or title like 'W%';
- Να εμφανίσετε τίτλο και όνομα συγγραφέα για τα βιβλία που ο τίτλος ξεκινά από M, L ή W ταξινομημένα αλφαβητικά:
ΑΠΑΝΤΗΣΗ:
SELECT title FROM `book` WHERE title like 'M%' or title LIKE 'L%' or title like 'W%' ORDER BY title;
- Δεν αναζητούμε πλέον "ΜΟΝΑΔΙΚΕΣ" (DISTINCT) εγγραφές. Γιατί νομίζετε οτι γίνεται αυτό:
ΑΠΑΝΤΗΣΗ:
Διότι έχουμε κάνει κανονικοποίηση της βάσης δεδομένων (σε κάποιο βαθμό) τοποθετώντας τα κοινά δεδομένα σε ξεχωριστούς πίνακες.
Τρίτη άσκηση SQL (πωλητές και προϊόντα)
Στην τρίτη άσκηση SQL έχουμε δημιουργήσει πίνακες με πωλητές και προϊόντα. Για να εκτελέσετε τις εντολές θα πρέπει να κάνετε δημιουργήσετε συνδέσεις μεταξύ των πινάκων με τρόπο που διδάχθηκε στα μαθήματα SQL.
Στο αρχείο zip βρίσκεται το αρχείο SQL για τη δημιουργία της βάσης δεδομένων.
- Ποιοί πωλητές έχουν γενέθλια το Μάϊο (5ος μήνας):
ΑΠΑΝΤΗΣΗ:
select politis.name,politis.genethlia from politis where MONTH(politis.genethlia)=05;
-
Πόσοι πωλητές έχουν γενέθλια το Μάϊο (5ος μήνας):
ΑΠΑΝΤΗΣΗ:
select count(*) from politis where MONTH(politis.genethlia)=05;
-
Πόσοι πωλητές έχουν γενέθλια στις αρχές του μήνα (πρώτες 7 ημέρες του μήνα):
ΑΠΑΝΤΗΣΗ:
select count(*) from politis where DAY(politis.genethlia)<07;
-
Ποιοί πωλητές έχουν γενέθλια στις αρχές του μήνα (πρώτες 7 ημέρες του μήνα):
ΑΠΑΝΤΗΣΗ:
select politis.name,politis.genethlia from politis where DAY(politis.genethlia)<07;
-
Πόσοι πωλητές έχουν γενέθλια στο τέλος του μήνα (τελευταίες 7 ημέρες του μήνα):
ΑΠΑΝΤΗΣΗ:
select count(*) from politis where DAY(politis.genethlia)>23;
-
Ποιοί πωλητές έχουν γενέθλια στο τέλος του μήνα (τελευταίες 7 ημέρες του μήνα):
ΑΠΑΝΤΗΣΗ:
select politis.name,politis.genethlia from politis where DAY(politis.genethlia)>23;
-
Ποιοί πωλητές έχουν γενέθλια στο τέλος του μήνα (τελευταίες 7 ημέρες του μήνα):
ΑΠΑΝΤΗΣΗ:
select politis.name, politis.genethlia from politis where day(politis.genethlia) BETWEEN 25 and 31;
-
Πόσοι πωλητές έχουν γενέθλια στην αρχή του έτους (πρώτους 5 μήνες του έτους):
ΑΠΑΝΤΗΣΗ:
select count(*) from politis where month(genethlia) BETWEEN 1 and 5;
-
Ποιοί πωλητές έχουν γενέθλια στην αρχή του έτους (πρώτους 5 μήνες του έτους):
ΑΠΑΝΤΗΣΗ:
select count(*) from politis where month(genethlia) BETWEEN 1 and 5;
Πόσοι πωλητές έχουν γενέθλια στο τέλος του έτους (τελευταίους 5 μήνες του έτους):
ΑΠΑΝΤΗΣΗ:
select count(*) from politis where month(genethlia) BETWEEN 8 and 12;
Ποιοί πωλητές έχουν γενέθλια στο τέλος του έτους (τελευταίους 5 μήνες του έτους):
ΑΠΑΝΤΗΣΗ:
select name from politis where month(genethlia) BETWEEN 8 and 12;
-
Να εμφανίσετε λίστα προϊόντων μαζί με το όνομα του πωλητή που πούλησε το κάθε προϊόν:
ΑΠΑΝΤΗΣΗ:
select proion.name, politis.name from politis inner join proion on proion.politis = politis.politis_id;
-
Να εμφανίσετε λίστα πωλητών και στη διπλανή στήλη τα προϊόντα που πούλησε ο κάθε πωλητής. Να γίνει ταξινόμηση αλφαφητικά ως προς όνομα πωλητή και μετά ως προς όνομα προϊόντος:
ΑΠΑΝΤΗΣΗ:
select politis.name, proion.name from politis inner join proion on proion.politis = politis.politis_id order by politis.name, proion.name;
-
Να εμφανίσετε τα ονόματα πωλητών ταξινομημένα ως προς ηλικία (π.χ. πρώτα όσοι γεννήθηκαν το 1980 και μετά όσοι γεννήθηκαν το 1990):
ΑΠΑΝΤΗΣΗ:
select name, genethlia from politis order by genethlia;
-
Να εμφανίσετε τα ονόματα πωλητών ταξινομημένα ως προς ημερομηνία γενεθλίων (π.χ. πρώτα όσοι γεννήθηκαν Ιανουάριο και μετά όσοι γεννήθηκαν το Μάρτιο):
ΑΠΑΝΤΗΣΗ:
select name, genethlia from politis order by month(genethlia), day(genethlia);
-
Να εμφανίσετε την ηλικία του νεώτερου πωλητή:
ΑΠΑΝΤΗΣΗ:
select max(genethlia) from politis
-
Να εμφανίσετε την ηλικία του γηραιότερου πωλητή:
ΑΠΑΝΤΗΣΗ:
select min(genethlia) from politis
-
Να εμφανίσετε το όνομα του νεώτερου πωλητή:
ΑΠΑΝΤΗΣΗ:
select name from politis where genethlia = (select max(genethlia) from politis)
-
Να εμφανίσετε το όνομα του γηραιότερου πωλητή:
ΑΠΑΝΤΗΣΗ:
select name from politis where genethlia = (select min(genethlia) from politis)
-
Να εμφανίσετε το πλήθος προϊόντων που πούλησε κάποιος συγκεκριμένος πωλητής (δίνεται το όνομά του: maria):
ΑΠΑΝΤΗΣΗ:
select count(*) from proion where politis = (select politis_id from politis where name = 'maria');
select count(*) from proion inner join politis on proion.politis = politis.politis_id where politis.name = 'maria'
-
Να εμφανίσετε τη συνολική τιμή προϊόντων που πούλησε κάποιος συγκεκριμένος πωλητής (δίνεται το όνομά του: maria):
ΑΠΑΝΤΗΣΗ:
select sum(proion.timi) from proion where politis = (select politis_id from politis where name = 'maria');
select sum(proion.timi) from proion inner join politis on proion.politis = politis.politis_id where politis.name = 'maria'
-
Να εμφανίσετε τη μέση τιμή προϊόντων που πούλησε κάποιος συγκεκριμένος πωλητής (δίνεται το όνομά του: maria):
ΑΠΑΝΤΗΣΗ:
select avg(proion.timi) from proion where politis = (select politis_id from politis where name = 'maria');
select avg(proion.timi) from proion inner join politis on proion.politis = politis.politis_id where politis.name = 'maria'
-
Να εμφανίσετε τα πρίόντα που πούλησε κάποιος συγκεκριμένος πωλητής (δίνεται το όνομά του: maria):
ΑΠΑΝΤΗΣΗ:
select name, timi from proion where politis = 1
-
Να εμφανίσετε λίστα: Πλήθος προϊόντων ανά πωλητή:
ΑΠΑΝΤΗΣΗ:
select politis.name, count(proion.timi) from proion inner join politis on proion.politis = politis.politis_id group by politis.name
-
Να εμφανίσετε λίστα: Συνολική τιμή προϊόντων ανά πωλητή:
ΑΠΑΝΤΗΣΗ:
select politis.name, sum(proion.timi) from proion inner join politis on proion.politis = politis.politis_id group by politis.name
-
Να εμφανίσετε λίστα: Μέση τιμή προϊόντων ανά πωλητή:
ΑΠΑΝΤΗΣΗ:
select politis.name, avg(proion.timi) from proion inner join politis on proion.politis = politis.politis_id group by politis.name
-
Να εμφανίσετε λίστα: Το ακριβότερο προϊόν ανά πωλητή (δηλαδή το ακριβότερο προϊόν που πούλησε κάθε πωλητής:
ΑΠΑΝΤΗΣΗ:
select politis.name, max(proion.timi) from proion inner join politis on proion.politis = politis.politis_id group by politis.name
-
Να εμφανίσετε λίστα: Το φθηνότερο προϊόν ανά πωλητή (δηλαδή το φθηνότερο προϊόν που πούλησε κάθε πωλητής:
ΑΠΑΝΤΗΣΗ:
select politis.name, min(proion.timi) from proion inner join politis on proion.politis = politis.politis_id group by politis.name
-
Να βρείτε την τιμή του ακριβότερου προϊόντος:
ΑΠΑΝΤΗΣΗ:
SELECT max(timi) from proion;
-
Να βρείτε το ακριβότερο προϊόν:
ΑΠΑΝΤΗΣΗ:
select name from proion where timi = (SELECT max(timi) from proion)
-
Να βρείτε το όνομα του πωλητή που πούλησε το ακριβότερο προϊόν:
ΑΠΑΝΤΗΣΗ:
select name from politis where politis_id = (select politis from proion where timi = (SELECT max(timi) from proion))
-
Επειδή η εταιρεία σκέφτεται να κάνει ένα δώρο γενεθλίων σε κάθε πωλητή,
θέλει να ξέρει το άθροισμα πωλήσεων (τιμής) των προϊόντων που πωλήθηκαν από πωλητές με μήνα γέννησης το Μάϊο:
ΑΠΑΝΤΗΣΗ:
SELECT sum(timi) FROM proion where politis in (select politis_id from politis where month(genethlia)=5);
Δημιουργία web εφαρμογής
Αφού θα αποκτήσετε άνεση στη γλώσσα sql εκτελώντας τα απλά παραδείγματα στη συνέχεια μπορείτε να προχωρήσετε στην κατασκευή διαδικτυακής εφαρμογής. Μπορείτε να χρησιμοποιήσετε οποιαδήποτε γλώσσα προγραμματισμού για να φτιάξετε web εφαρμογή η οποία εκτελείται στο διαδίκτυο και να παρέχει πρόσβαση στα δεδομένα της βάσης δεδομένων. Στο ακόλουθο παράδειγμα δείχνουμε πως γίνεται η δημιουργία web εφαρμογής χρησιμοποιώντας τη βάση δεδομένων mysql και τη γλώσσα php.
Εφαρμογές της γλώσσα sql στην κατασκευή παιχνιδιών
Μία πολύ συνηθισμένη χρήση της βάσης δεδομένων είναι στην κατασκευή παιχνιδιών. Κάποιες διαδικασίες που περιλαμβάνονται στη δημιουργία παιχνιδιών και απαιτούν βάσεις δεδομένων και χρήση της γλώσσας sql είναι η αποθήκευση του σκορ ή η αποθήκευση των αντικειμένων όταν κλείνουμε το παιχνίδι ώστε να τα βρούμε στην ίδια θέση ήταν το ανοίξουμε ξανά. Στην ιστοσελίδα μας περιλαμβάνονται μαθήματα κατασκευής παιχνιδιών με τη unity. Σε αυτά τα μαθήματα δημιουργίας παιχνιδιών υπάρχουν αρκετά παραδείγματα που δείχνουν τον τρόπο με τον οποίο χρησιμοποιούμε τη βάση δεδομένων στον προγραμματισμό παιχνιδιών.
Μαθήματα PHP
Η πρόσβαση σε βάση δεδομένων γίνεται συνήθως μέσως της γλώσσας PHP. Όλα τα δημοφιλή Content managment Systems όπως για παράδειγμα wordpress, joomla, drupal, magento, opencart χρησιμοποιούν τη γλώσσα PHP σε συνδυασμό με τη βάση δεδομένων mysql. Η ικανότητα προγραμματισμού με τη γλώσσα php είναι μια πολύ χρήσιμη γνώση για όσους θέλουν να ασχοληθούν με προγραμματισμό στο διαδίκτυο. Μπορείτε να αποκτήσετε αυτή τη γνώση στα σεμιναρια php.
Μαθήματα html
Πριν ξεκινήσετε να μαθαίνετε PHP καλό θα είναι να επιβεβαιώσετε οτι γνωρίζετε τη γλώσσα html. Όλες οι ιστοσελίδες στο διαδίκτυο χρησιμοποιούν τη γλώσσα html για την παρουσίαση των πληροφοριών. Η γλώσσα PHP επιτρέπει αυτοματοποίηση της παρουσίαση πληροφοριών με τη γλώσσα html. Μπορείτε να επισκεφθείτε τη σελίδα με τα μαθήματα html και να δείτε τις βασικές εντολές html. Σίγουρα θα πρέπει να εποκτήσετε εξοικείωση με τη γλώσσα, είτε με πρακτική εξάσκηση είτε στα πλαίσια μαθημάτων html.
Ασκήσεις html
Όσον αφορά τα μαθήματα SQL μπορείτε να αποκτήσετε τις απαιτούμενες γνώσεις html μέσω των ασκήσεων html. Έχουμε δημιουργήσει επιλεγμένες ασκήσεις html οι οποίες σας επιτρέπουν να αποκτήσετε τις γνώσεις που απαιτούνται ώστε να φτιάξετε προγράμματα PHP τα οποία αποκτούν πρόσβασση σε βάση δεδομένων μέσω εντολών SQL. Τοποθετήσαμε τις ασκήσεις html σε ξεχωριστή σελίδα. Μπορείτε να κάνετε κλικ στα button κάτω από κάθε άσκηση για να δείτε τον κώδικα html που αποτελεί τη λύση της άσκησης.
Κατασκευή eshop
Οι πιο δημοφιλείς πλατφόρμες κατασκευής eshop έχουν δημιουργηθεί με τη βάση δεδομένων mysql και τη γλώσσα PHP. Η ικανότητα διαχείρισης βάσης δεδομένων μέσω της γλώσσας mysql σας επιτρέπει να κάνετε πολύ καλύτερη διαχείριση και να λύσετε πολλά από τα προβλήματα που προκύπτουν κατα την κατασκευή eshop. Άλλωστε η δημιουργία βάσης δεδομένων είναι αναγκαίο βήμα κατά τη δημιουργία eshop. Στην ιστοσελίδα μας έχουμε πληροφορίες που αφορούν την κατασκευή eshop με το woocommerce, το magento και το opencart. Ο πιο αξιόπιστος τρόπος για τη δημιουργία ηλεκτρονικού καταστήματος υψηλών απαιτήσεων είναι να επιλέξετε κατασκευή eshop με το Magento. Όμως σε αυτή την περίπτωση ανεβαίνει πολύ το κοστος κατασκευης του eshop. Ο πιο οικονομικός δρόμος είναι η κατασκευή eshop με το woocommerce.
Μαθήματα eshop
Συνήθως η κατασκευή eshop γίνεται χωρίς να απαιτούνται ιδιαίτερες γνώσεις βάσεις δεδομένων. Στα μαθήματα κατασκευής eshop μαθαίνετε πως μπορείτε να δημιουργήσετε ηλεκτρονικό κατάστημα ξεκινώντας από το μηδέν. Μπορείτε να παρακολουθήσετε μαθήματα eshop για όλες τις δημοφιλείς πλατφόρμες ηλεκτρονικού εμπορίου όπως είναι το magento, το woocommerce και το opencart. Οι βασικές γνώσεις που διδάσκονται στα μαθήματα eshop περιλαμβάνουν την εγκατάσταση του Content Managment System, τη διαχείριση των προϊόντων και κατηγοριών (εισαγωγή, επεξεργασία και διαγραφή), τη σύνδεση με την τράπεζα και τη ρύθμιση των μεταφορικών. Εδώ μπορείτε να ενημερωθείτε για τα μαθήματα eshop. Ο πιο εύκολος τρόπος για να κάνετε τα πρώτα σας βήματα στο ηλεκτρονικό εμπόριο είναι τα μαθήματα woocommerce.
Κατασκευή ιστοσελίδων
Παρόμοια λογική υπάρχει και στην κατασκευή ιστοσελίδων. Έχετε τη δυνατότητα να κάνετε δημιουργία ιστοσελίδας χωρίς να γνωρίζετε τη γλώσσα sql και χωρίς να έχετε γνώσεις βάσεων δεδομένων. Όμως η γλώσσα sql και η γλώσσα php σας επιτρέπουν να βρίσκετε λύση στα σημεία που δεν μπορεί να δώσει εύκολη απάντηση το Content Managment System που χρησιμοποιήθηκε για την κατασκευή της ιστοσελίδας. Η πιο δημοφιλής επιλογή είναι η κατασκευή ιστοσελίδας με το wordpress. Πλέον το wordpress έχει κερδίσει τη μερίδα του λέοντος της αγοράς στην κατασκευή ιστοσελίδων. Παλαιότερα η πιο δημοφιλής επιλογή ήταν η κατασκευή ιστοσελίδων joomla.
Μαθήματα κατασκευής ιστοσελίδων
Στα μαθήματα κατασκευής ιστοσελίδων δεν διδάσκονται εντολές SQL. Άλλωστε όλα τα Content Managment Systems διαθέτουν αυτοματοποιημένη εγκατάσταση μέσω οδηγού. Μπορείτε να επιλέξετε το Content Managment System που σας ενδιαφέρει. Στα μαθήματα κατασκευής ιστοσελίδων διδάσκεται wordpress, joomla και drupal. Ο ευκολότερος δρόμςο είναι να ξεκινήσετε με τα μαθήματα wordrpess. Μια επίσης απλή επιλογή για να μάθετε πως γίνεται η κατασκευή ιστοσελίδων είναι τα σεμινάρια joomla.
Μαθήματα excel
Το excel είναι ένα πρόγραμμα με μεγάλη συνάφεια ως προς τις βάσεις δεδομένων. Άλλωστε το excel περιλαμβάνει λειτουργία βάσης δεδομένων καθώς και τις σχετικές συναρτήσεις αναζήτησης. Στα μαθήματα excel μπορείτε να ξεκινήσετε από τις βασικές γνώσεις και να φτάσετε μέχρι προηγμένες έννοιες του advanced excel όπως για παράδειγμα συγκεντρωτικό πίνακα (excel pivot table). Μπορείτε να χρησιμοποιήσετε τις ασκήσεις excel για να κάνετε εξάσκηση. Οι ασκήσεις excel είναι οργανωμένες ανάλογα με τη συνάρτηση που χρησιμοποιούμε. Περιλαμβάνονται ασκήσεις excel με λογικές συναρτήσεις, ασκήσεις excel με συναρτήσεις πληροφοριών, ασκήσεις excel με συναρτήσεις κειμένου, ασκήσεις excel με συναρτήσεις ημερομηνίας καθώς και ασκήσεις excel με μαθηματικές συναρτήσεις. Υπάρχουν επίσης ασκήσεις που συνδυάζουν το Excel και τη vba. Το επόμενο βήμα μετά το είναι να παρακολουθήσετε σεμινάρια vba.