ΚΕΝΤΡΟ ΠΛΗ.ΝΕ.Τ. Ν. ΦΛΩΡΙΝΑΣ

Η Δομημένη Γλώσσα Ερωτημάτων SQL

 

Μάθημα 1 - Τι Είναι η SQL

Η SQL αποτελεί μια στάνταρτ γλώσσα του ANSI για να μπορούμε να έχουμε πρόσβαση σε βάσεις δεδομένων.

Η SQL αποτελεί ένα στάνταρτ του ANSI (American National Standards Institute) για να μπορούμε να έχουμε πρόσβαση σε συστήματα βάσεων δεδομένων. Οι εντολές της SQL χρησιμοποιούνται για να ανακτήσουμε (retrieve) και να ενημερώσουμε (update) δεδομένα σε μια βάση δεδομένων (database).

Η SQL συνεργάζεται με προγράμματα βάσεων δεδομένων όπως είναι τα εξής : Access, Informix, Microsoft SQL Server, Oracle, Sybase και πολλά άλλα.

 

Μάθημα 2 - Οι Πίνακες Βάσεων Δεδομένων (Database Tables)

Οι βάσεις δεδομένων (databases) περιέχουν αντικείμενα (objects) που ονομάζονται Πίνακες (Tables). Οι Εγγραφές (Records) των δεδομένων απο-θηκεύονται σ’ αυτούς τους πίνακες. Οι Πίνακες αναγνωρίζονται με τα ονόματά τους, όπως "Persons", "Orders", "Suppliers" κ.ά.

Οι Πίνακες περιέχουν Στήλες (Columns) και Γραμμές (Rows) με δε-δομένα. Οι Γραμμές (Rows) περιέχουν εγγραφές (records), όπως μία εγγραφή για κάθε άτομο. Οι Στήλες (Columns) περιέχουν δεδομένα, όπως First Name, Last Name, Address και City.

Ακολουθεί ένα παράδειγμα ενός Πίνακα που ονομάζεται "Persons" :

LastName

FirstName

Address

City

Παπαδόπουλος

Δημήτριος

Τυρνόβου 15

Φλώρινα

Αντωνιάδης

Αντώνιος

Π. Μελά 100

Φλώρινα

Γεωργιάδης

Νικόλαος

Φον Κοζάνη 10

Κοζάνη

Τα LastName, FirstName, Address και City είναι οι Στήλες (Columns) του πίνακα. Οι Γραμμές (Rows) περιέχουν τρεις εγγραφές για τρία άτομα.

 

Μάθημα 3 - Τα Ερωτήματα της SQL (SQL Queries)

Με την SQL, μπορούμε να κάνουμε ένα ερώτημα (Query) σε μια βάση δεδομένων και να έχουμε ένα αποτέλεσμα (Result) σε μορφή πίνακα (tabu-lar form).

Ενα ερώτημα σαν το εξής :

SELECT LastName FROM Persons

θα δώσει ένα αποτέλεσμα σαν το εξής :

LastName

Παπαδόπουλος

Αντωνιάδης

Γεωργιάδης

Πρέπει να έχουμε υπόψη μας ότι μερικά συστήματα βάσεων δεδομένων απαιτούν το σύμβολο ; (semicolon) στο τέλος μιας εντολής SQL. Δεν θα χρησιμοποιήσουμε εδώ το σύμβολο ;.

 

Μάθημα 4 - Χειρισμός Δεδομένων της SQL (Data Manipulation)

Οπως υπονοεί και το όνομά της, η SQL είναι μια σύνταξη για την εκτέλεση ερωτημάτων (queries). Αλλά η γλώσσα της SQL περιλαμβάνει επίσης μια σύνταξη για την ενημέρωση εγγραφών, την εισαγωγή νέων εγγραφών και τη διαγραφή υπαρχόντων εγγραφών.

Αυτές οι εντολές ερωτημάτων και ενημέρωσης αποτελούν μαζί τη Γλώσσα Χειρισμού Δεδομένων (Data Manipulation Language, DML) που αποτελεί κομμάτι της SQL :

 

Μάθημα 5 - Ορισμός Δεδομένων της SQL (Data Definition)

Η Γλώσσα Ορισμού Δεδομένων (Data Definition Language, DDL), που αποτελεί μέρος της SQL, επιτρέπει τη δημιουργία και τη διαγραφή πινάκων μιας βάσης δεδομένων. Μπορούμε επίσης να ορίσουμε indexes (keys), να καθορίσουμε συνδέσμους (links) ανάμεσα στους πίνακες και να επιβάλλουμε περιορισμούς ανάμεσα στους πίνακες μιας βάσης δεδομένων.

Οι σημαντικότερες εντολές DDL στην SQL είναι οι εξής :

 

Μάθημα 6 - Η SQL και οι Ενεργές Σελίδες Διακομιστή

Η SQL αποτελεί ένα σημαντικό κομμάτι της ASP, επειδή το Ενεργό Αντικείμενο Δεδομένων (Active Data Object, ADO) που χρησιμοποιείται στην ASP (Active Server Pages) για να μπορούμε να έχουμε πρόσβαση σε βάσεις δεδομένων, βασίζεται στην SQL για την πρόσβαση στα δεδομένα.

 

