SQL - μάθημα #1

Έστω ότι καταγράφουμε στον παρακάτω πίνακα τα στοιχεία 10 βιβλίων ενός βιβλιοπωλείου:

Οι οριζόντιες γραμμές ονομάζονται εγγραφές και οι κατακόρυφες στήλες ονομάζονται πεδία. Επομένως σε αυτό το παράδειγμα διαθέτουμε 10 εγγραφές που αντιστοιχούν σε 10 βιβλία και για κάθε βιβλίο καταχωρούμε 4 πεδία (Κωδικό, Τίτλο, Συγγραφέα, Τιμή).

Για να καταχωρηθούν αυτά τα στοιχεία σε μια Βάση Δεδομένων αρχικά δημιουργείται ένας πίνακας (Table) σε SQL με την ονομασία Books με πεδία τον Κωδικό (Id), τον Τίτλο (Title), τον Συγγραφέα (Author) και την Τιμή (Price) πώλησης του βιβλίου. Η εντολή σε SQL είναι:

-- Δημιουργία πίνακα Books
CREATE TABLE Books (
  Id varchar(5),
  Title varchar(30),
  Author varchar(20),
  Price float
);

Για να εισαχθούν τα στοιχεία των 10 βιβλίων στον πίνακα (Table) οι εντολές σε SQL είναι:

-- Εισαγωγή εγγραφών στον πίνακα Books
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b001', 'Μεγάλες Προσδοκίες', 'Ντίκενς', 15);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b002', 'Έγκλημα και Τιμωρια', 'Ντοστογιέφσκι', 16);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b003', 'Πόλεμος και Ειρήνη', 'Τολστόι', 17);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b004', 'Μία Χριστουγεννιάτικη Ιστορία', 'Ντίκενς', 17);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b005', 'Όλιβερ Τουίστ', 'Ντίκενς', 14);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b006', 'Οι άθλιοι', 'Ουγκώ', 15);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b007', 'Ο Κόμπος των Εχιδνών', 'Μωριάκ', 13);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b008', 'Ο ξένος', 'Καμύ', 12);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b009', 'Ο Καπετάν Μιχάλης', 'Καζατζάκης', 14);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b010', 'Ζητείται ελπίς', 'Σαμαράκης', 15);

Για να διαγραφεί τελείως από την Βάση Δεδομένων ο πίνακας Books η εντολή σε SQL είναι:

-- Διαγραφή του πίνακα Books
DROP TABLE Books;

Για να εμφανιστούν όλα τα πεδία όλων των εγγραφών του πίνακα Books η εντολή σε SQL είναι:

-- Εμφάνιση όλου του πίνακα Books
SELECT * FROM Books;

Το αποτέλεσμα της εκτέλεσης θα είναι:

Για να εμφανιστούν μόνο τα πεδία Id και Title όλων των εγγραφών του πίνακα Books για τις οποίες ο συγγραφέας είναι ο Ντίκενς η εντολή σε SQL είναι:

-- Εμφάνισε κωδικό, τίτλο για βιβλία με συγγραφέα τον Ντίκενς 
SELECT Id, Title FROM Books WHERE Author='Ντίκενς';

Το αποτέλεσμα της εκτέλεσης θα είναι:

Για να εμφανιστούν μόνο τα πεδία Id, Title και Price όλων των εγγραφών του πίνακα Books για τις οποίες η τιμή είναι μεγαλύτερη από 15€ η εντολή σε SQL είναι:

-- Εμφάνισε κωδικό, τίτλο, τιμή για βιβλία με τιμή μεγαλύτερη από 15€ 
SELECT Id, Title, Price FROM Books WHERE Price > 15;

Το αποτέλεσμα της εκτέλεσης θα είναι:

Για να εμφανιστεί το πλήθος των εγγραφών του πίνακα Books για τις οποίες η τιμή είναι μεγαλύτερη από 15€ η εντολή σε SQL είναι:

-- Εμφάνισε το πλήθος βιβλίων με τιμή μεγαλύτερη από 15€ 
SELECT COUNT(*) AS books_number FROM Books WHERE Price > 15;

Το αποτέλεσμα της εκτέλεσης θα είναι:

Για να εμφανιστεί ο μέσος όρος του πεδίου Price όλων των εγγραφών του πίνακα Books η εντολή σε SQL είναι:

-- Εμφάνισε τον μέσο όρο της τιμής όλων των βιβλίων
SELECT AVG(Price) AS price_average FROM Books;

Το αποτέλεσμα της εκτέλεσης θα είναι:

Για να εμφανιστεί η ελάχιστη / μέγιστη τιμή του πεδίου Price όλων των εγγραφών του πίνακα Books και τα πεδία Id, Title και Author όλων των εγγραφών του πίνακα Books που έχουν το πεδίο Price ίσο με την ελάχιστη/μέγιστη τιμή οι εντολές σε SQL είναι:

