ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3

Σχετικά έγγραφα
Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

Τμήμα Πληροφορικής ΑΠΘ

Σχεδιασμός Βάσεων Δεδομένων

Διαχείριση Πολιτισμικών Δεδομένων

Τμήμα Διοίκησης Επιχειρήσεων

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

Τμήμα Πληροφορικής ΑΠΘ

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 3ο Μάθημα: Εισαγωγή στην SQL. Δρ. Κωνσταντίνος Χ.

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

Τεχνολογία Πολιτισμικού Λογισμικού


ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη

Η SQL ως γλώσσα ερωτημάτων. Υπενθυμίζουμε: Σχέση = Πίνακας Πλειάδα = Εγγραφή = Γραμμή (Πίνακα) Πεδίο = Γνώρισμα (Σχέσης) = Στήλη (Πίνακα)

ΗΓλώσσαSQL. Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Ηλεκτρονικοί Υπολογιστές II

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

Βάσεις δεδομένων. (7 ο μάθημα) Ηρακλής Βαρλάμης

Το σχεσιακό μοντέλο βάσεων δεδομένων

Βάσεις Δεδομένων Ι SQL Μέρος 1 ο. Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εισαγωγή στην πληροφορική

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 4 7/02/2012

Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

Τμήμα Πληροφορικής ΑΠΘ


Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση

SQL Data Manipulation Language

SQL Τύποι Δεδομένων Δημιουργία Πίνακα Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL)

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Ηλεκτρονικοί Υπολογιστές II

SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εργαστήριο Βάσεων Δεδομένων

Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης

SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 5: SQL (Απλή SELECT) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

Η Γλώσσα SQL. Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων

GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP.

Ανοικτά Ακαδημαϊκά Μαθήματα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

Βάσεις Δεδομένων. Ενότητα 6: Γλώσσα Structured Query Language -SQL. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

Βάσεις Δεδομένων. Εισαγωγή για το Εργαστήριο. Δρ. Τιάκας Ελευθέριος. Τμήμα Πληροφορικής ΑΠΘ

Σύβακας Σταύρος ΠΕ19,MSc. IT ΣΥΒΑΚΑΣ ΣΤΑΥΡΟΣ ΕΡΩΤΗΜΑΤΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #6

Βάσεις Δεδομένων. Εργαστήριο ΙV. Τμήμα Πληροφορικής ΑΠΘ

Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων

Βάσεις Δεδομένων (Databases)

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Δεδομένων. Βασίλειος Βεσκούκης Ορισμός Βάσης Δεδομένων Δομή Περιορισμοί

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 5: SQL

Σχεδίαση Βάσεων Δεδομένων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 6: SQL (Συζεύξεις, Εμφώλευση, Ομαδοποίηση) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Διάλεξη 13: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) I. Διδάσκων: Παναγιώτης Ανδρέου

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

Βάσεις Δεδομένων. Ενότητα 7.1: Structured Query Language - 1 ο Μέρος. Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων

1 / 97

(Μέρος 3:Γλώσσα Ορισµού, Γλώσσα Τροποποίησης, Ενσωµατωµένη SQL) Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. Βάσεις Δεδομένων

Η γλώσσα SQL. Βάσεις Δεδομένων : SQL 1

DELETE, UPDATE, INSERT

SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

1 / 87

Η SQL ως γλώσσα τροποποίησης Δεδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

Ενεργές ΒΔ. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Βάσεις Δεδομένων Ενεργές ΒΔ 1

Παράδειγμα Insert Update Delete Alter.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (2)

SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Βάσεις Δεδομένων. Ενότητα 7.2: Structured Query Language - 2 ο Μέρος. Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3 ΔΕΣΠΟΙΝΑ ΠΑΠΑΚΩΝΣΤΑΝΤΙΝΟΥ dpap@unipi.gr

