Page 72 - Linux_7

Basic HTML Version

Linux Inside
72
ενός πίνακα. Σε αυτή την περίπτωση, μετά τη εντολή SELECT
γράφουμε τα ονόματα των στηλών που θέλουμε, χωρισμένα
με κόμμα (,)
(εικόνα 6)
:
SELECT Name, Cost FROM Cars;
Περιορισμός των αποτελεσμάτων
Όταν έχουμε να κάνουμε με μία μεγάλη βάση δεδομένων,
είναι καλό, για λόγους φόρτου εργασίας, να περιορίζουμε τα
αποτελέσματα των ερωτημάτων μας.
Έτσι, αποφορτίζουμε τη εφαρμογή μας και παράλληλα δί-
νουμε πιο ξεκάθαρα αποτελέσματα στον τελικό χρήση.
Στο παρακάτω παράδειγμα χρησιμοποιούμε τον όρο LIMIT
για να περιορίσουμε τον αριθμό των γραμμών των στηλών
του ερωτήματος που θέσαμε:
SELECT * FROM Cars LIMIT 4;
Μας επιστρέφει τις πρώτες τέσσερις γραμμές του πίνακα
Cars. Ο όρος OFFSET σε συνδυασμό με τον όρο LIMIT καθο-
ρίζει πόσες γραμμές θα παραλείψει από την αρχή του πίνακα
και μετέπειτα:
SELECT * FROM Cars LIMIT 4 OFFSET 2;
Έτσι, η παραπάνω εντολή θα μας εμφανίζει τις τέσσερις
επόμενες γραμμές που ακολουθούν μετά από τις δύο πρώ-
τες του πίνακα Cars
(εικόνα 6).
Ταξινόμηση των αποτελεσμάτων
Μπορούμε να ταξινομήσουμε τα αποτελέσματα του ερωτή-
ματος με τον όρο ORDER BY, ακολουθούμενα από το όνομα
της στήλης που θέλουμε ως βάση για τη ταξινόμηση και μία
από τις λέξεις–κλειδιά ASC (αύξουσα), DESC (φθίνουσα):
SELECT Name, Cost FROM Cars ORDER BY Cost DESC;
Μας επιστρέφει από τον πίνακα Cars τα δεδομένα των στη-
λών Name & Cost, ταξινομημένα με βάση τη στήλη Cost σε
φθίνουσα σειρά.
Ανάκτηση συγκεκριμένων γραμμών με τον όρο WHERE
Όπως θα δούμε παρακάτω, ακόμη πιο χρήσιμος για τη
ανάκτηση συγκεκριμένων γραμμών είναι ο όρος WHERE. Στο
παρακάτω παράδειγμα θα μας εμφανίσει τη γραμμή που το
id της είναι 6
(εικόνα 7)
:
SELECT * FROM Orders WHERE id=6;
Μπορούμε να χρησιμοποιήσουμε και string ως όρο αναζή-
τησης στη WHERE.
Η παρακάτω εντολή θα μας εμφανίσει όλες τις γραμμές
του πίνακα Orders που περιέχουν στη στήλη Customer το
string “Smith”
(εικόνα 7)
:
SELECT * FROM Orders WHERE Customer=”Smith”;
Και όπως έχουμε δείξει στη ενότητα των τελεστών, μπο-
ρούμε να χρησιμοποιήσουμε τον τελεστή LIKE, ώστε να συ-
γκεκριμενοποιήσουμε το ερώτημά μας στη βάση δεδομένων:
SELECT * FROM Orders WHERE Customer LIKE ‘B%’;
Μας επιστρέφει όλες τις γραμμές του πίνακα Orders, στις
οποίες η στήλη Customer ξεκινά από B ή b (εικόνα 7).
Αφαίρεση διπλών δεδομένων
Στο ερώτημα του προηγούμενου παραδείγματος είδαμε ότι
μας επέστρεψε δύο φορές το ίδιο όνομα (Brown – Black –
Brown). Υπάρχουν στιγμές που θα θελήσουμε να μην εμφανί-
ζονται τα ίδια δεδομένα (ονόματα σε στήλη παραγγελιών). Τη
λύση έρχεται να μας τη δώσει ο όρος DISTINCT:
SELECT DISTINCT Customer FROM Orders WHERE
Customer LIKE ‘B%’;
Μας εμφανίζει, σε αντίθεση με το προηγούμενο παράδειγ-
μα, μόνο μία φορά το όνομα Brown
(εικόνα 7)
.
Εισαγωγή, ενημέρωση και διαγραφή δεδομένων
Για τη εισαγωγή, την ενημέρωση και τη διαγραφή των δε-
δομένων μας, η SQLite χρησιμοποιεί τις εντολές INSERT,
DELETE και UPDATE, οι οποίες είναι μέρος της SQL DML
(Data Manipulation Language). Η χρήση τους είναι εύκολη,
όπως θα δούμε παρακάτω.
Εισαγωγή δεδομένων
Ξεκινώντας με τα παραδείγματα, ανοίγουμε τη βάση δεδο-
μένων test.db και δημιουργούμε έναν νέο πίνακα στον οποίο
θα «παίξουμε», αλλά παράλληλα θα μας βοηθήσει να εξασκή-
σουμε αυτά που έχουμε μάθει μέχρι τώρα.
Για λόγους ευκολίας οι παρακάτω εντολές υπάρχουν στο
αρχείο books_table.txt στο συνοδευτικό DVD του περιοδικού,
στο φάκελο /MAGAZINE/SQLite, οπότε μπορούμε να τις κά-
νουμε απευθείας αντιγραφή/επικόλληση:
CREATE TABLE Books(id integer primary key, title text,
author text, isbn text default ‘not available’);
Δημιουργήσαμε έναν νέο πίνακα με στήλες id, title, author
& isbn
(εικόνα 8).
Με την παρακάτω εντολή θα εισαγάγουμε την πρώτη γραμ-
μή μας στον πίνακα, χρησιμοποιώντας την κλασική μορφή της
εντολής INSERT.
Γράφουμε μετά το όνομα του πίνακα όλες τις στήλες ονο-
μαστικά και μετά τον όρο VALUES γράφουμε αντίστοιχα την
τιμή που θέλουμε να εισαγάγουμε για κάθε στήλη
(εικόνα 8)
:
INSERT INTO Books(id, title, author, isbn) VALUES (1, ‘War
and Peace’, ‘Leo Tolstoy’, ‘978-0345472403’);
Η επόμενη εντολή εισάγει τη δεύτερη γραμμή. Παρατηρού-
με ότι έχουμε παραλείψει τη στήλη id. Επειδή, όμως, η στήλη
id έχει οριστεί ως integer primary key, δηλαδή, ακέραιος αριθ-
μός με πρωτεύον (μοναδικό) κλειδί, η SQLite ορίζει αυτόματα
τη νέα τιμή, η οποία είναι πάντοτε ο αμέσως διαθέσιμος αριθ-
μός σε αύξουσα μορφή από την τελευταία γραμμή, στην πε-
ρίπτωσή μας το 2
(εικόνα 8)
:
INSERT INTO Books(title, author, isbn) VALUES(‘The
Brothers Karamazov’, ‘Fyodor Dostoyevsky’, ‘978-
0486437910’);
Linux Labs – SQLite
Ο όρος OFFSET σε συνδυασμό με τον όρο LIMIT
καθορίζει πόσες γραμμές θα παραλείψει από
την αρχή του πίνακα.
Παραδείγματα της εντολής INSERT.
8