Μάθημα 7 - Η Εντολή Select της SQL

Η εντολή SELECT επιλέγει στήλες (columns) δεδομένων από μια βάση δεδομένων. Το αποτέλεσμα αποθηκεύεται σε μορφή πίνακα και αποκαλείται result set. Την χρησιμοποιούμε για να εμφανίζουμε (επιλέγουμε) πληροφορίες από έναν πίνακα ως εξής :

SELECT ονόματα_στηλών FROM όνομα_πίνακα

Παράδειγμα : Επιλογή Στηλών από έναν Πίνακα

Για να επιλέξουμε τις στήλες "LastName" και "FirstName", χρησιμοποιούμε μια εντολή SELECT, ως εξής :

SELECT LastName, FirstName FROM Persons

Το αποτέλεσμα :

LastName

FirstName

Παπαδόπουλος

Δημήτριος

Αντωνιάδης

Αντώνιος

Γεωργιάδης

Νικόλαος

Παράδειγμα : Επιλογή όλων των Στηλών

Για να επιλέξουμε όλες τις στήλες από τον πίνακα "Person", χρησιμοποιούμε το σύμβολο * αντί για όνομα στήλης, ως εξής :

SELECT * FROM Persons

Το αποτέλεσμα :

LastName

FirstName

Address

City

Παπαδόπουλος

Δημήτριος

Τυρνόβου 15

Φλώρινα

Αντωνιάδης

Αντώνιος

Π. Μελά 100

Φλώρινα

Γεωργιάδης

Νικόλαος

Φον Κοζάνη 10

Κοζάνη

 

Μάθημα 8 - Το Where Clause της SQL

Το WHERE clause χρησιμοποιείται για να καθορίσουμε ένα κριτήριο επιλογής (selection criteria). Για να μπορέσουμε να επιλέξουμε δεδομένα υπό συνθήκη από έναν πίνακα, πρέπει να προσθέσουμε ένα WHERE clause σε μια εντολή SELECT, ως εξής :

SELECT στήλη FROM πίνακα WHERE στήλη συνθήκη τιμή

Με το WHERE clause, μπορούμε να χρησιμοποιήσουμε αυτές τις συνθήκες :

Τελεστής (Operator)

Συνθήκη (Condition)

=

Ίσο

<>

Όχι ίσο

>

Μεγαλύτερο από

<

Μικρότερο από

>=

Μεγαλύτερο από ή ίσο με

<=

Μικρότερο από ή ίσο με

LIKE

Επεξηγείται παρακάτω

Σε μερικές εκδόσεις της SQL, ο τελεστής για το όχι ίσο (<>), μπορεί να γραφεί ως εξής : !=.

Παράδειγμα : Επιλογή Ατόμων από μια Πόλη

Για να επιλέξουμε μόνο τα άτομα που κατοικούν στην πόλη Φλώρινα, προσθέτουμε ένα WHERE clause στην εντολή SELECT, ως εξής :

SELECT * FROM Persons WHERE City='Φλώρινα'

Το αποτέλεσμα :

LastName

FirstName

Address

City

Year

Παπαδόπουλος

Δημήτριος

Τυρνόβου 15

Φλώρινα

1951

Αντωνιάδης

Αντώνιος

Π. Μελά 100

Φλώρινα

1978

Εχουμε χρησιμοποιήσει μονά εισαγωγικά (single quotes) στις τιμές των συνθηκών στα παραδείγματα. Η SQL χρησιμοποιεί μονά εισαγωγικά στις αλφαριθμητικές τιμές (κείμενο). Τα περισσότερα συστήματα βάσεων δεδομένων αποδέχονται και τα διπλά εισαγωγικά (double quotes). Οι αριθμητικές τιμές δεν πρέπει να περικλείονται σε εισαγωγικά.

Για τις τιμές κειμένου (αλφαριθμητικές) :

Αυτό είναι σωστό :

SELECT * FROM Persons WHERE FirstName='Δημήτριος'

Αυτό δεν είναι σωστό :

SELECT * FROM Persons WHERE FirstName=Δημήτριος

Για τις αριθμητικές τιμές :

Αυτό είναι σωστό :

SELECT * FROM Persons WHERE Year>1965

Αυτό δεν είναι σωστό :

SELECT * FROM Persons WHERE Year>'1965'

 

Μάθημα 9 - Η Συνθήκη LIKE

Η συνθήκη LIKE χρησιμοποιείται για να καθορίσουμε μια αναζήτηση για ένα υπόδειγμα (pattern) σε μια στήλη.

Η σύνταξη είναι ως εξής :

SELECT στήλη FROM πίνακα WHERE στήλη LIKE υπόδειγμα

Μπορούμε να χρησιμοποιήσουμε το σύμβολο "%" για να ορίσουμε χαρακτήρες μπαλαντέρ (wildcards) πριν και μετά από το υπόδειγμα.

Παράδειγμα : Επιλογή Ατόμων με Υπόδειγμα Ονόματος

Η επόμενη εντολή SQL θα επιστρέψει τα άτομα που το όνομά τους αρχίζει από 'O'.