2 ΤΙ ΕΙΝΑΙ Η SQL? (1/2) Η SQL (Structured Query Language) αποτελεί μια πρότυπη γλώσσα ορισμού και χειρισμού δεδομένων για Σχεσιακά Συστήματα Διαχείρισης Βάσεων Δεδομένων, ουσιαστικά είναι μια σχεσιακή γλώσσα βάσεων δεδομένων. Οι εντολές της SQL χρησιμοποιούνται για να ανακτήσουμε (retrieve) και να ενημερώσουμε (update) δεδομένα σε μια ΒΔ. Αποτελεί ένας από τους βασικούς λόγους επικράτησης των σχεσιακών ΒΔ, ενώ εξασφαλίζει μεταφερσιμότητα μεταξύ των σχεσιακών Συστημάτων Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ). Η SQL συνεργάζεται με πολλά ΣΔΒΔ όπως είναι τα εξής : το DB2 της IBM, το Oracle της Oracle Corporation, το Sybase της Sybase Corporation, το SQL Server της Microsoft και πολλά άλλα, η MySQL.

3 ΤΙ ΕΙΝΑΙ Η SQL? (2/2) Η SQL μπορεί να εκτελέσει ερωτήματα (queries) σχετικά με μια βάση δεδομένων. Μπορεί να ανακτήσει δεδομένα από μια βάση δεδομένων. Μπορεί να εισαγάγει νέες εγγραφές σε μια βάση δεδομένων. Μπορεί να διαγράψει εγγραφές από μια βάση δεδομένων. Μπορεί να ενημερώσει εγγραφές σε μια βάση δεδομένων. Η SQL είναι πολύ εύκολη στην εκμάθηση. Κάνει επεξεργασία πινάκων, αφού οι εντολές ερωτημάτων και ενημερώσεων (εισαγωγή, τροποποίηση, διαγραφή) εφαρμόζονται επί πινάκων των βάσεων δεδομένων και παράγουν ως αποτελέσματα πίνακες.

4 SQL ΟΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ (1/4) Ορολογία Πίνακας (table) σχέση Γραμμή (row) πλειάδα Στήλη (column) - γνώρισμα Επιπλέον έννοιες: ΣΧΗΜΑ (schema) - ομαδοποιούνται πίνακες και άλλα δομικά στοιχεία που αναφέρονται στην ίδια βάση δεδομένων, όπως όψεις, δικαιώματα, κτλ. Κάθε σχήμα έχει ένα όνομα και κάποια ταυτότητα εξουσιοδότησης. Στην ORACLE για κάθε λογαριασμό ομάδας ορίζεται αυτόματα και ένα δικό της σχήμα, δηλαδή κάθε ομάδα δουλεύει σε ένα δικό της σχήμα, ώστε να δουλεύει σε μια δικιά της ΒΔ.

5 SQL ΟΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ (2/4) Ορισμός Σχημάτων αφορά στην ομαδοποίηση των δομικών στοιχείων μιας ΒΔ, μεταξύ των οποίων περιλαμβάνονται οι πίνακες, οι θεωρήσεις, τα πεδία ορισμού και άλλα στοιχεία όπως δικαιώματα χρήσης. Δημιουργία Σχημάτων: CREATE SCHEMA <όνομα σχήματος> AUTHORIZATION <αναγνωριστικό όνομα ιδιοκτήτη σχήματος> π.χ. CREATE SCHEMA ORDERITEM AUTHORIZATION DPAP; δημιουργούμε το σχήμα μιας βάσης δεδομένων με το όνομα ORDERITEM, ο ιδιοκτήτης της οποίας είναι ο χρήστης με το αναγνωριστικό όνομα DPAP.

