Βάσεις Δεδομένων Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Σ. Παλαμάς, Β. Φερεντίνος, Υλικό Μαθήματος «Βάσεις Δεδομένων», 2015-2017
Άσκηση 5: Απαντήσεις στις Ασκήσεις Structured Query Language (SQL)
Οι Πίνακες της Βάσης Δεδομένων που θα χρησιμοποιηθούν στις ασκήσεις
Ασκήσεις Να γράψετε τα ερωτήματα SQL που υλοποιούν τα παρακάτω: 1. Εμφάνισε τα στοιχεία των υπαλλήλων που είναι άνδρες. 2. Εμφάνισε τα στοιχεία των γυναικών υπαλλήλων με θέση «Manager» 3. Εμφάνισε τα στοιχεία των υπαλλήλων με έτος γέννησης μεγαλύτερο ή ίσο από το 1965 4. Εμφάνισε τα στοιχεία των διαμερισμάτων που βρίσκονται στη Γλασκώβη (Glasgow). 5. Εμφάνισε τον αριθμό των ανδρών και των γυναικών που εργάζονται σε όλη την εταιρία 6. Εμφάνισε για κάθε κατάστημα της εταιρίας των αριθμό των ανδρών και των γυναικών που εργάζονται 7. Εμφάνισε τα στοιχεία των ακινήτων που είναι διαμερίσματα (τύπος = Flat) 8. Εμφάνισε τον αριθμό των διαμερισμάτων και των μονοκατοικιών που διαχειρίζεται η εταιρία 9. Εμφάνισε τις μονοκατοικίες που διαχειρίζεται η εταιρία (type = House) κατά φθίνουσα σειρά ενοικίου 10.Εμφάνισε τη μέση τιμή ενοικίου για τα διαμερίσματα 11.Εμφάνισε τη μέση τιμή ενοικίου για τα διαμερίσματα και τις μονοκατοικίες (με ένα ερώτημα) 12.Εμφάνισε τα στοιχεία των ακινήτων που ανήκουν στον ιδιοκτήτη με επώνυμο «Farrel» 13.Εμφάνισε τα στοιχεία των ακινήτων που επιβλέπει η υπάλληλος με επώνυμο «Beech» 14.Εμφάνισε τα στοιχεία των ακινήτων που ικανοποιούν τους περιορισμούς του πελάτη με επώνυμο «Kay» και όνομα «John». 15.Εμφάνισε τη διεύθυνση, την πόλη, τον τύπο και το ενοίκιο των ακινήτων που έχει δει η πελάτης Aline Stweart.
Άσκηση 1: Εμφάνισε τα στοιχεία των υπαλλήλων που είναι άνδρες. SELECT * FROM Staff WHERE sex = M
Άσκηση 2: Εμφάνισε τα στοιχεία των γυναικών υπαλλήλων με θέση «Manager» SELECT * FROM Staff WHERE (sex = F ) AND (position= Manager )
Άσκηση 3: Εμφάνισε τα στοιχεία των υπαλλήλων με έτος γέννησης μεγαλύτερο ή ίσο από το 1965 SELECT * FROM Staff WHERE YEAR(DOB) >= 1965
Άσκηση 4: Εμφάνισε τα στοιχεία των διαμερισμάτων που βρίσκονται στη Γλασκώβη (Glasgow) SELECT * FROM PropoertyForRent WHERE city = Glasgow
Άσκηση 5: Εμφάνισε τον αριθμό των ανδρών και των γυναικών που εργάζονται σε όλη την εταιρία SELECT sex, COUNT(*) FROM Staff GROUP BY sex
Άσκηση 6: Εμφάνισε για κάθε κατάστημα της εταιρίας των αριθμό των ανδρών και των γυναικών που εργάζονται SELECT branchno, sex, COUNT(*) FROM Staff GROUP BY branchno, sex
Άσκηση 7: Εμφάνισε τα στοιχεία των ακινήτων που είναι διαμερίσματα (τύπος = Flat) SELECT * FROM propertyforrent WHERE type = Flat
Άσκηση 8: Εμφάνισε τον αριθμό των διαμερισμάτων και των μονοκατοικιών που διαχειρίζεται η εταιρία SELECT type, COUNT(*) FROM propertyforrent GROUP BY type
Άσκηση 9: Εμφάνισε τις μονοκατοικίες που διαχειρίζεται η εταιρία (type = House) κατά φθίνουσα σειρά ενοικίου SELECT * FROM propertyforrent WHERE type = House ORDER BY rent DESC
Άσκηση 10: Εμφάνισε τη μέση τιμή ενοικίου για τα διαμερίσματα SELECT AVG(rent) FROM propertyforrent WHERE type = Flat
Άσκηση 11: Εμφάνισε τη μέση τιμή ενοικίου για τα διαμερίσματα και τις μονοκατοικίες (με ένα ερώτημα) SELECT type, AVG(rent) FROM propertyforrent WHERE type IN ('Flat', 'House') GROUP BY type ή (με HAVING) SELECT type, AVG(rent) FROM PropertyForRent GROUP BY type HAVING type IN ('Flat', 'House'); (Είτε με WHERE είτε με HAVING το κριτήριο δεν είναι απαραίτητο λόγω ότι μόνο οι κατηγορίες Flat και House υπάρχουν στις έως τώρα καταχωρήσεις της βάσεις. Για να λειτουργεί όμως και σε περίπτωση που χρησιμοποιηθεί και άλλο type ακινήτου.)
Άσκηση 12: Εμφάνισε τα στοιχεία των ακινήτων που ανήκουν στον ιδιοκτήτη με επώνυμο «Farrel» SELECT * FROM propertyforrent p WHERE ownerno = ( SELECT ownerno FROM privateowner WHERE lname = Farrel ) ή (με JOIN): SELECT p.* FROM propertyforrent p, privateowner o WHERE (p.ownerno = o.ownerno) AND (o.lname = Farrel )
Άσκηση 13: Εμφάνισε τα στοιχεία των ακινήτων που επιβλέπει η υπάλληλος με επώνυμο «Beech» SELECT p.* FROM propertyforrent p WHERE p.staffno = (SELECT staffno FROM Staff WHERE lname = Beech ) (το alias p δεν είναι απαραίτητο αλλά χρησιμοποιούνται ευρέως και όταν δεν είναι, όπως στις Join, απαραίτητα) ή (με JOIN): SELECT p.* FROM PropertyForRent p, Staff s WHERE (p.staffno = s.staffno) AND (s.lname = Beech )
Άσκηση 14: Εμφάνισε τα στοιχεία των ακινήτων που ικανοποιούν τους περιορισμούς του πελάτη με επώνυμο «Key» και όνομα «John». SELECT * FROM PropertyForRent WHERE type= (SELECT preftype FROM Client WHERE lname='key' AND fname='john') AND rent <= ( SELECT maxrent FROM Client WHERE lname='key' AND fname='john'); ή (με JOIN): SELECT p.* FROM PropertyForRent p, Client c WHERE (p.type = c.preftype) AND (p.rent <= c.maxrent) AND (c.fname = John ) AND (c.lname= Key )
Άσκηση 15: Εμφάνισε τη διεύθυνση, την πόλη, τον τύπο και το ενοίκιο των ακινήτων που έχει δει η πελάτης Aline Stewart. SELECT street, city, postcode, type, rent FROM PropertyForRent WHERE propertyno IN (SELECT propertyno FROM Viewing WHERE clientno = (SELECT clientno FROM Client WHERE lname='stewart' AND fname='aline') ) ή (με JOIN): SELECT p.street, p.city, p.type, p.rent FROM PropertyForRent p, Client c, Viewing.v WHERE (v.clientno = c.clientno) AND (v.propertyno = p.propertyno) AND (c.lname = Stewart ) AND (c.fname = Aline )
Πηγές: Database Systems: A Practical Approach to Design, Implementation, and Management Thomas Connolly Carolyn Begg