Τι είναι η SQL και τι μπορεί να κάνει

Τι είναι η SQL και τι μπορεί να κάνει
Τι είναι η SQL και τι μπορεί να κάνει

Έχουμε δει τι είναι οι βάσεις δεδομένων όμως για να τις χρησιμοποιήσουμε πρέπει κάπως να μπορούμε να εξάγουμε ή να εισάγουμε δεδομένα από αυτές.

Πως γίνεται αυτό; Με την Structured Query Language ή αλλιώς SQL.

Είναι η βασική της έκδοση είναι κοινή για όλα τα RDBMS (Relational Database Management Systems) ή αλλιώς συστημάτων διαχείρισης σχεσιακών βάσεων δεδομένων.

Η SQL λοιπόν ανάλογα το RDBMS έχει κάποιες παραλλαγές όπως T-SQL για SQL-Server, PL-SQL για Oracle αλλά εμείς θα μιλήσουμε για την κοινή SQL.

Τύποι εντολών σε SQL

Τα  SQL statements χωρίζονται σε 3 βασικές κατηγορίες DDL(Data Definition Language), DML(Data Manipulation Language) , DCL(Data Control Language).

Τα DDL statements αφορούν αλλαγές το σχήμα των πινάκων (CREATE/ALTER/DROP κλπ.), τα DML αλλαγές στις εγγραφές (INSERT, UPDATE, DELETE), τα DCL αφορούν τις αλλαγές στα δικαιώματα στη βάση.

Πάμε να δούμε τι μπορούμε να κάνουμε με την SQL.

Τα παραδείγματα μας θα είναι με greeklish ώστε να μην χρειαστεί να μπλέξουμε και με collations day one.

Δεν πρέπει να ξεχνάμε ότι από την στιγμή που μπορούμε να έχουμε πολλές διαφορετικές λογικές ομάδες αντικειμένων που ονομάζονται schema. Σωστό είναι πριν το όνομα του αντικειμένου να ορίζουμε και το schema του (με ‘.’ για διαχωριστικό). Όπως επίσης πριν το πεδίο να ορίζουμε τον αντικείμενο που ανήκει π.χ. dbo.pinakas.kwdikos_pelati. Για την απλότητα των παραδειγμάτων θα δουλέψουμε στο default schema.

Δημιουργία πίνακα (create table)

Για αρχή θα φτιάξουμε έναν πίνακα (DDL statement).

Ο πίνακας αυτός θα έχει ένα πεδίο τύπου ακέραιος αριθμός που είναι identity με βήμα (1,1) ως primary key. Δηλαδή ένα μοναδικό αριθμό που θα ξεκινήσει από το 1 και θα αυξάνει ανά μία μονάδα. Επίσης θα φτιάξουμε ένα πεδίο για κείμενο μέχρι 100 χαρακτήρες  (μεταβαλόμενου μεγέθους) και ένα για αριθμό τηλεφώνου.

create table pinakas (
id INT identity (1,1) primary key,
onoma varchar(100),
tilefono INT
)
Commands completed successfully.
Total execution time: 00:00:00.010

Εισαγωγή εγγραφών (insert)

Ας του προσθέσουμε τώρα 2 εγγραφές με insert statement (DML). Θα πρέπει να αναφέρουμε σε ποιον πίνακας