SELECT * FROM Persons WHERE FirstName LIKE 'O%'

Η επόμενη εντολή SQL θα επιστρέψει τα άτομα που το όνομά τους τελειώνει σε 'α'.

SELECT * FROM Persons WHERE FirstName LIKE '%α'

Η επόμενη εντολή SQL θα επιστρέψει τα άτομα που το όνομά τους περιέχει το 'γα'.

SELECT * FROM Persons WHERE FirstName LIKE '%γα%'

Ολα τα παραπάνω παραδείγματα θα επιστρέψουν το εξής αποτέλεσμα :

LastName

FirstName

Address

City

Year

Δημητρίου

Ολγα

Ταγμ. Ναούμ 20

Φλώρινα

1951

 

Μάθημα 10 - Οι Λογικοί Τελεστές And και Or

Τα AND και OR ενώνουν δύο ή περισσότερες συνθήκες σ’ ένα WHE-RE clause. Ο τελεστής AND εμφανίζει μια γραμμή αν ΟΛΕΣ οι συνθήκες είναι αληθείς (true), ενώ ο τελεστής OR εμφανίζει μια γραμμή αν ΟΠΟΙΑΔΗΠΟΤΕ από τις συνθήκες είναι αληθής (true).

Ο αρχικός πίνακας είναι ο εξής :

LastName

FirstName

Address

City

Παπαδόπουλος

Δημήτριος

Τυρνόβου 15

Φλώρινα

Γεωργιάδης

Αντώνιος

Π. Μελά 100

Φλώρινα

Γεωργιάδης

Νικόλαος

Ι. Καραβίτη 2

Φλώρινα

Παράδειγμα

Χρησιμοποιούμε το AND για να εμφανίσουμε αυτούς που το όνομά τους είναι "Νικόλαος" και το επώνυμό τους είναι "Γεωργιάδης" :

SELECT * FROM Persons

WHERE FirstName='Νικόλαος'

AND LastName='Γεωργιάδης'

Αποτέλεσμα :

LastName

FirstName

Address

City

Γεωργιάδης

Νικόλαος

Ι. Καραβίτη 2

Φλώρινα

Παράδειγμα

Χρησιμοποιούμε το OR για να εμφανίσουμε αυτούς που το όνομά τους είναι "Νικόλαος" ή το επώνυμό τους είναι "Γεωργιάδης" :

SELECT * FROM Persons

WHERE firstname='Νικόλαος'

OR lastname='Γεωργιάδης'

Αποτέλεσμα :

LastName

FirstName

Address

City

Γεωργιάδης

Αντώνιος

Π. Μελά 100

Φλώρινα

Γεωργιάδης

Νικόλαος

Ι. Καραβίτη 2

Φλώρινα

Παράδειγμα

Μπορούμε επίσης να συνδυάσουμε τα AND και OR, χρησιμοποιώντας παρενθέσεις για να σχηματίσουμε πολύπλοκες εκφράσεις :

SELECT * FROM Persons WHERE

(FirstName='Αντώνιος' OR FirstName='Νικόλαος')

AND LastName='Γεωργιάδης'

Αποτέλεσμα :

LastName

FirstName

Address

City

Γεωργιάδης

Αντώνιος

Π. Μελά 100

Φλώρινα

Γεωργιάδης

Νικόλαος

Ι. Καραβίτη 2

Φλώρινα

 

Μάθημα 11 - Ο Τελεστής Between ... And

Ο τελεστής BETWEEN ... AND επιλέγει μια περιοχή δεδομένων ανάμεσα σε δύο τιμές. Οι τιμές μπορεί να είναι αριθμοί, κείμενο ή ημερομηνίες.

SELECT όνομα_στήλης FROM όνομα_πίνακα

WHERE όνομα_στήλης

BETWEEN τιμή1 AND τιμή2

Αρχικός πίνακας :

LastName

FirstName

Address

City

Παπαδόπουλος

Δημήτριος

Τυρνόβου 15

Φλώρινα

Γεωργιάδης

Αντώνιος

Π. Μελά 100

Φλώρινα

Γεωργιάδης

Νικόλαος

Ι. Καραβίτη 2

Φλώρινα

Μαρκόπουλος

Νικόλαος

Φον Κάραγιαν 20

Κοζάνη

Παράδειγμα

Για να εμφανίσουμε τα άτομα που βρίσκονται αλφαβητικά ανάμεσα στους "Γεωργιάδης" και "Μαρκόπουλος", αλλά και να τους περιλαμβάνουν :

SELECT * FROM Persons WHERE LastName

BETWEEN 'Γεωργιάδης' AND 'Μαρκόπουλος'

Αποτέλεσμα :

LastName

FirstName

Address

City

Γεωργιάδης

Αντώνιος

Π. Μελά 100

Φλώρινα

Γεωργιάδης

Νικόλαος

Ι. Καραβίτη 2

Φλώρινα

Μαρκόπουλος

Νικόλαος

Φον Κάραγιαν 20

Κοζάνη

Παράδειγμα

Για να εμφανίσουμε τα άτομα που βρίσκονται έξω από την περιοχή που χρησιμοποιήσαμε στο προηγούμενο παράδειγμα, χρησιμοποιούμε τον τελεστή NOT :

