Η εντολή 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», βρίσκει το άθροισμα των αριθμητικών τιμών μιας στήλης.