6 SQL ΟΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ (3/4) Διαγραφή Σχημάτων: DROP SCHEMA <όνομα σχήματος> CASCADE RESTRICT Η εντολή CASCADE σημαίνει ότι μαζί με το σχήμα διαγράφονται και όλα τα αντικείμενα της ΒΔ, όπως πίνακες και θεωρήσεις, ενώ η εντολή RESTRICT σημαίνει ότι το σχήμα της ΒΔ θα διαγραφεί εφόσον δεν έχει οριστεί κανένα αντικείμενο σε αυτή. π.χ. DROP SCHEMA ORDERITEM CASCADE; DROP SCHEMA ORDERITEM RESTRICT; Δημιουργία Πινάκων: CREATE TABLE <όνομα πίνακα> (<όνομα στήλης> <τύπος δεδομένων>,, <όνομα στήλης> <τύπος δεδομένων>) [περιορισμοί ακεραιότητας δεδομένων] π.χ. CREATE TABLE ITEM (ITEM_CODE CHAR(8) NOT NULL, ITEM_NAME VARCHAR(25), PRIMARY KEY (ITEM_CODE)); ΠΡΟΣΟΧΗ: ΤΑ ΠΡΩΤΕΥΟΝΤΑ ΚΛΕΙΔΙΑ ΤΩΝ ΠΙΝΑΚΩΝ ΔΕΝ ΜΠΟΡΟΥΝ ΝΑ ΠΑΙΡΝΟΥΝ ΚΕΝΕΣ ΤΙΜΕΣ, ΠΡΕΠΕΙ ΝΑ ΔΗΛΩΝΟΝΤΑΙ NOT NULL, ΣΕ ΑΝΤΙΘΕΣΗ ΜΕ ΤΑ ΑΠΛΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΠΟΥ ΕΧΟΥΝ ΑΥΤΗ ΤΗ ΔΥΝΑΤΟΤΗΤΑ.

7 SQL ΟΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ (4/4) Διαγραφή Πινάκων: DROP TABLE <όνομα πίνακα> CASCADE RESTRICT Η εντολή CASCADE σημαίνει ότι μαζί με τον πίνακα διαγράφονται και όλα τα αντικείμενα που σχετίζονται με αυτόν, όπως θεωρήσεις, ενώ η εντολή RESTRICT σημαίνει ότι ο πίνακας θα διαγραφεί εφόσον δεν έχει οριστεί κανένα αντικείμενο σε αυτόν. π.χ. DROP TABLE ITEM CASCADE; DROP TABLE ITEM RESTRICT; Τροποποίηση Πινάκων: η τροποποίηση μπορεί να αφορά στην πρόσθεση ή στη διαγραφή στήλης (χαρακτηριστικού), στην τροποποίηση του ορισμού μιας στήλης κτλ. ALTER TABLE <όνομα πίνακα> <επιθυμητή ενέργεια> π.χ. ALTER TABLE ITEM ADD ITEM_QUANTITY INT; ALTER TABLE ITEM DROP ITEM_QUANTITY INT; ALTER TABLE ITEM ALTER ITEM_SERIALNUMBER CHAR(15);

8 SQL ΧΕΙΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ Η SQL παρέχει τη δυνατότητα εκτέλεσης των πράξεων ανάκτησης και μεταβολής των περιεχομένων των πινάκων μιας ΒΔ. Οι εντολές αυτές είναι οι εξής: SELECT ανάκτηση γραμμών πινάκων INSERT εισαγωγή γραμμών πινάκων UPDATE τροποποίηση γραμμών πινάκων DELETE διαγραφή γραμμών πινάκων

9 ΧΕΙΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ SELECT (1/7) Σύνταξη: SELECT <όνομα στήλης 1, όνομα στήλης Ν> * FROM <όνομα πίνακα> π.χ. SELECT * FROM BOOK; //επιθυμούμε όλες τις στήλες του πίνακα SELECT ITEM_CODE, ITEM_NAME FROM ITEM; SELECT ΜΕ ΣΥΝΘΗΚΗ: SELECT <όνομα στήλης 1, όνομα στήλης Ν> * FROM <όνομα πίνακα> WHERE <συνθήκη> π.χ. SELECT * FROM ITEM WHERE ITEM_NAME = ΟΘΟΝΗ OR ITEM_NAME = ΠΟΝΤΙΚΙ OR ITEM_NAME = ΠΛΗΚΤΡΟΛΟΓΙΟ ; π.χ. SELECT ITEM_CODE, ITEM_NAME FROM ITEM WHERE ITEM_PRICE >= 50 AND ITEM_PRICE <= 80; Ή SELECT ITEM_CODE, ITEM_NAME FROM ITEM WHERE ITEM_PRICE BETWEEN 50 AND 80;