SELECT * FROM Persons WHERE LastName

NOT BETWEEN 'Γεωργιάδης' AND 'Μαρκόπουλος'

Αποτέλεσμα :

LastName

FirstName

Address

City

Παπαδόπουλος

Δημήτριος

Τυρνόβου 15

Φλώρινα

 

Μάθημα 12 - Η Λέξη Κλειδί Distinct

Η λέξη κλειδί DISTINCT χρησιμοποιείται για να επιστρέφει μόνο διακριτές (διαφορετικές) (distinct, different) τιμές. Η εντολή SELECT της SQL επιστρέφει στοιχεία από τις στήλες ενός πίνακα, αλλά τι μπορούμε να κάνουμε αν θέλουμε να επιλέξουμε μόνο διακριτά στοιχεία (distinct eleme-nts);

Στην SQL, αυτό που πρέπει να κάνουμε είναι να προσθέσουμε μια λέξη κλειδί DISTINCT στην εντολή SELECT, ως εξής :

SELECT DISTINCT ονόματα_στηλών FROM όνομα_πίνακα

Παράδειγμα

Επιλογή εταιρειών από έναν πίνακα παραγγελιών.

Ενας απλός πίνακας παραγγελιών :

Company

OrderNumber

Line Computers

3412

Sony

2312

Algorithm

4678

Sony

6798

Η επόμενη εντολή SQL :

SELECT Company FROM Orders

θα δώσει αυτό το αποτέλεσμα :

Company

Line Computers

Sony

Algorithm

Sony

Βλέπουμε ότι η εταιρεία Sony εμφανίζεται δύο φορές στο αποτέλεσμα. Μερικές φορές δεν το θέλουμε αυτό.

Παράδειγμα

Επιλογή ξεχωριστών εταιρειών από έναν πίνακα παραγγελιών.

Η επόμενη εντολή SQL :

SELECT DISTINCT Company FROM Orders

θα δώσει αυτό το αποτέλεσμα :

Company

Line Computers

Sony

Algorithm

Τώρα η εταιρεία Sony εμφανίζεται μόνο μία φορά στο αποτέλεσμα.

 

Μάθημα 13 - Η Λέξη Κλειδί Order By

Η λέξη κλειδί ORDER BY χρησιμοποιείται για να ταξινομήσει το αποτέλεσμα. Το ORDER BY clause χρησιμοποιείται για να ταξινομήσει τις γραμμές.

Πίνακας Παραγγελίες :

Company

OrderNumber

Digital Shop

3412

ABC Shop

5678

Sony

2312

Sony

6798

Παράδειγμα

Για να εμφανίσουμε τις εταιρείες σε αλφαβητική σειρά :

SELECT Company, OrderNumber FROM Orders

ORDER BY Company

Αποτέλεσμα :

Company

OrderNumber

ABC Shop

5678

Digital Shop

3412

Sony

6798

Sony

2312

Παράδειγμα

Για να εμφανίσουμε τις εταιρείες σε αλφαβητική σειρά ΚΑΙ (AND) τις παραγγελίες σε αριθμητική σειρά :

SELECT Company, OrderNumber FROM Orders

ORDER BY Company, OrderNumber

Αποτέλεσμα :

Company

OrderNumber

ABC Shop

5678

Digital Shop

3412

Sony

2312

Sony

6798

Παράδειγμα

Για να εμφανίσουμε τις εταιρείες σε αντίστροφη αλφαβητική σειρά (reverse alphabetical order) :

SELECT Company, OrderNumber FROM Orders

ORDER BY Company DESC

Αποτέλεσμα :

Company

OrderNumber

Sony

2312

Sony

6798

Digital Shop

3412

ABC Shop

5678

 

Μάθημα 14 - Ασκηση σε SQL

Δημιουργείστε έναν πίνακα με όνομα Customers σε μια βάση δεδομένων με τις εξής στήλες :

CompanyName

ContactName

Address

City

Καταχωρείστε στοιχεία στον πίνακα και δοκιμάστε τις εξής εντολές της SQL :

SELECT * FROM customers

SELECT CompanyName, ContactName

FROM customers

SELECT * FROM customers

WHERE companyname LIKE 'α%'

SELECT CompanyName, ContactName

FROM customers

WHERE CompanyName > 'γ'

AND ContactName > 'γ'

 

Μάθημα 15 - Η Εντολή INSERT INTO

Η εντολή INSERT INTO εισάγει νέες γραμμές σ’ έναν πίνακα. Η σύνταξή της είναι ως εξής :

INSERT INTO όνομα_πίνακα

VALUES (τιμή1, τιμή2, ...)

Μπορούμε επίσης να καθορίσουμε τις στήλες για τις οποίες θέλουμε να εισάγουμε δεδομένα :

INSERT INTO όνομα_πίνακα(στήλη1, στήλη2, ...)

VALUES (τμή1, τιμή2, ...)

Ο επόμενος πίνακας "Persons" :

LastName

FirstName

Address

City

Σουμπάση

Μαρία

Καλλέργη 15

Φλώρινα

και αυτή η εντολή SQL :

