Page 71 - Linux_7

Basic HTML Version

Linux Inside
71
Εάν θέλουμε συγκεκριμένα αποτελέσματα, χρησιμοποιούμε
τον τελεστή IN σε συνδυασμό με τον όρο WHERE, για να κα-
θορίσουμε περισσότερες τιμές αναζήτησης (εικόνα 4):
SELECT * FROM Cars WHERE Name IN (‘Audi’, ‘Hummer’);
Ο τελεστής LIKE χρησιμοποιείται με τον όρο WHERE για να
αναζητήσουμε ένα συγκεκριμένο πρότυπο σε μία στήλη:
SELECT * FROM Cars WHERE Name LIKE ‘Vol%’;
Μας επιστρέφει όλες τις τιμές από τη στήλη Name που ξε-
κινούν από Vol
(εικόνα 5).
Το επόμενο παράδειγμα θα μας εμφανίσει όλες τις τιμές
από τη στήλη Name που έχουν μέγεθος τεσσάρων χαρακτή-
ρων -4 κάτω παύλες- (εικόνα 5):
SELECT * FROM Cars WHERE Name LIKE ‘____’;
Ο τελεστής GLOB είναι παρόμοιος με τον τελεστή LIKE, με
τη διαφορά ότι χρησιμοποιεί για τα wildcards το συντακτικό
του Unix file globbing. Επίσης, ο τελεστής GLOB είναι case
sensitive, σε αντίθεση με τον τελεστή LIKE.
Το παρακάτω παράδειγμα μας επιστρέφει όλες τις τιμές
από τη στήλη Name που τελειώνουν σε en (εικόνα 5).
SELECT * FROM Cars WHERE Name GLOB ‘*en’;
Και στο επόμενο αντίστοιχα θα μας εμφανίσει όλες τις τι-
μές από τη στήλη Name που έχουν μέγεθος τεσσάρων χαρα-
κτήρων
(εικόνα 5).
SELECT * FROM Cars WHERE Name GLOB ‘????’;
Το επόμενο παράδειγμα μας αποδεικνύει ότι ο τελεστής
GLOB είναι case sensitive σε αντίθεση με τον τελεστή LIKE:
SELECT * FROM Cars WHERE Name GLOB ‘*EN’;
Η παραπάνω εντολή δεν μας επιστρέφει τίποτε σε αντίθεση
με την παρακάτω
(εικόνα 5)
:
SELECT * FROM Cars WHERE Name LIKE ‘%EN’;
Ο τελεστής BETWEEN είναι αντίστοιχο με τη σύγκριση ενός
ζεύγους τιμών. Δηλαδή το a BETWEEN b AND c είναι αντί-
στοιχο του a>=b AND a<=c
(εικόνα 5)
:
SELECT * FROM Cars WHERE Cost BETWEEN 20000 AND
55000;
Προτεραιότητα
Η προτεραιότητα (precedence) καθορίζει ποιος τελεστής
θα εκτελείται πρώτος.
Ο βαθμός προτεραιότητας στους τελεστές είναι σημαντι-
κός για να έχουμε σωστά αποτελέσματα τιμών. Για να γίνει
κατανοητό, ποιο είναι το αποτέλεσμα του 3 + 5 * 5;
Είναι 28 ή 40;
Όπως και στα μαθηματικά, ο τελεστής του πολλαπλασια-
σμού έχει υψηλότερη προτεραιότητα από τον τελεστή της
πρόσθεσης. Άρα το αποτέλεσμα της παραπάνω πράξης είναι
28.
Για να αλλάξουμε τη σειρά προτεραιότητας των τελεστών,
χρησιμοποιούμε παρενθέσεις. Με αυτόν τον τρόπο θα εκτε-
λεστούν πρώτα οι πράξεις εντός των παρενθέσεων, με απο-
τέλεσμα το (3 + 5) * 5 να μας εμφανίζει ως αποτέλεσμα το
40:
SELECT 3+5*5, (3+5)*5;
Μας εμφανίζει:
28|40
Τη σειρά προτεραιοτήτων των τελεστών της SQLite μπο-
ρούμε να τη δούμε στην εικόνα 3.
Associativity
Μερικές φορές η προτεραιότητα δεν είναι ικανοποιητική για
να καθορίσουμε το αποτέλεσμα ενός expression. Αυτό μπο-
ρεί να συμβεί όταν στην ίδια πράξη έχουμε τελεστές οι οποίοι
έχουν τον ίδιο βαθμό προτεραιότητας. Σε αυτή την περίπτω-
ση υπάρχει ένας άλλος κανόνας που ονομάζεται associativity.
Με αυτόν τον όρο δίνεται η προτεραιότητα των τελεστών από
αριστερά προς τα δεξιά.
Για παράδειγμα η πράξη 9 / 3 * 3, έχοντας τους τελεστές
διαίρεσης και πολλαπλασιασμού στον ίδιο βαθμό προτεραιό-
τητας, μεταφράζεται από αριστερά προς τα δεξιά ως (9 / 3) *
3 και μας αποφέρει 9.
SELECT 9 / 3 * 3;
Στο επόμενο παράδειγμα, και πάλι ο κανόνας associativity
μεταφράζει την πράξη δύο τελεστών με τον ίδιο βαθμό προ-
τεραιότητας από αριστερά προς τα δεξιά:
SELECT 0 AND 0 OR 1;
Και μας αποφέρει το 1.
Οι αριθμητικοί, boolean, σχεσιακοί και bitwise τελεστές
ακολουθούν τον ίδιο κανόνα.
Ανάκτηση δεδομένων με την εντολή SELECT
Έχοντας εξοικειωθεί με τους τελεστές, μπορούμε να προ-
χωρήσουμε στο επόμενο βήμα που είναι η ανάκτηση δεδομέ-
νων από τη βάση δεδομένων μας, η οποία γίνεται με την
εντολή SELECT.
Έχουμε δει ήδη κάποια παραδείγματα της εντολής
SELECT στη ενότητα των τελεστών.
Παρακάτω θα συνεχίσουμε με αναλυτικά παραδείγματα και
θα δούμε πώς μπορούμε να θέτουμε ερωτήματα (queries)
στη βάση δεδομένων μας, αλλά και κάποιες μορφές της εντο-
λής SELECT, που θα μας αποφέρουν συγκεκριμένα αποτελέ-
σματα.
Ανάκτηση όλων των δεδομένων
Στο πρώτο παράδειγμα ανοίγουμε τη βάση δεδομένων
test.db και θέτουμε ερώτημα (query) για όλο τον πίνακα Cars
(εικόνα 6):
SELECT * FROM Cars;
Μπορούμε να θέσουμε ερώτημα για συγκεκριμένες στήλες
Linux Labs – SQLite
Περιορίζοντας το ερώτημα SELECT με τη χρήση των
WHERE & LIKE.
7
Ο τελεστής GLOB είναι παρόμοιος με τον τελεστή
LIKE, με τη διαφορά ότι χρησιμοποιεί για τα
wildcards το συντακτικό του Unix file globbing.