10 ΧΕΙΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ SELECT (2/7) SELECT ΜΕ ΣΥΝΘΗΚΗ (συνέχεια): η εντολή LIKE μέσα στη συνθήκη επιτρέπει την ανάκτηση εκείνων των τιμών μιας στήλης τύπου CHAR της φράσης WHERE που ταιριάζουν μερικά με μια συγκεκριμένη συμβολοσειρά. Όταν δε γνωρίζουμε κάποιους χαρακτήρες μπορούμε να τους αντικαταστήσουμε όλους μαζί με το σύμβολο %. π.χ. SELECT * FROM ITEM WHERE ITEM_NAME LIKE Κάρτες % ; Αρνητικός τελεστής: απλουστεύει το ερώτημα με την εισαγωγή του αντίθετου μιας συνθήκης (NOT), π.χ. SELECT * FROM ITEM WHERE ITEM_PRICE NOT 80; Συσσωρευτικές συναρτήσεις: είναι οι AVG (υπολογισμός αριθμητικού μέσου), COUNT (απαρίθμηση των αριθμών ενός πίνακα που πληρούν μια συνθήκη), COUNT DISTINCT (απαρίθμηση του αριθμού των διαφορετικών γραμμών ενός πίνακα που πληρούν μια συνθήκη), MAX (υπολογισμός της μέγιστης τιμής μιας στήλης), MIN (υπολογισμός της ελάχιστης τιμής μιας στήλης), SUM (υπολογισμός του αθροίσματος των τιμών μιας στήλης ή μιας αριθμητικής παράστασης).

11 ΧΕΙΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ SELECT (3/7) Συσσωρευτικές συναρτήσεις (συνέχεια): π.χ. SELECT COUNT (*) FROM ITEM; π.χ. SELECT COUNT (DISTINCT ITEM_CODE) FROM ITEM; π.χ. SELECT MAX(ITEM_PRICE) FROM ITEM; π.χ. SELECT AVG(ITEM_PRICE*1.05) FROM ITEM; Ομαδοποίηση αποτελεσμάτων: εφαρμόζεται σε συσσωρευτικές συναρτήσεις, με την ομαδοποίηση των αποτελεσμάτων βάσει τιμών κάποιων χαρακτηριστικών, π.χ. SELECT ITEM_DESCR, AVG(ITEM_PRICE) FROM ITEM GROUP BY ITEM_DESCR, ο πίνακας ITEM ομαδοποιείται ανά περιγραφή, οπότε σε κάθε ομάδα εφαρμόζεται η AVG. Ταξινόμηση αποτελεσμάτων: ταξινομούμε τα αποτελέσματα κατά την αύξουσα (ASC) ή φθίνουσα σειρά (DESC) των τιμών ενός ή περισσότερων χαρακτηριστικών του πίνακα-αποτελέσματος, π.χ. SELECT ITEM_NAME, ITEM_PRICE, ITEM_DESCR FROM ITEM ORDER BY ITEM_PRICE DESC;

12 ΧΕΙΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ SELECT (4/7) Συσσωρευτικές συναρτήσεις (συνέχεια): Μετονομασία χαρακτηριστικών: μετονομάζουμε πίνακα και/ή ένα ή περισσότερα από τα χαρακτηριστικά του, με την προσθήκη του προσδιορισμού AS. π.χ. SELECT ITEM_NAME FROM ITEM AS IT WHERE IT.ITEM_PRICE>40; Σύνδεση πινάκων (JOIN): είναι σύνθετα ερωτήματα που περιλαμβάνουν περισσότερους από έναν πίνακες στη φράση FROM της εντολής SELECT Παράδειγμα: Ανάκτησε τους τίτλους των βιβλίων του γνωστικού πεδίου Πληροφορική που έχουν παραγγελθεί από τη βιβλιοθήκη SELECT BTITLE FROM (BOOK JOIN BORDER ON BOOK.BCD=BORDER.BCD) WHERE BSUBJ = Πληροφορική ; Οι πίνακες μας έχουν τη μορφή: BOOK(BCD, BTITLE, BSUBJ, BPRICE) BORDER(BORDNO, BCD, BCOPIES)