INSERT INTO Persons

VALUES ('Σιάμκουρης', 'Ιωάννης', 'Π. Μελά 90', 'Καστοριά')

δίνουν αυτό το αποτέλεσμα :

LastName

FirstName

Address

City

Σουμπάση

Μαρία

Καλλέργη 15

Φλώρινα

Σιάμκουρης

Ιωάννης

Π. Μελά 90

Καστοριά

Εισαγωγή Δεδομένων σε Συγκεκριμένες Στήλες

Ο επόμενος πίνακας "Persons" :

LastName

FirstName

Address

City

Σουμπάση

Μαρία

Καλλέργη 15

Φλώρινα

Σιάμκουρης

Ιωάννης

Π. Μελά 90

Καστοριά

και η επόμενη εντολή SQL :

INSERT INTO Persons (LastName, Address)

VALUES ('Νικολάου', 'Ταγμ. Ναούμ 30')

δίνουν αυτό το αποτέλεσμα :

LastName

FirstName

Address

City

Σουμπάση

Μαρία

Καλλέργη 15

Φλώρινα

Σιάμκουρης

Ιωάννης

Π. Μελά 90

Καστοριά

Νικολάου

 

Ταγμ. Ναούμ 30

 

 

Μάθημα 16 - Η Εντολή Update

Η εντολή UPDATE ενημερώνει ή αλλάζει γραμμές. Η σύνταξή της είναι ως εξής :

UPDATE όνομα_πίνακα SET όνομα_στήλης=νέα_τιμή

WHERE όνομα_στήλης=τιμή

Αρχικός πίνακας Person :

LastName

FirstName

Address

City

Σουμπάση

Μαρία

Καλλέργη 15

Φλώρινα

Σιάμκουρης

Ιωάννης

Π. Μελά 90

Καστοριά

Νικολάου

 

Ταγμ. Ναούμ 30

 

Ενημέρωση μίας Στήλης σε μια Γραμμή

Θέλουμε να προσθέσουμε ένα όνομα στο άτομο που έχει το επώνυμο "Νικολάου" :

UPDATE Person SET FirstName = 'Αθηνά'

WHERE LastName = 'Νικολάου'

Ενημέρωση Πολλών Στηλών σε μια Γραμμή

Για το ίδιο άτομο θέλουμε να αλλάξουμε τη διεύθυνση και να προσθέσουμε ένα όνομα για την πόλη :

UPDATE Person

SET Address = 'Μεγαρόβου 12', City ='Φλώρινα'

WHERE LastName = 'Νικολάου'

Αποτέλεσμα :

LastName

FirstName

Address

City

Σουμπάση

Μαρία

Καλλέργη 15

Φλώρινα

Σιάμκουρης

Ιωάννης

Π. Μελά 90

Καστοριά

Νικολάου

Αθηνά

Μεγαρόβου 12

Φλώρινα

 

Μάθημα 17 - Η Εντολή Delete

Η εντολή DELETE χρησιμοποιείται για να διαγράψουμε γραμμές από έναν πίνακα. Η σύνταξή της είναι ως εξής :

DELETE FROM όνομα_πίνακα

WHERE όνομα_στήλης = τιμή

Αρχικός πίνακας Person :

LastName

FirstName

Address

City

Σουμπάση

Μαρία

Καλλέργη 15

Φλώρινα

Σιάμκουρης

Ιωάννης

Π. Μελά 90

Καστοριά

Νικολάου

Αθηνά

Μεγαρόβου 12

Φλώρινα

Διαγραφή μιας Γραμμής

Θα διαγράψουμε την "Νικολάου Αθηνά" :

DELETE FROM Person WHERE LastName = 'Νικολάου'

Αποτέλεσμα :

LastName

FirstName

Address

City

Σουμπάση

Μαρία

Καλλέργη 15

Φλώρινα

Σιάμκουρης

Ιωάννης

Π. Μελά 90

Καστοριά

 

Μάθημα 18 - Οι Συναρτήσεις Count της SQL

Η SQL έχει ενσωματωμένες συναρτήσεις για τη μέτρηση (counting) των εγγραφών μιας βάσης δεδομένων.

Η σύνταξη για τις ενσωματωμένες συναρτήσεις COUNT είναι η εξής :

SELECT COUNT(στήλη) FROM πίνακας

Η Συνάρτηση COUNT(*)

Η συνάρτηση COUNT(*) επιστρέφει τον αριθμό των επιλεγμένων γραμμών από μια επιλογή (selection).

Μ’ αυτόν τον πίνακα "Persons" :

Name

Age

Αντωνιάδης Ηλίας

34

Μάρκου Ιωάννης

45

Ιωάννου Γεώργιος

19

Το επόμενο παράδειγμα επιστρέφει τον αριθμό των γραμμών του πίνακα :

SELECT COUNT(*) FROM Persons

Αποτέλεσμα : 3

Το επόμενο παράδειγμα επιστρέφει τον αριθμό των ατόμων που είναι πάνω από 20 χρονών :

SELECT COUNT(*) FROM Persons where Age>20

Αποτέλεσμα : 2

Η Συνάρτηση COUNT(column)

