Η εντολή SELECT
- Για να έχει νόημα μια βάση δεδομένων θα πρέπει να περιέχει τουλάχιστον έναν πίνακα
- Ο κάθε πίνακας πρέπει να δηλώνεται από το όνομά του
- Οι πίνακες περιέχουν στήλες, που αποτελούν τα πεδία ενός πίνακα
- Και εγγραφές (records), που αποτελούν τα στοιχεία ενός πίνακα
Table_ID | LastName | FirstName | Address | City |
1 | Pavlou | George | Karaoli 80 | Athens |
2 | Kalogeropoulou | Maria | Dimitriou 25 | Athens |
3 | Liakos | John | Lambraki 10 | Piraeus |
Με βάση τον παραπάνω πίνακα παρατηρούμε ότι:
- Αποτελείται από 5 στήλες δηλαδή από 5 πεδία
- Μέσα του εμπεριέχει 3 εγγραφές
- Η πρώτη στήλη είναι το βασικό κλειδί του πίνακα και είναι ένας αύξων αριθμός
- Ο παραπάνω πίνακας πρέπει να έχει ένα όνομα, π.χ. «MyTable»
SELECT
- Η συνηθέστερη SQL query είναι η «SELECT» (στα ελληνικά «επέλεξε»)
- Ταυτόχρονα είναι και η πιο πολύπλοκη δήλωση της γλώσσας
- Η δήλωση SELECT μπορεί να περιλαμβάνει τις παρακάτω λέξεις κλειδιά:
- Τον όρο «FROM», ό οποίος υποδηλώνει από ποιον πίνακα ή πίνακες θα εξαχθούν τα δεδομένα της αναζήτησής μας
- Τον όρο «WHERE», ο οποίος δηλώνει ένα κατηγόρημα σύγκρισης, ούτως ώστε οι εγγραφές που θα επιλεγούν από το επερώτημα να έχουν κάποιο συγκεκριμένο χαρακτηριστικό
- Τον όρο «GROUP BY», ο οποίος χρησιμοποιείται ώστε εγγραφές με κοινές τιμές να μπορούν να συμπτυχθούν σε μικρότερα σύνολα εγγραφών
- Τον όρο «HAVING», ο οποίος περιλαμβάνει ένα κατηγόρημα φιλτραρίσματος για τις εγγραφές που προκύπτουν από τον όρο «GROUP BY»
- Τον όρο «ORDER BY», ο οποίος χρησιμοποιείται για να υποδηλώσει ποια στήλη ή στήλες του πίνακα θα χρησιμοποιηθούν ώστε να ταξινομηθούν τα δεδομένα μας, καθώς και τη φορά της ταξινόμησης (ASC/DESC, αύξουσα ή φθίνουσα)
Γενική σύνταξη της SELECT
SELECT column_list FROM table-name
[WHERE clause]
[GROUP BY clause]
[HAVING clause]
[ORDER BY clause];
Για να δούμε όλα τα περιεχόμενα του παραπάνω πίνακα (εγγραφές) θα χρησιμοποιήσουμε την εξής ερώτηση:
SELECT * FROM MyTable
Όπου το * υποδηλώνει όλα τα πεδία του πίνακα.
Για τον ίδιο πίνακα, έστω ότι θέλουμε να βρούμε το όνομα και το επώνυμο όσων μένουν στην πόλη Αθήνα. Η ερώτηση στη βάση θα είναι η ακόλουθη:
SELECT LastName, FirstName FROM MyTable WHERE City='Athens'
Εδώ εισάγουμε τη συνθήκη μας με τον όρο WHERE.
Σημειώσεις για τον όρο WHERE
- Εντός της WHERE, μπορούμε να έχουμε πολλαπλές λογικές συνθήκες με τη χρήση των AND και OR
- Με το λογικό AND, οι συνθήκες που ενώνει θα πρέπει να ικανοποιούνται ταυτόχρονα
- Με το λογικό OR, θα πρέπει να ικανοποιείται μια εκ των συνθηκών που ενώνει
- Στο προηγούμενο παράδειμα αν θέλαμε να εμφανιστούν τα άτομα που μένουν είτε στην Αθήνα, είτε στον Πειραιά, τότε θα γράφαμε το εξής ερώτημα:
- SELECT LastName, FirstName FROM MyTable WHERE City=‘Athens’ OR City=‘Piraeus’
- Επιπλέον, στην συνθήκη WHERE μπορούμε εκτός από την ισότητα να χρησιμοποιήσουμε, εφόσον διαθέτουμε τα κατάλληλα δεδομένα και άλλους χειριστές εκτός από τον «=»
- Προσοχή κατά τη χρήση πολλαπλών συνθηκών AND ή/και OR, να χρησιμοποιείτε όπου χρειάζονται οι κατάλληλες παρενθέσεις!
ΧΕΙΡΙΣΤΗΣ | ΠΕΡΙΓΡΑΦΗ |
= | ΙΣΟΤΗΤΑ |
<> | ΑΝΙΣΟΤΗΤΑ |
> | ΜΕΓΑΛΥΤΕΡΟΣ ΑΠΟ |
< | ΜΙΚΡΟΤΕΡΟΣ ΑΠΟ |
>= | ΜΕΓΑΛΥΤΕΡΟΣ Η ΙΣΟΣ ΑΠΟ |
<= | ΜΙΚΡΟΤΕΡΟΣ Η ΙΣΟΣ ΑΠΟ |
BETWEEN | ΤΙΜΗ ΜΕΤΑΞΥ ΔΥΟ ΑΛΛΩΝ |
LIKE | ΑΝΑΖΗΤΗΣΗ ΓΙΑ ΕΝΑ ΠΡΟΤΥΠΟ |
IN | ΠΟΛΛΑΠΛΕΣ ΔΙΑΦΟΡΕΤΙΚΕΣ ΤΙΜΕΣ ΕΝΤΟΣ ΜΙΑΣ ΣΤΗΛΗΣ |
Σημειώσεις για τους Χειριστές
- Θα πρέπει σε κάθε περίπτωση να προσέχουμε τον τύπο των δεδομένων μας.
- Διαφορετικός είναι ο χειρισμός αριθμητικών δεδομένων και δεδομένων απλού κειμένου.
- Εάν αναφερόμαστε σε κείμενο θα πρέπει τις τιμές που μας ενδιαφέρουν να τις περικλείουμε με απλά εισαγωγικά. 'Κείμενο'.
- Εάν οι τιμές είναι αριθμητικές τότε ΔΕΝ πρέπει να έχουμε εισαγωγικά.
SELECT DISTINCT
Πολλές φορές η ερώτηση SQL που κάνουμε μπορεί να επιστρέφει ίδιες εγγραφές. Αν για παράδειγμα στο προηγούμενο ερώτημα γράφαμε «SELECT City FROM MyTable», η SQL θα μας επέστρεφε: Athens, Athens, Piraeus.
Σε συγκεκριμένες περιστάσεις ωστόσο εμείς δεν θέλουμε να εμφανίζονται ίδιες εγγραφές δύο ή περισσότερες φορές, αλλά από μια φορά. Για να το πετύχουμε αυτό χρησιμοποιούμε τη λέξη DISTINCT. Το παράδειγμά μας θα πάρει τη μορφή: SELECT DISTINCT City FROM MyTable και η απάντηση της γλώσσας θα είναι η: Athens, Piraeus.
ORDER BY
Στο παράδειγμα του παραπάνω πίνακά μας, μπορούμε να έχουμε τα δεδομένα μας ταξινομημένα κατά επίθετο με την εντολή:
SELECT LastName, FirstName FROM MyTable ORDER BY LastName
Εάν δεν ορίσουμε αύξουσα ή φθίνουσα σειρά, τα δεδομένα θα εξαχθούν κατά αύξουσα σειρά. Σε κάθε περίπτωση το πώς θα εξαχθούν μπορούμε να το ορίσουμε εμείς στο τέλος του statement:
SELECT LastName, FirstName FROM MyTable ORDER BY LastName DESC
Άλλες εντολές
Η εντολή: «SELECT MAX(Column1) FROM Table1», επιλέγει τη μέγιστη τιμή μιας στήλης.
Η εντολή: «SELECT MIN(Column1) FROM Table1», επιλέγει την ελάχιστη τιμή μιας στήλης.
Η εντολή: «SELECT AVG(Column1) FROM Table1», επιλέγει τη μέση τιμή μιας στήλης.
Η εντολή: «SELECT SUM(Column1) FROM Table1», βρίσκει το άθροισμα των αριθμητικών τιμών μιας στήλης.