-- Εμφάνισε την ελάχιστη τιμή από όλα τα βιβλία
SELECT MIN(Price) AS minimum_price FROM Books;

-- Εμφάνισε κωδικό, τίτλο και συγγραφέα όλων των βιβλίων με την ελάχιστη τιμή
SELECT Id, Title, Author FROM Books 
    WHERE Price=(SELECT MIN(Price) AS minimum_price FROM Books);

-- Εμφάνισε την μέγιστη τιμή από όλα τα βιβλία
SELECT MAX(Price) AS maximum_price FROM Books;

-- Εμφάνισε κωδικό, τίτλο και συγγραφέα όλων των βιβλίων με την μέγιστη τιμή
SELECT Id, Title, Author FROM Books 
    WHERE Price=(SELECT MAX(Price) AS maximum_price FROM Books);

Το αποτέλεσμα της εκτέλεσης θα είναι:


DROP TABLE Customers;
DROP TABLE Orders;
DROP TABLE Shippings;


-- Δημιουργία πίνακα Books
CREATE TABLE Books (
  Id varchar(5),
  Title varchar(30),
  Author varchar(20),
  Price float
);

-- Εισαγωγή εγγραφών στον πίνακα
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b001', 'Μεγάλες Προσδοκίες', 'Ντίκενς', 15);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b002', 'Έγκλημα και Τιμωρια', 'Ντοστογιέφσκι', 16);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b003', 'Πόλεμος και Ειρήνη', 'Τολστόι', 17);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b004', 'Μία Χριστουγεννιάτικη Ιστορία', 'Ντίκενς', 17);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b005', 'Όλιβερ Τουίστ', 'Ντίκενς', 14);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b006', 'Οι άθλιοι', 'Ουγκώ', 15);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b007', 'Ο Κόμπος των Εχιδνών', 'Μωριάκ', 13);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b008', 'Ο ξένος', 'Καμύ', 12);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b009', 'Ο Καπετάν Μιχάλης', 'Καζατζάκης', 14);
INSERT INTO Books(Id,Title,Author,Price)  VALUES ('b010', 'Ζητείται ελπίς', 'Σαμαράκης', 15);



ΑΣΚΗΣΗ #1.1:
Να γράψετε τις κατάλληλες εντολές σε SQL ώστε να προστεθούν τα στοιχεία ακόμα 2 βιβλίων:
'b011', 'Τα Ρομπότ της Αυγής', 'Ασίμωφ', 14
'b012', 'Σπηλιές από Ατσάλι', 'Ασίμωφ', 13
Στην συνέχεια να εμφανιστεί ξανά όλος ο πίνακας Books.

ΑΣΚΗΣΗ #1.2:
Να γράψετε τις κατάλληλες εντολές σε SQL ώστε:
• Να βρεθεί ο μέσος όρος της τιμής όλων των βιβλίων του Ντίκενς.
• Να βρεθεί ο μέσος όρος της τιμής όλων των βιβλίων του Ασίμωφ.
• Να βρεθεί το πλήθος των βιβλίων του Ντίκενς.
• Να βρεθεί το πλήθος των βιβλίων του Ασίμωφ.

ΑΣΚΗΣΗ #1.3:
Να γράψετε τις κατάλληλες εντολές σε SQL ώστε:
• Να βρεθεί πόσα βιβλία του Ντίκενς έχουν τιμή κάτω από 16€.
• Να εμφανιστεί ο Κωδικός, ο Τίτλος και η Τιμή όλων των βιβλίων του Ντίκενς που έχουν τιμή κάτω από 16€.

ΑΣΚΗΣΗ #1.4:
Να γράψετε τις κατάλληλες εντολές σε SQL ώστε:
• Να εμφανιστεί ο Κωδικός, ο Τίτλος και η Τιμή όλων των βιβλίων όπου συγγραφέας είναι είτε ο Ντίκενς είτε ο Ασίμωφ.
• Να βρεθεί ο μέσος όρος της τιμής όλων των παραπάνω βιβλίων.

ΑΣΚΗΣΗ #1.5:
Να γράψετε τις κατάλληλες εντολές σε SQL ώστε:
• Να βρεθεί η ελάχιστη τιμή από τα βιβλία είτε του Ντίκενς είτε του Ασίμωφ.
• Να εμφανιστεί ο Κωδικός, ο Τίτλος και ο Συγγραφέας όλων των βιβλίων όπου συγγραφέας είναι είτε ο Ντίκενς είτε ο Ασίμωφ και έχουν την ελάχιστη τιμή.

ΑΣΚΗΣΗ #1.6:
Η εντολή SQL για διαγραφή εγγραφών σε έναν πίνακα είναι: DELETE FROM table_name WHERE condition;
Να γράψετε τις κατάλληλες εντολές σε SQL ώστε:
• Να διαγραφούν όλα τα βιβλία του Ασίμωφ.
• Να διαγραφεί η εγγραφή με Κωδικό 'b001'.
• Να εμφανιστεί ξανά όλος ο πίνακας Books.