13 ΧΕΙΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ SELECT (5/7) Η SQL παρέχει τη δυνατότητα αναπαράστασης των πράξεων της σχεσιακής άλγεβρας Ένωση (UNION), Τομή (INTERSECT) και Διαφορά (EXCEPT), προκειμένου να συνδυαστούν τα αποτελέσματα ενός ή περισσότερων πινάκων σε ένα μοναδικό πίνακα αποτελέσματος. Παράδειγμα UNION: Ανάκτησε τους κωδικούς και τίτλους των βιβλίων του γνωστικού πεδίου Πληροφορική ανεξάρτητα αν εκδόθηκαν πριν ή μετά το έτος 2000 (SELECT BCD, BTITLE FROM BOOK WHERE BSUBJ= Πληροφορική ) UNION (SELECT BCDAFTER, BTITLEAFTER FROM BOOKAFTER WHERE BSUBJAFTER = Πληροφορική ); Οι πίνακες μας έχουν τη μορφή: BOOK(BCD, BTITLE, BSUBJ, BPRICE) BORDER(BORDNO, BCD, BCOPIES) και ο πίνακας με τα βιβλία με έκδοση μετά το 2000 BOOKAFTER(BCDAFTER, BTITLEAFTER, BSUBJAFTER, BPRICEAFTER)

14 ΧΕΙΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ SELECT (6/7) Παράδειγμα INTERSECT: Ανάκτησε όλους τους τίτλους των βιβλίων του γνωστικού πεδίου Πληροφορική που εκδόθηκαν πριν το έτος 2000 κι επανεκδόθηκαν μετά το έτος 2000. (SELECT BTITLE FROM BOOK WHERE BSUBJ= Πληροφορική ) INTERSECT (SELECT BTITLEAFTER FROM BOOKAFTER WHERE BSUBJAFTER = Πληροφορική ); Οι πίνακες μας έχουν τη μορφή: BOOK(BCD, BTITLE, BSUBJ, BPRICE) BORDER(BORDNO, BCD, BCOPIES) και ο πίνακας με τα βιβλία με έκδοση μετά το 2000 BOOKAFTER(BCDAFTER, BTITLEAFTER, BSUBJAFTER, BPRICEAFTER)

15 ΧΕΙΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ SELECT (7/7) Παράδειγμα EXCEPT: Ανάκτησε όλους τους τίτλους των βιβλίων του γνωστικού πεδίου Πληροφορική που εκδόθηκαν για πρώτη φορά μετά το έτος 2000. (SELECT BTITLE FROM BOOK WHERE BSUBJ= Πληροφορική ) EXCEPT (SELECT BTITLEAFTER FROM BOOKAFTER WHERE BSUBJAFTER = Πληροφορική ); Οι πίνακες μας έχουν τη μορφή: BOOK(BCD, BTITLE, BSUBJ, BPRICE) BORDER(BORDNO, BCD, BCOPIES) και ο πίνακας με τα βιβλία με έκδοση μετά το 2000 BOOKAFTER(BCDAFTER, BTITLEAFTER, BSUBJAFTER, BPRICEAFTER)