insert into pinakas values 
('Kwstas','210772049′),
('Nikos','215294882′);
(1 row affected)
(1 row affected)
Total execution time: 00:00:00.018

Ανάγνωση δεδομένων (select)

Πάμε να δούμε τώρα πως θα διαβάσουμε τα δεδομένα από τον πίνακα…

Είναι αρκετά απλό με την εντολή Select (DQL)

select * from pinakas -- Με * ορίζουμε ότι θέλουμε να δούμε όλα τα πεδία του πίνακα.
Τι είναι η SQL και τι μπορεί να κάνει

Πως όμως θα του πούμε φέρε μου μόνο 2 πεδία, όνομα και τηλέφωνό;

Ευκολάκι.

select onoma,tilefono from pinakas
Τι είναι η SQL και τι μπορεί να κάνει

Τώρα θέλω να μου φέρεις μόνο τον Νίκο πως θα γίνει αυτό;

Με την προσθήκη where.

select onoma from  pinakas where onoma = 'Nikos'
Τι είναι η SQL και τι μπορεί να κάνει

Ενημέρωση δεδομένων (update)

Πάμε να δούμε ένα ακόμα DDL statement το update. Το update μας δίνει την δυνατότητα να μπορούμε να αλλάξουμε τις τιμές στις εγγραφές σε όλες ή επιλεκτικά.

Ας πούμε ότι θέλουμε να κάνουμε όσες εγγραφές έχουν το όνομα Γιώργος σε Κώστας.

update pinakas set onoma ='Giorgos'
where onoma = 'Kwstas'

select * from pinakas
Τι είναι η SQL και τι μπορεί να κάνει

Τώρα θέλουμε να αλλάξουμε τον όνομα σε ένα τηλέφωνο.

update pinakas set onoma ='Leonidas'
where tilefono = '210772049'

select * from pinakas
Τι είναι η SQL και τι μπορεί να κάνει

Σορτάρισμα (order)

Ωραία τώρα θέλω να δω τα αποτελέσματα αλφαβητικά με το όνομα από το A στο Z.

select * from pinakas order by onoma desc
Τι είναι η SQL και τι μπορεί να κάνει

*φαίνεται ήμασταν ήδη στην αλφαβητική σειρά.

Διαγραφή δεδομένων (delete)

Θέλουμε όμως τώρα να σβήσουμε την εγγραφή που έχει όνομα Λεωνίδας. Αυτό θα γίνει με ένα delete (DML).

delete from pinakas where onoma = 'Leonidas'

select *  from pinakas
Τι είναι η SQL και τι μπορεί να κάνει

Εισαγωγή εγγραφών με συμπληρωμένα επιλεγμένα πεδία μόνο

Ας βάλουμε άλλη μια εγγραφή με insert.

insert into pinakas (tilefono,onoma) values ('Kwstas','210772049′)
Msg 245, Level 16, State 1, Line 1

Conversion failed when converting the varchar value ‘Kwstas’ to data type int.

Ουπς!! Κάτι δεν πήγε καλά… Τι έγινε τώρα;

Κάναμε ένα λάθος, του λέμε ότι στον πίνακα να περιμένει τα πεδία με τη σειρά τηλέφωνο και όνομα αλλά όταν βάλαμε τις τιμές τις δώσαμε ανάποδα οπότε ζητάμε να περάσουμε σε ένα πεδίο που δέχεται αριθμούς να εισάγουμε κείμενο.

insert into pinakas (onoma,tilefono) values ('Kwstas','210772049′)

select * from pinakas
Τι είναι η SQL και τι μπορεί να κάνει

Γιατί όμως λείπουν id εγγραφών και ο Κώστας πήρε το 4 και όχι πχ το 3;

Truncate πίνακα

Γιατί παρότι κάναμε delete πριν τα identity δεσμεύονται (και καλά κάνουν) γιατί μπορεί να συνδέονται με άλλους πίνακες.

Στην περίπτωση που θέλουμε identity πάλι από την αρχή μπορούμε να κάνουμε truncate (DDL) που θα σβήσει όλα τα δεδομένα στον πίνακα.

truncate table pinakas
go

insert into pinakas values ('Kwstas',’210772049′)
insert into pinakas values ('Nikos','215294882′)

select * from pinakas
Τι είναι η SQL και τι μπορεί να κάνει

Βρες δεδομένα που περιέχουν… (like)

Τώρα έχουμε τηλέφωνα που ξεκινάνε από 215 και 210 εμείς όμως θέλουμε να δούμε μόνο όσα ξεκινάνε από 210 πως γίνεται αυτό; Με το statement του like, βάζοντας το pattern που θέλουμε και ένα μπαλαντέρ το %.

select * from pinakas where tilefono like '210%'
Τι είναι η SQL και τι μπορεί να κάνει

θα μπορούσαμε να βάλουμε το μπαλαντερ μπροστά π.χ. ‘%779510’ ή να ορίσουμε συγκεκριμένο εύρος χαρακτήρος βάζοντας ‘?’ αντι για ‘%’ π.χ. ‘2107050???’.

Πως μετράμε πόσες εγγραφές έχει ένας πίνακας (count)

Αυτή την στιγμή πόσες εγγραφές έχει ο πίνακας όμως; Ας κάνουμε ένα count να δούμε.

select count(onoma) from pinakas
Τι είναι η SQL και τι μπορεί να κάνει

Pivoting (group by)

Πάμε ένα βήμα παραπέρα για να δούμε πως μπορούμε να δούμε πόσες εγγραφές έχει ο πίνακας ανά όνομα (το λεγόμενο pivoting).

Αυτό γίνεται με ένα group by στο όνομα. Απαιτείτε όμως στο select να υπάρχουν τα πεδία που είναι στο group by στην περίπτωση μας το όνομα.

select onoma,count(onoma) as 'Arithmos' from pinakas group by onoma
Τι είναι η SQL και τι μπορεί να κάνει

Πρόσθεση καινούργιου πεδίου στον πίνακα (alter table add)

Ας προσθέσουμε με ένα DDL statement το alter ένα πεδίο κειμένου για το επίθετο.

alter table pinakas add

epitheto varchar(100)
Τι είναι η SQL και τι μπορεί να κάνει

Nulls

Στην SQL ότι πεδίο είναι κενό μεταφράζεται ως NULL.

Αυτές είναι περιληπτικά οι βασικές λειτουργίες της SQL. Σύντομα θα ανέβει το άρθρο που θα περιέχει ανάλυση και για πιο προχωρημένες χρήσεις όπως: dynamic sql, cursors, common table expressions, loops, nested selects και subqueries.

Μοιράσου το

2 σκέψεις σχετικά με το "Τι είναι η SQL και τι μπορεί να κάνει"

Αφήστε μία απάντηση