Η συνάρτηση COUNT(column) επιστρέφει τον αριθμό των γραμμών χωρίς τιμή NULL στη συγκεκριμένη στήλη.

Μ’ αυτόν τον πίνακα "Persons" :

Name

Age

Αντωνιάδης Ηλίας

34

Μάρκου Ιωάννης

45

Ιωάννου Γεώργιος

 

Το επόμενο παράδειγμα βρίσκει τον αριθμό των ατόμων που έχουν τιμή στο πεδίο "Age" του πίνακα "Persons" :

SELECT COUNT(Age) FROM Persons

Αποτέλεσμα : 2

Η συνάρτηση COUNT(column) είναι χρήσιμη για να βρίσκουμε τις στήλες που δεν έχουν τιμή. Το αποτέλεσμα είναι κατά ένα λιγότερο από τον αριθμό των γραμμών του αρχικού πίνακα επειδή ένα από τα άτομα δεν έχει τιμή στο πεδίο age.

 

Μάθημα 19 - Οι Λέξεις Κλειδιά COUNT και DISTINCT

Οι λέξεις κλειδιά DISTINCT και COUNT μπορούν να χρησιμοποιηθούν μαζί για να μετρήσουμε τον αριθμό των διακριτών αποτελεσμάτων (di-stinct results).

Η σύνταξη είναι ως εξής :

SELECT DISTINCT COUNT(στήλες) FROM πίνακας

Με τον επόμενο πίνακα "Orders" :

Company

OrderNumber

Hitachi

3412

Sony

2312

ABC

4678

Sony

6798

Η επόμενη εντολή SQL :

SELECT COUNT(Company) FROM Orders

θα δώσει αυτό το αποτέλεσμα : 4

Η επόμενη εντολή SQL :

SELECT DISTINCT COUNT(Company) FROM Orders

θα δώσει αυτό το αποτέλεσμα : 3

 

Μάθημα 20 - Οι Συναρτήσεις της SQL

Η SQL έχει πολλές ενσωματωμένες συναρτήσεις για να μπορούμε να κάνουμε μετρήσεις (counting) και υπολογισμούς (calculations).

Η γενική σύνταξη για τις ενσωματωμένες συναρτήσεις της SQL είναι η εξής :

SELECT function(στήλη) FROM πίνακας

Ο αρχικός πίνακας :

Name

Age

Αντωνιάδης Ηλίας

34

Μάρκου Ιωάννης

45

Ιωάννου Γεώργιος

19

Η Συνάρτηση AVG(column)

Η συνάρτηση AVG επιστρέφει τη μέση τιμή μιας στήλης σε μια επιλογή. Οι τιμές NULL δεν περιλαμβάνονται στους υπολογισμούς.

Το επόμενο παράδειγμα επιστρέφει τον μέσο όρο ηλικίας των ατόμων που υπάρχουν στον πίνακα "Persons" :

SELECT AVG(Age) FROM Persons

Αποτέλεσμα : 32.67

Το επόμενο παράδειγμα επιστρέφει τον μέσο όρο ηλικίας των ατόμων που είναι πάνω από 20 χρονών :

SELECT AVG(Age) FROM Persons where Age>20

Αποτέλεσμα : 39.5

Η Συνάρτηση MAX(column)

Η συνάρτηση MAX επιστρέφει την μεγαλύτερη τιμή μιας στήλης. Οι τιμές NULL δεν περιλαμβάνονται στον υπολογισμό.

Παράδειγμα

SELECT MAX(Age) FROM Persons

Αποτέλεσμα : 45

Η Συνάρτηση MIN(column)

Η συνάρτηση MIN επιστρέφει την μικρότερη τιμή μιας στήλης. Οι τιμές NULL δεν περιλαμβάνονται στον υπολογισμό.

Παράδειγμα

SELECT MIN(Age) FROM Persons

Αποτέλεσμα : 19

Οι συναρτήσεις MIN και MAX μπορούν επίσης να χρησιμοποιηθούν σε στήλες που περιέχουν κείμενο (text), για να βρούμε την μεγαλύτερη ή μικρότερη τιμή σε αλφαβητική σειρά.

Η Συνάρτηση SUM(column)

Η συνάρτηση SUM επιστρέφει το άθροισμα μιας στήλης για μια συγκεκριμένη επιλογή (selection). Οι τιμές NULL δεν περιλαμβάνονται στον υπολογισμό.

Παράδειγμα

Το παρακάτω παράδειγμα επιστρέφει το άθροισμα όλων των ηλικιών του πίνακα "person" :

SELECT SUM(Age) FROM Persons

Αποτέλεσμα : 98

Παράδειγμα

Το παρακάτω παράδειγμα επιστρέφει το άθροισμα των ηλικιών του πίνακα "person" για τα άτομα που είναι πάνω από 20 χρονών :

SELECT SUM(Age) FROM Persons where Age>20

Αποτέλεσμα : 79

 

Μάθημα 21 - Η Λέξη Κλειδί Group By

Η λέξη κλειδί GROUP BY έχει προστεθεί στην SQL επειδή οι αθροιστικές συναρτήσεις (aggregate functions), όπως είναι η SUM, επιστρέφουν το σύνολο όλων των τιμών μιας στήλης κάθε φορά που καλούνται.