16 ΧΕΙΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ INSERT Σύνταξη: INSERT INTO <όνομα στήλης 1,, όνομα στήλης Ν> VALUES <τιμή στήλης 1,, τιμή στήλης Ν> // Εισαγωγή μιας νέας γραμμής σε έναν πίνακα π.χ. INSERT INTO BOOK (BCD, BTITLE) VALUES ( Β543, Στατιστική ); // Μαζική εισαγωγή νέων γραμμών σε έναν πίνακα (θεωρούμε ότι υπάρχει ένας πίνακας με στήλες BCD, BTITLE που ονομάζεται LIBRO π.χ. INSERT INTO LIBRO (BCD, BTITLE) SELECT BOOK.BCD, BOOK.BTITLE FROM BOOK WHERE BOOK.BPRICE>70;

17 ΧΕΙΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ UPDATE Σύνταξη: UPDATE <όνομα πίνακα> SET <όνομα στήλης 1 = νέα τιμή,, όνομα στήλης Ν = νέα τιμή > WHERE <συνθήκη> Τροποποιούμε (ενημερώνουμε) τις τιμές μίας ή περισσότερων στηλών σε μία ή περισσότερες γραμμές ενός πίνακα. Αν επιθυμούμε αν ενημερωθούν μόνο επιλεγμένες γραμμές, τότε αυτές προσδιορίζονται από μία ή περισσότερες συνθήκες της φράσης WHERE. Παράδειγμα: Αυξάνονται κατά 5% οι τιμές των βιβλίων εκείνων που το θέμα τους είναι το ίδιο με αυτό που αναπαριστά η μεταβλητή SUBJ_PARAM. Αν η μεταβλητή SUBJ_PARAM = Φυσική, τότε αυξάνονται κατά 5% οι τιμές των βιβλίων Φυσικής. UPDATE BOOK SET BPRICE = 1.05*BPRICE WHERE BOOK.BSUBJ = SUBJ_PARAM;

18 ΧΕΙΡΙΣΜΟΣ ΔΕΔΟΜΕΝΩΝ DELETE Σύνταξη: DELETE FROM <όνομα πίνακα> WHERE <συνθήκη> Αν παραληφθεί η πρόταση WHERE, τότε η εντολή DELETE εφαρμόζεται σε όλες τις γραμμές του πίνακα που σημαίνει ότι διαγράφονται όλες οι γραμμές του πίνακα. Παράδειγμα: Διαγράφουμε όλα τα βιβλία Μαθηματικών του πίνακα BOOK DELETE FROM BOOK WHERE BOOK.BSUBJ = Μαθηματικά ;

19 ΑΣΚΗΣH 1 (1/3) Έχουμε τον παρακάτω πίνακα:

20 ΑΣΚΗΣH 1 (2/3) 1. Παρουσιάστε το μικρό όνομα και την ηλικία για κάθε άτομο στον πίνακα. 2. Παρουσιάστε το μικρό όνομα, το επίθετο και την πόλη για κάθε άτομο που δεν είναι από το Payson. 3. Παρουσιάστε όλες τις στήλες για κάθε άτομο που δεν είναι μεγαλύτερο από 40 ετών. 4. Παρουσιάστε το μικρό όνομα και το επίθετο για κάθε άτομο, του οποίου το επίθετο τελειώνει σε ay. 5. Παρουσιάστε όλες τις στήλες για κάθε άτομο, του οποίου το μικρό όνομα ισοδυναμεί με Mary. 6. Παρουσιάστε όλες τις στήλες για κάθε άτομο, του οποίου το μικρό όνομα περιέχει το Mary.

21 ΑΣΚΗΣH 1 (3/4) ΛΥΣΕΙΣ 1. Παρουσιάστε το μικρό όνομα και την ηλικία για κάθε άτομο στον πίνακα. select first, age from empinfo; 2. Παρουσιάστε το μικρό όνομα, το επίθετο και την πόλη για κάθε άτομο που δεν είναι από το Payson. select first, last, city from empinfo where city <> 'Payson'; 3. Παρουσιάστε όλες τις στήλες για κάθε άτομο που δεν είναι μεγαλύτερο από 40 ετών. select * from empinfo where age > 40;