Χωρίς την λέξη κλειδί GROUP BY, το να βρούμε το άθροισμα για κά-θε ανεξάρτητη ομάδα τιμών μιας στήλης θα ήταν αδύνατο.

Η σύνταξη της GROUP BY είναι η εξής :

SELECT στήλη, SUM(στήλη) FROM πίνακας GROUP BY στήλη

Παράδειγμα με GROUP BY

Ο παρακάτω πίνακας "Sales" :

Company

Amount

Grundig

5500

IBM

4500

Grundig

7100

και αυτή η εντολή SQL :

SELECT Company, SUM(Amount) FROM Sales

θα δώσουν αυτό το αποτέλεσμα :

Company

SUM(Amount)

Grundig

17100

IBM

17100

Grundig

17100

Ο παραπάνω κώδικας δεν είναι έγκυρος επειδή η στήλη που επιστρέφει δεν αποτελεί μέρος ενός αθροίσματος (aggregate). Ένα GROUP BY clause μπορεί να το διορθώσει αυτό, ως εξής :

SELECT Company, SUM(Amount) FROM Sales

GROUP BY Company

και θα δώσει αυτό το αποτέλεσμα :

Company

SUM(Amount)

Grundig

12600

IBM

4500

 

Μάθημα 22 - Η Λέξη Κλειδί HAVING

Η λέξη κλειδί HAVING έχει προστεθεί στην SQL επειδή η λέξη κλειδί WHERE δεν μπορεί να χρησιμοποιηθεί σε αθροιστικές συναρτήσεις, όπως είναι η SUM.

Η σύνταξη της συνάρτησης HAVING είναι η εξής :

SELECT στήλη, SUM(στήλη) FROM πίνακας

GROUP BY στήλη

HAVING SUM(στήλη) συνθήκη

Ο παρακάτω πίνακας "Sales" :

Company

Amount

Grundig

5500

IBM

4500

Grundig

7100

και αυτή η εντολή SQL :

SELECT Company, SUM(Amount) FROM Sales

GROUP BY Company HAVING SUM(Amount)>10000

θα δώσουν αυτό το αποτέλεσμα :

Company

SUM(Amount)

Grundig

12600

 

Μάθημα 23 - Τα Ψευδώνυμα (Aliases)

Στην SQL, τα ψευδώνυμα (aliases) χρησιμοποιούνται για ονόματα στηλών και πινάκων.

Ψευδώνυμο Στήλης (Column Name Alias)

Η σύνταξη είναι ως εξής :

SELECT στήλη AS column_alias FROM πίνακας

Ψευδώνυμο Πίνακα (Table Name Alias)

Η σύνταξη είναι ως εξής :

SELECT στήλη FROM πίνακας AS table_alias

Παράδειγμα με Column Alias

Ο επόμενος πίνακας Persons :

LastName

FirstName

Address

City

Σουμπάση

Μαρία

Καλλέργη 15

Φλώρινα

Σιάμκουρης

Ιωάννης

Π. Μελά 90

Καστοριά

Νικολάου

Αθηνά

Μεγαρόβου 12

Φλώρινα

και η εξής εντολή SQL :

SELECT LastName AS Family, FirstName AS Name

FROM Persons

δίνουν αυτό το αποτέλεσμα :

Family

Name

Σουμπάση

Μαρία

Σιάμκουρης

Ιωάννης

Νικολάου

Αθηνά

Παράδειγμα με Table Alias

Ο επόμενος πίνακας Persons :

LastName

FirstName

Address

City

Σουμπάση

Μαρία

Καλλέργη 15

Φλώρινα

Σιάμκουρης

Ιωάννης

Π. Μελά 90

Καστοριά

Νικολάου

Αθηνά

Μεγαρόβου 12

Φλώρινα

και η εξής εντολή SQL :

SELECT LastName, FirstName

FROM Persons AS Employees

δίνουν αυτό το αποτέλεσμα :

LastName

FirstName

Σουμπάση

Μαρία

Σιάμκουρης

Ιωάννης

Νικολάου

Αθηνά

 

Μάθημα 24 - Ενωση Πινάκων (Join)

Μερικές φορές πρέπει να επιλέξουμε δεδομένα από δύο πίνακες για να δημιουργήσουμε ένα πιο πολύπλοκο αποτέλεσμα. Θα πρέπει να κάνουμε μια ένωση (join).

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

Στον πίνακα "Employees" παρακάτω, η στήλη "ID" είναι το πρωτεύον κλειδί (primary key), που σημαίνει ότι δεν μπορούν να υπάρχουν δύο γραμμές που να έχουν το ίδιο ID. Το ID είναι αυτό που ξεχωρίζει δύο άτομα ακόμη κι αν έχουν το ίδιο όνομα.

Στους πίνακες παραδειγμάτων παρακάτω, προσέχουμε τα εξής :

Πίνακας Employees :

ID

Name

01

Νικολάου Αθηνά

02

Γεωργιάδης Ηλίας

03

Παπαδόπουλος Στέφανος

04

Σουμπάσης Ιωάννης

Πίνακας Orders :

ID

Product