22 ΑΣΚΗΣH 1 (4/4) ΛΥΣΕΙΣ 4. Παρουσιάστε το μικρό όνομα και το επίθετο για κάθε άτομο, του οποίου το επίθετο τελειώνει σε ay. select first, last from empinfo where last LIKE '%ay'; 5. Παρουσιάστε όλες τις στήλες για κάθε άτομο, του οποίου το μικρό όνομα ισοδυναμεί με Mary. select * from empinfo where first = 'Mary'; 6. Παρουσιάστε όλες τις στήλες για κάθε άτομο, του οποίου το μικρό όνομα περιέχει το Mary. select * from empinfo where first LIKE '%Mary%';

23 ΑΣΚΗΣΗ 2 (1/4) Πίνακες Movie(title, year, length, incolor, studioname, producerc#) StarsIn(movieTitle, movieyear, starname) MovieStar(name, address, gender, birthdate) MovieExec(name, address, cert#, networth) Studio(name, address, presc#) Ερωτήματα a) Βρες τη διεύθυνση των MGM studios. b) Βρες την ημερομηνία γέννησης της Sandra Bullock s. c) Βρες όλους τους σταρ που εμφανίζονται είτε σε μια ταινία που γυρίστηκε το 1980, είτε σε μια ταινία με την λέξη Love στον τίτλο. d) Βρες όλους τους σταρ που είναι είτε άντρας, είτε ζει στο Μαϊάμι (να έχεις το Μαϊάμι ως τμήμα της διεύθυνσης τους).

24 Πίνακες ΑΣΚΗΣΗ 2 (2/4) Movie(title, year, length, incolor, studioname, producerc#) StarsIn(movieTitle, movieyear, starname) MovieStar(name, address, gender, birthdate) MovieExec(name, address, cert#, networth) Studio(name, address, presc#) Λύσεις a) SELECT address FROM Studio WHERE name = MGM ; b) SELECT birthdate FROM MovieStar WHERE name = Sandra Bullock ; c) SELECT starname FROM StarsIn WHERE movieyear = 1980 OR movietitle LIKE %Love% ; SELECT starname FROM StarsIn WHERE movieyear = 1980 OR movietitle LIKE 'Love % OR movietitle LIKE '% Love %' OR movietitle LIKE '% Love OR movietitle = 'Love'; d) SELECT name FROM MovieStar WHERE gender = M OR address LIKE Miami % OR address LIKE % Miami % OR address LIKE % Miami OR address = Miami ;

25 ΑΣΚΗΣΗ 2 (3/4) Πίνακες Movie(title, year, length, incolor, studioname, producerc#) StarsIn(movieTitle, movieyear, starname) MovieStar(name, address, gender, birthdate) MovieExec(name, address, cert#, networth) Studio(name, address, presc#) Ερωτήματα e) Ποιοι είναι οι άντρες σταρ του Terms of Endearment. f) Ποιοι σταρ εμφανίστηκαν σε ταινίες των MGM το 1995. g) Ποιες ταινίες είναι μεγαλύτερες από το Gone With the Wind.

26 Πίνακες ΑΣΚΗΣΗ 2 (4/4) Movie(title, year, length, incolor, studioname, producerc#) StarsIn(movieTitle, movieyear, starname) MovieStar(name, address, gender, birthdate) MovieExec(name, address, cert#, networth) Studio(name, address, presc#) Λύσεις e) SELECT name FROM MovieStar, StarsIn WHERE gender = M AND name = starname AND movietitle = Terms of Endearment ; f) SELECT starname FROM StarsIn, Movie WHERE title = movietitle AND year = movieyear AND year = 1995 AND studioname = MGM ; g) SELECT M1.title FROM Movie AS M1, Movie AS M2 WHERE M2.title = Gone With the Wind AND M1.length > M2.length; SELECT title FROM Movie WHERE length > ANY ( SELECT length FROM Movie WHERE title = Gone With the Wind );

ΕΥΧΑΡΙΣΤΩ ΠΟΛΥ! 27