01

Printer

03

Computer

03

Scanner

Παράδειγμα

Ποιοι έχουν παραγγείλει προϊόντα και τι έχουν παραγγείλει;

SELECT Employees.Name, Orders.Product

FROM Employees, Orders

WHERE Employees.ID = Orders.ID

Αποτέλεσμα :

Name

Product

Νικολάου Αθηνά

Printer

Παπαδόπουλος Στέφανος

Computer

Παπαδόπουλος Στέφανος

Scanner

Παράδειγμα

Ποιοι έχουν παραγγείλει εκτυπωτή (printer);

SELECT Employees.Name

FROM Employees, Orders

WHERE Employees.ID = Orders.ID

AND Orders.Product = 'Printer'

Αποτέλεσμα :

Name

Νικολάου Αθηνά

 

Μάθημα 25 - Δημιουργία Βάσης Δεδομένων και Πίνακα

Για να δημιουργήσουμε μια βάση δεδομένων, μπορούμε να δώσουμε την εξής εντολή :

CREATE DATABASE όνομα_βάσης_δεδομένων

Για να δημιουργήσουμε έναν πίνακα σε μια βάση δεδομένων, μπορούμε να δώσουμε την εξής εντολή :

CREATE TABLE όνομα_πίνακα

(

όνομα_στήλης_1 τύπος_δεδομένων,

όνομα_στήλης_2 τύπος_δεδομένων,

)

Παράδειγμα

Θα δημιουργήσουμε έναν πίνακα με όνομα "Person", με τέσσερις στήλες με ονόματα "LastName", "FirstName", "Address" και "Age" :

CREATE TABLE Person

(

LastName varchar,

FirstName varchar,

Address varchar,

Age number

)

Θα ορίσουμε ένα μέγιστο μήκος για μερικές στήλες :

CREATE TABLE Person

(

LastName varchar(30),

FirstName varchar,

Address varchar,

Age number(3)

)

Ο τύπος δεδομένων (data type) καθορίζει τι είδος δεδομένων θα περιέχει η στήλη. Ο παρακάτω πίνακας περιέχει τους πιο συνηθισμένους τύπους δεδομένων της SQL :

Τύπος Δεδομένων

(Data Type)

Περιγραφή (Description)

char(size)

Περιέχει ένα string σταθερού μήκους που μπορεί να περιέχει γράμματα, αριθμούς και ειδικούς χαρακτήρες. Το σταθερό μέγεθος καθορίζεται στις παρενθέσεις.

varchar(size)

Περιέχει ένα string μεταβλητού μήκους που μπορεί να περιέχει γράμματα, αριθμούς και ειδικούς χαρακτήρες. Το μέγιστο μέγεθος καθορίζεται στις παρενθέσεις.

number(size)

Περιέχει έναν αριθμό, όπου ο μέγιστος αριθμός των ψηφίων καθορίζεται στις παρενθέσεις.

number(size, d)

Περιέχει έναν αριθμό, όπου ο μέγιστος αριθμός των ψηφίων καθορίζεται στο size και ο μέγιστος αριθμός των ψηφίων στα δεξιά της υποδιαστολής καθορίζεται στο d.

date

Περιέχει μια ημερομηνία.

 

Μάθημα 26 - Διαγραφή Βάσης Δεδομένων και Πίνακα

Για να διαγράψουμε μια βάση δεδομένων, χρησιμοποιούμε την εξής εντολή :

DROP DATABASE όνομα_βάσης_δεδομένων

Για να διαγράψουμε έναν πίνακα, χρησιμοποιούμε την εξής εντολή :

DROP TABLE όνομα_πίνακα

Για να διαγράψουμε τα δεδομένα ενός πίνακα χωρίς να διαγράψουμε τον πίνακα, χρησιμοποιούμε την εξής εντολή :

DELETE TABLE όνομα_πίνακα

 

Μάθημα 27 - Η Εντολή Alter Table

Η εντολή ALTER TABLE χρησιμοποιείται για να προσθέσουμε ή να διαγράψουμε στήλες από έναν υπάρχοντα πίνακα.

Η σύνταξή της για τις δύο αυτές περιπτώσεις είναι ως εξής :

ALTER TABLE όνομα_πίνακα ADD όνομα_στήλης τύπος_δεδομένων

ALTER TABLE όνομα_πίνακα DROP όνομα_στήλης

Πίνακας Person :

LastName

FirstName

Address

Σταύρου

Μαρίνα

Σαρανταπόρου 10

Παράδειγμα

Για να προσθέσουμε μια στήλη με όνομα "City" στον πίνακα "Person", δίνουμε την εξής εντολή :

ALTER TABLE Person ADD City varchar(30)

Αποτέλεσμα :

LastName

FirstName

Address

City

Σταύρου

Μαρίνα

Σαρανταπόρου 10

 

Παράδειγμα

Για να διαγράψουμε (drop) τη στήλη "Address" του πίνακα "Person", δίνουμε την εξής εντολή :

ALTER TABLE Person DROP Address

Αποτέλεσμα :

LastName

FirstName

City

Σταύρου

Μαρίνα

 

 

back.gif (9867 bytes)

Επιστροφή