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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 Τμήμα Διοίκησης Επιχειρήσεων «Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα» «Σημειώσεις για την SQL» ΕΞΑΜΗΝΟ: ΣΤ Δρ. Κωνσταντίνος Χ. Γιωτόπουλος Πάτρα, Νοέμβριος 2010

2 SQL Create Table Η CREATE TABLE χρησιμοποιείται για τη δημιουργία πινάκων στη βάση δεδομένων. Η σύνταξη της CREATE TABLE είναι: CREATE TABLE "table_name" ("column 1" "data_type_for_column_1", "column 2" "data_type_for_column_2",... ) Αν θέλουμε να δημιουργήσουμε έναν πίνακα θα έχουμε: CREATE TABLE customer (First_Name char(50), Last_Name char(50), Address char(50), City char(50), Country char(25), Birth_Date date) Μερικές φορές θέλουμε να βάλουμε μια προεπιλεγμένη τιμή σε ένα πεδίο. Προεπιλεγμένη τιμή σημαίνει ότι σε κάθε νέα εγγραφή του πίνακα η τιμή στο πεδίο αυτό θα είναι συγκεκριμένη και φυσικά μπορούμε αν θέλουμε να την αλλάξουμε. Για την προσθήκη μιας προεπιλεγμένης τιμής σε ένα πεδίο πρέπει να προσθέσουμε την έκφραση default [τιμή] μετά τη δήλωση του τύπου δεδομένων του πεδίου. Παράδειγμα: CREATE TABLE customer (First_Name char(50), Last_Name char(50), Address char(50) default 'Unknown', City char(50) default 'Mumbai', Country char(25), Birth_Date date) 2

3 Constraints Περιορισμοί Μπορούμε να εισάγουμε περιορισμούς όταν καθορίζουμε το τύπο δεδομένων ενός πεδίου. Αυτοί οι περιορισμοί εισάγονται είτε στην εντολή CREATE TABLE είτε χρησιμοποιώντας την εντολή ALTER TABLE αφού δημιουργήσουμε τον πίνακα. Κοινοί τύποι περιορισμών είναι οι κάτωθι: - NOT NULL - UNIQUE - CHECK - Primary Key - Foreign Key NOT NULL Εξ ορισμού ένα πεδίο μπορεί να μην έχει καμία τιμή σε μια εγγραφή του πίνακα. Αν θέλουμε να επιβάλουμε σε ένα πεδίο να μη δέχεται κενές τιμές (δηλαδή να μην δέχεται τη μη εισαγωγή δεδομένων, υποχρεωτικά να έχει κάποια τιμή) τότε καθορίζουμε το συγκεκριμένο πεδίο ως not null. Για παράδειγμα: CREATE TABLE Customer (SID integer NOT NULL, Last_Name varchar (30) NOT NULL, First_Name varchar(30)); Τα πεδία "SID" και "Last_Name" δεν μπορούν να είναι NULL, ενώ το "First_Name" μπορεί να μην πάρει τιμή σε μια εγγραφή. UNIQUE Ο περιορισμός UNIQUE διασφαλίζει ότι όλες οι τιμές σε ένα πεδίο είναι διακριτές δηλαδή μοναδικές. Παράδειγμα: CREATE TABLE Customer (SID integer Unique, Last_Name varchar (30), First_Name varchar(30)); Το πεδίο "SID" δε δέχεται διπλότυπες τιμές. Αυτό σημαίνει ότι κάθε εγγραφή του πίνακα Customer πρέπει να έχει διαφορετική τιμή στο πεδίο SID σε σχέση με όλες τις υπόλοιπες τιμές των άλλων εγγραφών στο συγκεκριμένο πεδίο. Το ίδιο χαρακτηριστικό ισχύει και στο πεδίο που χαρακτηρίζεται ως πρωτεύον κλειδί. Πρέπει όμως να τονισθεί ότι ένα πεδίο Unique μπορεί να είναι, μπορεί και να μην είναι όμως πεδίο κλειδί. 3

4 CHECK Ο περιορισμός CHECK διασφαλίζει ότι όλες οι τιμές που θα εισαχθούν σε ένα πεδίο ικανοποιούν συγκεκριμένα κριτήρια. Για παράδειγμα: CREATE TABLE Customer (SID integer CHECK (SID > 0), Last_Name varchar (30), First_Name varchar(30)); Το πεδίο SID πρέπει να πάρει ακέραιες τιμές και μάλιστα θετικές (>0). 4

5 Primary Key Πρωτεύον Κλειδί Ένα πρωτεύον κλειδί χρησιμοποιείται για την ταυτοποίηση κάθε εγγραφής σε ένα πίνακα. Μπορεί να είναι κάποιο υπάρχον χαρακτηριστικό πεδίο του πίνακα, ή μπορεί να είναι ένα τεχνητό χαρακτηριστικό πεδίο (που ουσιαστικά δεν έχει καμία σχέση με τον πίνακα) και απλά το δημιουργούμε εμείς για να καθορίσουμε κάθε εγγραφή με ένα και μόνο πεδίο. Το πρωτεύον κλειδί μπορεί να είναι ένα ή περισσότερα πεδία σε ένα πίνακα. Όταν χρησιμοποιούνται πολλά τότε έχουμε σύνθετο κλειδί. Το πρωτεύον κλειδί καθορίζεται είτε στο CREATE TABLE ερώτημα ή χρησιμοποιώντας το ALTER TABLE μετά τη δημιουργία του πίνακα. Παραδείγματα MySQL: CREATE TABLE Customer (SID integer, Last_Name varchar(30), First_Name varchar(30), PRIMARY KEY (SID)); Oracle: CREATE TABLE Customer (SID integer PRIMARY KEY, Last_Name varchar(30), First_Name varchar(30)); SQL Server: CREATE TABLE Customer (SID integer PRIMARY KEY, Last_Name varchar(30), First_Name varchar(30)); Με το ALTER TABLE MySQL: ALTER TABLE Customer ADD PRIMARY KEY (SID); Oracle: ALTER TABLE Customer ADD PRIMARY KEY (SID); SQL Server: ALTER TABLE Customer ADD PRIMARY KEY (SID); 5

6 Foreign Key Ξένο Κλειδί Ένα ξένο κλειδί είναι ένα πεδίο (πεδία) τα οποία σχετίζονται με το πρωτεύον κλειδί ενός άλλου πίνακα. Ο σκοπός του ξένου κλειδιού είναι να διασφαλίσει την σχεσιακή ακεραιότητα των δεδομένων. Παράδειγμα: Ας υποθέσουμε ότι έχουμε δύο πίνακες τον Customers και τον Orders. Ο περιορισμός που υπάρχει είναι ότι όλες οι παραγγελίες, δηλαδή όλες οι εγγραφές του πίνακα orders να είναι συσχετισμένες με κάποιο πελάτη, δηλαδή κάποια εγγραφή του πίνακα customers. Έτσι πρέπει να εισαχθεί ένα ξένο κλειδί στον πίνακα ORDERS και να συσχετισθεί με το πρωτεύον κλειδί του πίνακα CUSTOMERS. Έτσι, θα διασφαλίσουμε ότι όλες οι παραγγελίες του πίνακα orders θα είναι συσχετισμένες με κάποιο υπαρκτό πελάτη. Έτσι δε θα μπορούμε να εισάγουμε παραγγελία που ο πελάτης μας δεν υπάρχει στον αντίστοιχο πίνακα. Έτσι έχουμε τα κάτωθι: Table CUSTOMER Column name characteristic SID Primary Key Last_Name First_Name Table ORDERS Column name characteristic Order_ID Primary Key Order_Date Customer_SID Foreign Key Amount Σε αυτό το παράδειγμα το πεδίο Customer_SID στον πίνακα ORDERS είναι ένα ξένο κλειδί που δείχνει στο πρωτεύον κλειδί του πίνακα CUSTOMERS που είναι το πεδίο SID. ΠΑΡΑΔΕΙΓΜΑΤΑ: MySQL: CREATE TABLE ORDERS (Order_ID integer, Order_Date date, Customer_SID integer, Amount double, Primary Key (Order_ID), Foreign Key (Customer_SID) references CUSTOMER(SID)); 6

7 Oracle: CREATE TABLE ORDERS (Order_ID integer primary key, Order_Date date, Customer_SID integer references CUSTOMER(SID), Amount double); SQL Server: CREATE TABLE ORDERS (Order_ID integer primary key, Order_Date datetime, Customer_SID integer references CUSTOMER(SID), Amount double); Χρήση του ερωτήματος ALTER TABLE MySQL: ALTER TABLE ORDERS ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID); Oracle: ALTER TABLE ORDERS ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID); SQL Server: ALTER TABLE ORDERS ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID); 7

8 Alter Table Μετά τη δημιουργία ενός πίνακα είναι δυνατή η αλλαγή της δομής του πίνακα χρησιμοποιώντας την εντολή ALTER TABLE. Κλασικές τέτοιες περιπτώσεις είναι οι κάτωθι: - Add a column - Drop a column - Change a column name - Change the data type for a column Οι προαναφερθείσες περιπτώσεις δεν είναι οι μοναδικές. Άλλες τέτοιες περιπτώσεις είναι η αλλαγή του πρωτεύοντος κλειδιού, η προσθήκη περιορισμών κλπ. Η SQL σύνταξη για την ALTER TABLE είναι ALTER TABLE "table_name" [alter specification] Το [alter specification] εξαρτάται από την τροποποίηση που θέλουμε να κάνουμε. Για τα προαναφερθέντα έχουμε: Add a column: ADD "column 1" "data type for column 1" Drop a column: DROP "column 1" Change a column name: CHANGE "old column name" "new column name" "data type for new column name" Change the data type for a column: MODIFY "column 1" "new data type" Παραδείγματα: Table customer Column Name Data Type First_Name char(50) Last_Name char(50) Address char(50) City char(50) Country char(25) Birth_Date date Καταρχήν θέλουμε να προσθέσουμε ένα πεδίο με όνομα "Gender" στον πίνακα: ALTER table customer add Gender char(1) Έτσι έχουμε την κάτωθι δομή πίνακα: Table customer 8

9 Column Name Data Type First_Name char(50) Last_Name char(50) Address char(50) City char(50) Country char(25) Birth_Date date Gender char(1) Έπειτα θέλουμε να μετονομάσουμε το πεδίο "Address" σε "Addr": ALTER table customer change Address Addr char(50) Έτσι έχουμε την κάτωθι δομή πίνακα: Table customer Column Name Data Type First_Name char(50) Last_Name char(50) Addr char(50) City char(50) Country char(25) Birth_Date date Gender char(1) Έπειτα, θέλουμε να τροποποιήσουμε το τύπο δεδομένων του "Addr" σε char(30): ALTER table customer modify Addr char(30) Έτσι έχουμε την κάτωθι δομή πίνακα: Table customer Column Name Data Type First_Name char(50) Last_Name char(50) Addr char(30) City char(50) Country char(25) Birth_Date date Gender char(1) 9

10 Τέλος, θέλουμε να διαγράψουμε το πεδίο "Gender": ALTER table customer drop Gender Έτσι έχουμε την κάτωθι δομή πίνακα: Table customer Column Name Data Type First_Name char(50) Last_Name char(50) Addr char(30) City char(50) Country char(25) Birth_Date date 10

11 Drop Table Το ερώτημα DROP TABLE διαγράφει εντελώς από τη βάση δεδομένων τον πίνακα που θέλουμε. DROP TABLE "table_name" Αν ήθελα να διαγράψω τον πίνακα customer: DROP TABLE customer. Truncate Table Στην περίπτωση που θέλω να διαγράψω μόνο τα περιεχόμενα του πίνακα και να κρατήσω τη δομή του πίνακα χρησιμοποιώ την εντολή TRUNCATE TABLE. TRUNCATE TABLE "table_name" Αν ήθελα να διαγράψω τα περιεχόμενα του πίνακα Customer: TRUNCATE TABLE customer 11

12 SQL SELECT Η εντολή SQL SELECT χρησιμοποιείται για την επιλογή δεδομένων από έναν πίνακα σε μια βάση δεδομένων. Μια γενική μορφή σύνταξης για το ερώτημα SQL SELECT είναι η ακόλουθη: SELECT πεδίο 1, πεδίο 2, πεδίο 3, FROM Table1 Η λίστα με τα ονόματα των πεδίων μετά την εντολή SQL SELECT καθορίζει ποια πεδία θα επιστραφούν προς εμφάνιση ως αποτέλεσμα της εκτέλεσης του ερωτήματος.. Εάν θέλουμε να επιλέξουμε όλα τα πεδία του πίνακα χρησιμοποιούμε το * (αστεράκι): SELECT * FROM Table1 Το όνομα του πίνακα καθορίζεται μετά τη λέξη FROM (στο παράδειγμα Table1) καθορίζει τον πίνακα προέλευσης των δεδομένων. 12

13 SQL SELECT INTO Η εντολή SQL SELECT INTO χρησιμοποιείται για την επιλογή δεδομένων από έναν πίνακα και εισαγωγή των δεδομένων σε έναν διαφορετικό πίνακα της βάσης. Μια γενική μορφή σύνταξης είναι η ακόλουθη: SELECT πεδίο 1, πεδίο 2, πεδίο 3, INTO Table2 FROM Table1 Η λίστα με τα πεδία μετά το SELECT καθορίζει ποια πεδία θα αντιγραφούν και το όνομα του πίνακα μετά το INTO καθορίζει τον πίνακα που θα αντιγραφούν τα δεδομένα.. Αν θέλουμε να φτιάξουμε ένα ακριβές αντίγραφο των δεδομένων του πίνακα Customers, χρειαζόμαστε το κάτωθι ερώτημα SQL SELECT INTO: SELECT * INTO Customers_copy FROM Customers 13

14 SQL DISTINCT Η εντολή SQL DISTINCT χρησιμοποιείται μαζί την εντολή SELECT για να επιστρέψει ένα σύνολο δεδομένων με μοναδικές εγγραφές ενός πεδίου του πίνακα. Θα χρησιμοποιήσουμε τον κάτωθι πίνακα Customers. FirstName LastName DOB Phone John Smith 2/4/ Steven Goldfish 4/4/ Paula Brown 5/24/ James Smith 20/10/ Παράδειγμα: θέλω να εμφανίσω τα μοναδικά επίθετα από το πεδίο surnames του πίνακα Customers, θα εφαρμόσω την ακόλουθη εντολή SQL DISTINCT: SELECT DISTINCT LastName FROM Customers Το αποτέλεσμα της εκτέλεσης του ερωτήματος SQL DISTINCT θα είναι το ακόλουθο: LastName Smith Goldfish Brown Παρατηρούμε ότι το επίθετο Smith εμφανίζεται μόνο μια φορά. 14

15 SQL WHERE Η εντολή SQL WHERE χρησιμοποιείται για την εφαρμογή κριτηρίων σε ένα ερώτημα SQL SELECT. Θα χρησιμοποιήσουμε τον πίνακα Customers για ένα παράδειγμα. Πίνακας: Customers FirstName LastName DOB Phone John Smith 2/4/ Steven Goldfish 4/4/ Paula Brown 5/24/ James Smith 20/10/ Θέλουμε να επιλέξουμε να εμφανισθούν όλοι οι πελάτες μας από τον πίνακα δεδομένων που το επίθετό τους είναι 'Smith'. Το ερώτημα που θα δημιουργήσουμε είναι το κάτωθι: SELECT * FROM Customers WHERE LastName = 'Smith' Το αποτέλεσμα του ερωτήματος είναι το εξής: FirstName LastName DOB Phone John Smith John.Smith@yahoo.com 2/4/ James Smith jim@supergig.co.uk 20/10/ Σε αυτό το απλό ερώτημα χρησιμοποιήσαμε το "=" (Ίσον) στα κριτήρια του WHERE: LastName = 'Smith' Μπορούμε όμως να χρησιμοποιήσουμε και τους υπόλοιπους τελεστές σύγκρισης σε ένα ερώτημα που έχει SQL WHERE: <> (Διάφορο) SELECT * FROM Customers WHERE LastName <> 'Smith' 15

16 > (Μεγαλύτερο από) SELECT * FROM Customers WHERE DOB > '1/1/1970' >= (Μεγαλύτερο ή ίσον) SELECT * FROM Customers WHERE DOB >= '1/1/1970' < (Μικρότερο από) SELECT * FROM Customers WHERE DOB < '1/1/1970' <= (Μικρότερο ή ίσον) SELECT * FROM Customers WHERE DOB =< '1/1/1970' LIKE (μοιάζει με) SELECT * FROM Customers WHERE Phone LIKE '626%' Σημείωση: Η σύνταξη του LIKE διαφοροποιείται ανάλογα με το Σύστημα Διαχείρισης Βάσης Δεδομένων που χρησιμοποιούμε. Between (Καθορίζει ένα εύρος περιοχής) SELECT * 16

17 FROM Customers WHERE DOB BETWEEN '1/1/1970' AND '1/1/1975' 17

18 SQL LIKE Θα χρησιμοποιήσουμε τον πίνακα Customers για να δούμε την εφαρμογή του SQL LIKE: FirstName LastName DOB Phone John Smith 2/4/ Steven Goldfish 4/4/ Paula Brown 5/24/ James Smith 20/10/ Η εντολή SQL LIKE είναι πολύ χρήσιμη όταν θέλουμε να καθορίσουμε κριτήριο αναζήτησης σε ένα SQL WHERE, βασιζόμενοι σε ένα μέρος του περιεχομένου του πεδίου. Για παράδειγμα ας υποθέσουμε ότι θέλουμε να αναζητήσουμε όλους τους πελάτες που το FirstName ξεκινάει από 'J'. Θα πρέπει να δημιουργήσουμε το ακόλουθο ερώτημα SQL: SELECT * FROM Customers WHERE FirstName LIKE 'J%' Το αποτέλεσμα: FirstName LastName DOB Phone John Smith John.Smith@yahoo.com 2/4/ James Smith jim@supergig.co.uk 20/10/ Αν θέλουμε να εμφανίσουμε όλους τους πελάτες που το τηλέφωνό τους ξεκινάει από '416' θα δημιουργήσουμε το ακόλουθο ερώτημα: SELECT * FROM Customers WHERE Phone LIKE '416%' Το '%' είναι χαρακτήρας που αντιπροσωπεύει οποιοδήποτε αλφαριθμητικό. Τοποθετείται σε οποιοδήποτε μέρος του αλφαριθμητικού που εισάγουμε στο SQL LIKE και μάλιστα όσες φορές θέλουμε. Σημείωση: Ανάλογα με το ΣΔΒΔ που χρησιμοποιούμε ο χαρακτήρας % μπορεί να είναι διαφορετικός για παράδειγμα '%' είναι στον MS SQL Server, and '*' είναι ο αντίστοιχος χαρακτήρας που χρησιμοποιείται στην MS Access. 18

19 Ένας άλλος χαρακτήρας που αντιπροσωπεύει έναν οποιοδήποτε χαρακτήρα είναι το '_'. Η χρήση του σημαίνει ένα οποιοδήποτε αλφαριθμητικό που αποτελείται από έναν μόνο χαρακτήρα. Το '[]' καθορίζει ένα σύνολο από χαρακτήρες. Παράδειγμα: SELECT * FROM Customers WHERE Phone LIKE '[4-6]_6%' Το ερώτημα θα επιστρέψει τους πελάτες που ικανοποιούν τα κάτωθι κριτήρια: Το πεδίο Phone ξεκινά από ένα ψηφίο μεταξύ 4 και 6 ([4-6]) Ο δεύτερος χαρακτήρας στο πεδίο Phone είναι οτιδήποτε (_) Ο τρίτος χαρακτήρας στο πεδίο Phone είναι το 6 (6) Το υπόλοιπο μέρος του πεδίου Phone column μπορεί να είναι οποιοδήποτε αλφαριθμητικό (%) Το αποτέλεσμα της εκτέλεσης του SQL ερωτήματος: FirstName LastName DOB Phone John Smith John.Smith@yahoo.com 2/4/ Paula Brown pb@herowndomain.org 5/24/ James Smith jim@supergig.co.uk 20/10/

20 SQL INSERT INTO Η σύνταξη του SQL INSERT INTO έχει δύο φόρμες και το αποτέλεσμα και των δύο είναι η εισαγωγή μιας νέας εγγραφής στον πίνακα δεδομένων. Ο πρώτος τρόπος σύνταξης του INSERT INTO SQL ερωτήματος δεν καθορίζει τα ονόματα των πεδίων αλλά μόνο τις τιμές τους: INSERT INTO Table1 VALUES (value1, value2, value3 ) Ο δεύτερος τρόπος σύνταξης του SQL INSERT INTO ερωτήματος, τόσο τα ονόματα των πεδίων αλλά και τις αντίστοιχες τιμές των πεδίων: INSERT INTO Table1 (Column1, Column2, Column3 ) VALUES (Value1, Value2, Value3 ) Θα πρέπει ο αριθμός των πεδίων που εισάγετε στην παρένθεση να είναι ακριβώς ο ίδιος με των αριθμό των τιμών που θα εισαχθούν στα αντίστοιχα πεδία αλλιώς θα προκληθεί σφάλμα στην εκτέλεση του ερωτήματος.. Αν θέλουμε να εισάγουμε μια νέα εγγραφή στον πίνακα Customers, θα χρησιμοποιήσουμε μια από τις ακόλουθες εντολές: INSERT INTO Customers VALUES ('Peter', 'Hunt', 'peter.hunt@tgmail.net', '1/1/1974', ' ') INSERT INTO Customers (FirstName, LastName, , DOB, Phone) VALUES ('Peter', 'Hunt', 'peter.hunt@tgmail.net', '1/1/1974', ' ') Το αποτέλεσμα της εκτέλεσης του ερωτήματος και στις δύο περιπτώσεις είναι η εισαγωγή νέας εγγραφής στον πίνακα Customers: FirstName LastName DOB Phone John Smith John.Smith@yahoo.com 2/4/ Steven Goldfish goldfish@fishhere.net 4/4/ Paula Brown pb@herowndomain.org 5/24/

21 James Smith 20/10/ Peter Hunt 1/1/ Αν θέλετε να εισάγετε μερικά δεδομένα σε αντίστοιχα πεδία και όχι σε όλα, πρέπει να χρησιμοποιηθεί ο δεύτερος τρόπος σύνταξης αλλιώς θα προκληθεί λάθος. Ας υποθέσουμε ότι θέλω να εισάγω καινούρια εγγραφή στον πίνακα Customers και να εισάγω μόνο τιμές στα πεδία FirstName και LastName, πρέπει να εκτελεσθεί η ακόλουθη εντολή: INSERT INTO Customers (FirstName, LastName) VALUES ('Peter', 'Hunt') 21

22 SQL UPDATE Η γενική σύνταξη ενός ερωτήματος SQL UPDATE είναι η ακόλουθη: UPDATE Table1 SET Column1 = Value1, Column2 = Value2 WHERE Some_Column = Some_Value Η SQL UPDATE αλλάζει τα δεδομένα σε μια υπάρχουσα εγγραφή (ή πολλές εγγραφές) σε μια βάση δεδομένων και συνήθως τη χρησιμοποιούμε μαζί με κάποια κριτήρια (προσθέτοντας και το αντίστοιχο WHERE). Στο WHERE καθορίζουμε ποιες από τις εγγραφές του πίνακα πρέπει να αλλάξουν τιμή (αυτές που ικανοποιούν τα κριτήρια του WHERE). Αν θέλουμε να αλλάξουμε την ημερομηνία γέννησης του Steven Goldfish's σε '5/10/1974' στο πίνακα Customers: FirstName LastName DOB Phone John Smith John.Smith@yahoo.com 2/4/ Steven Goldfish goldfish@fishhere.net 4/4/ Paula Brown pb@herowndomain.org 5/24/ James Smith jim@supergig.co.uk 20/10/ Πρέπει να συντάξουμε και να εκτελέσουμε το κάτωθι SQL UPDATE ερώτημα: UPDATE Customers SET DOB = '5/10/1974' WHERE LastName = 'Goldfish' AND FirstName = 'Steven' Αν δεν καθορίσουμε κάποιο κριτήριο στο WHERE τότε η αλλαγή που επιθυμούμε θα εφαρμοσθεί σε όλες τις εγγραφές του πίνακα. Γίνεται κατανοητό, ότι πρέπει να είμαστε πολύ προσεκτικοί στη χρήση του ερωτήματος.. Πρέπει να τονίσουμε ότι η μπορούμε να αλλάξουμε τις τιμές πολλών πεδίων πολλών εγγραφών χρησιμοποιώντας κατάλληλα τα κριτήρια στο WHERE σε μια εντολή UPDATE. Για παράδειγμα ας υποθέσουμε ότι θέλουμε να αλλάξουμε το τηλέφωνο σε όλους τους πελάτες μας στον πίνακα Customers που το επίθετό τους είναι Smith (έχουμε δύο στην δική μας περίπτωση). Πρέπει να εκτελέσουμε το κάτωθι ερώτημα: 22

23 UPDATE Customers SET Phone = ' ' WHERE LastName = 'Smith' Μετά την εκτέλεση, ο πίνακας Customer θα είναι ο εξής: FirstName LastName DOB Phone John Smith John.Smith@yahoo.com 2/4/ Steven Goldfish goldfish@fishhere.net 4/4/ Paula Brown pb@herowndomain.org 5/24/ James Smith jim@supergig.co.uk 20/10/

24 SQL DELETE Μέχρι τώρα είδαμε πως να επιλέγουμε δεδομένα προς εμφάνιση από έναν πίνακα και πως να εισάγουμε και να τροποποιούμε δεδομένα στον πίνακα. Πρέπει να αναφερθούμε και στη διαγραφή εγγραφών από έναν πίνακα μιας βάσης δεδομένων. Έτσι, έχουμε την εντολή SQL DELETE Η εντολή SQL DELETE ακολουθεί την εξής σύνταξη: DELETE FROM Table1 WHERE Some_Column = Some_Value Αν δεν εισάγουμε το WHERE και τα κριτήρια, τότε θα διαγραφούν όλες οι εγγραφές από τον πίνακα.. Το ακόλουθο ερώτημα θα διαγράψει όλα τα δεδομένα από τον πίνακα Table 1 και θα καταλήξουμε να έχουμε έναν άδειο πίνακα. DELETE FROM Table1 Εφόσον καθορίσουμε συγκεκριμένα κριτήρια στο WHERE τότε θα διαγραφούν από τον πίνακα οι εγγραφές εκείνες που ικανοποιούν τα κριτήρια αυτά. DELETE FROM Customers WHERE LastName = 'Smith' Το προηγούμενο ερώτημα θα διαγράψει από τον πίνακα Customers όλες τις εγγραφές εκείνες που στο πεδίο LastName έχουν τιμή SMITH και ο πίνακας Customers θα είναι πλέον ο κάτωθι: FirstName LastName DOB Phone Steven Goldfish goldfish@fishhere.net 4/4/ Paula Brown pb@herowndomain.org 5/24/

25 SQL ORDER BY Η έκφραση ORDER BY χρησιμοποιείται όταν θέλουμε να ταξινομήσουμε τα αποτελέσματα βάση κάποιου πεδίου (ή κάποιων πεδίων). Ας υποθέσουμε ότι θέλουμε να επιλέξουμε όλες τις εγγραφές από τον πίνακα Customers και να τους ταξινομήσουμε βάση την ημερομηνία γέννησής τους. Τότε, θα πρέπει ναεκτελέσουμε το κάτωθι ερώτημα: SELECT * FROM Customers ORDER BY DOB Το αποτέλεσμα της εκτέλεσης του ερωτήματος θα είναι το ακόλουθο: FirstName LastName DOB Phone John Smith John.Smith@yahoo.com 2/4/ Steven Goldfish goldfish@fishhere.net 4/4/ Paula Brown pb@herowndomain.org 5/24/ James Smith jim@supergig.co.uk 20/10/ Όπως βλέπουμε η ταξινόμηση γίνεται βάση του πεδίο DOB και μάλιστα η ταξινόμηση είναι αύξουσα (δηλαδή από την μικρότερη ημερομηνία γέννησης προς την μεγαλύτερη). Στη περίπτωση που θέλουμε φθίνουσα ταξινόμηση πρέπει να το δηλώσουμε προσθέτοντας στο τέλος του τμήματος του ORDER BY τη λέξη DESC. Παράδειγμα: SELECT * FROM Customers ORDER BY DOB DESC Το αποτέλεσμα θα είναι το κάτωθι: FirstName LastName DOB Phone James Smith jim@supergig.co.uk 20/10/ Paula Brown pb@herowndomain.org 5/24/ Steven Goldfish goldfish@fishhere.net 4/4/ John Smith John.Smith@yahoo.com 2/4/ Επισημαίνεται ότι αν δεν καθορίσουμε τρόπο ταξινόμησης, τότε από το σύστημα επιλέγεται η αύξουσα ταξινόμηση. Έτσι, τα κάτωθι ερωτήματα παράγουν τα ίδια ακριβώς αποτελέσματα: 25

26 SELECT * FROM Customers ORDER BY DOB SELECT * FROM Customers ORDER BY DOB ASC Μπορούμε να ταξινομήσουμε τα αποτελέσματα ενός ερωτήματος χρησιμοποιώντας περισσότερα του ενός πεδία: SELECT * FROM Customers ORDER BY DOB, LastName Στην περίπτωση αυτή η ταξινόμηση γίνεται με βάση το πρώτο κατά σειρά που βάλαμε στο ORDER BY πεδίο και εφόσον υπάρξει κάποιο πρόβλημα (π. χ. Οι τιμές των πεδίων είναι ίδιες) τότε η ταξινόμηση μόνο για αυτά που έχουν το πρόβλημα συνεχίζει στο δεύτερο πεδίο κ.ο.κ. 26

27 SQL AND & OR Το SQL AND χρησιμοποιείται όταν θέλουμε να καθορίσουμε περισσότερα του ενός κριτήρια και θέλουμε ταυτόχρονα να είναι τα κριτήρια αληθή. Για παράδειγμα θέλουμε να επιλέξουμε όλους τους πελάτες μας που το FirstName είναι "John" και το LastName είναι "Smith", τότε θα εκτελέσουμε το κάτωθι ερώτημα: SELECT * FROM Customers WHERE FirstName = 'John' AND LastName = 'Smith' Το αποτέλεσμα είναι το κάτωθι: FirstName LastName DOB Phone John Smith John.Smith@yahoo.com 2/4/ Επιστρέφεται η εγγραφή από τον πίνακα Customers που ικανοποιεί και τα δύο κριτήρια που εισαχθήκανε στο WHERE τμήμα του SELECT ερωτήματος. Το SQL OR χρησιμοποιείται με παρόμοιο τρόπο και η διαφορά του με το AND είναι ότι το OR επιστρέφει τις εγγραφές που ικανοποιούν τουλάχιστον ένα από τα κριτήρια που εισαχθήκανε στο WHERE. Ας υποθέσουμε ότι θέλουμε να επιλέξουμε τους πελάτες εκείνους που έχουν FirstName 'James' ή FirstName 'Paula', πρέπει να εκτελέσουμε το ακόλουθο SQL ερώτημα: SELECT * FROM Customers WHERE FirstName = 'James' OR FirstName = 'Paula' Το αποτέλεσμα θα είναι το εξής: FirstName LastName DOB Phone Paula Brown pb@herowndomain.org 5/24/ James Smith jim@supergig.co.uk 20/10/ Μπορούμε φυσικά να συνδυάσουμε τo AND και το OR με οποιοδήποτε τρόπο θέλουμε και να χρησιμοποιήσουμε και παρενθέσεις και να δημιουργηθούν με το τρόπο αυτό πολύπλοκα κριτήρια στο WHERE. 27

28 Παράδειγμα είναι το εξής ερώτημα, να επιλέξετε τους πελάτες εκείνους που έχουν LastName 'Brown' και FirstName είτε 'James' είτε 'Paula': SELECT * FROM Customers WHERE (FirstName = 'James' OR FirstName = 'Paula') AND LastName = 'Brown' Το αποτέλεσμα: FirstName LastName DOB Phone Paula Brown pb@herowndomain.org 5/24/

29 SQL IN Το SQL IN μας επιτρέπει να καθορίσουμε διακριτές τιμές στα κριτήρια αναζήτησης σε ένα SQL WHERE. Η γενική σύνταξη SQL IN είναι: SELECT Column1, Column2, Column3, FROM Table1 WHERE Column1 IN (Value1, Value2, ) Ας χρησιμοποιήσουμε τον πίνακα EmployeeHours: Employee Date Hours John Smith 5/6/ Allan Babel 5/6/ Tina Crown 5/6/ John Smith 5/7/ Allan Babel 5/7/ Tina Crown 5/7/ John Smith 5/8/ Allan Babel 5/8/ Tina Crown 5/8/ Ας υποθέσουμε ότι έχουμε το κάτωθι SQL ερώτημα με το SQL IN τμήμα της: SELECT * FROM EmployeeHours WHERE Date IN ('5/6/2004', '5/7/2004') Η εκτέλεση αυτού του ερωτήματος θα επιστρέψει τις εγγραφές εκείνες που η τιμή του πεδίου Date έχει τιμή είτε '5/6/2004' είτε '5/7/2004', το αποτέλεσμα είναι: Employee Date Hours John Smith 5/6/ Allan Babel 5/6/ Tina Crown 5/6/ John Smith 5/7/

30 Allan Babel 5/7/ Tina Crown 5/7/ Μπορούμε να χρησιμοποιήσουμε το SQL IN και σε άλλο πεδίο στον πίνακα EmployeeHours: SELECT * FROM EmployeeHours WHERE Hours IN (9, 10) Το αποτέλεσμα της εκτέλεσης του ερωτήματος είναι: Employee Date Hours John Smith 5/7/ Tina Crown 5/7/ Tina Crown 5/8/

31 SQL BETWEEN Το SQL BETWEEN & AND καθορίζουν ένα εύρος τιμών μεταξύ μιας αρχικής και μιας τελικής τιμής. Το SQL BETWEEN συντάσσεται ως εξής: SELECT Column1, Column2, Column3, FROM Table1 WHERE Column1 BETWEEN Value1 AND Value2 Οι δύο τιμές καθορίζουν το εύρος τιμών και μπορεί να είναι ημερομηνίες, αριθμοί ή απλώς κείμενο.. Σε αντίθεση με το SQL IN keyword, το οποίο επιτρέπει τον καθορισμό μόνο διακριτών τιμών στα κριτήρια, το SQL BETWEEN δίνει τη δυνατότητα να καθορίσετε ένα εύρος τιμών στα κριτήρια αναζήτησης. Θα χρησιμοποιήσουμε τον γνωστό πίνακα Customers για να δείξουμε πως λειτουργεί το SQL BETWEEN: FirstName LastName DOB Phone John Smith 2/4/ Steven Goldfish 4/4/ Paula Brown 5/24/ James Smith 20/10/ Έχουμε το κάτωθι ερώτημα: SELECT * FROM Customers WHERE DOB BETWEEN '1/1/1975' AND '1/1/2004' Η εκτέλεση του ερωτήματος θα επιστρέψει τις εγγραφές εκείνες που οι τιμές των εγγραφών στο πεδίο DOB βρίσκονται μεταξύ των ημερομηνιών '1/1/1975' και '1/1/2004'. Το αποτέλεσμα είναι το κάτωθι: FirstName LastName DOB Phone Paula Brown pb@herowndomain.org 5/24/ James Smith jim@supergig.co.uk 20/10/

32 SQL ALIASES Τα SQL aliases (ψευδώνυμα) χρησιμοποιούνται για πίνακες και για πεδία πινάκων. Τα ψευδώνυμα των πεδίων χρησιμοποιούνται για να γίνονται τα αποτελέσματα των ερωτημάτων πιο κατανοητά και ευανάγνωστα: SELECT Employee, SUM(Hours) As SumHoursPerEmployee FROM EmployeeHours GROUP BY Employee Στο προηγούμενο ερώτημα δημιουργήσαμε ένα ψευδώνυμο SQL alias το SumHoursPerEmployee και το αποτέλεσμα της εκτέλεσης του ερωτήματος θα είναι το εξής: Employee SumHoursPerEmployee John Smith 25 Allan Babel 24 Tina Crown 27 Στο επόμενο παράδειγμα βλέπουμε πως χρησιμοποιείτε το ψευδώνυμο σε πίνακες: SELECT Emp.Employee FROM EmployeeHours AS Emp Το αποτέλεσμα είναι το κάτωθι: Employee John Smith Allan Babel Tina Crown Τα ψευδώνυμα πινάκων είναι πολύ χρήσιμα όταν έχουμε να επιλέξουμε δεδομένα από πολλούς πίνακες. 32

33 SQL COUNT Η εντολή SQL COUNT είναι μια αθροιστική συνάρτηση και χρησιμοποιείτε για την καταμέτρηση του αριθμού των εγγραφών που επιστρέφονται από ένα ερώτημα επιλογής. Η σύνταξη της SQL COUNT: SELECT COUNT(Column1) FROM Table1 Αν θέλουμε να μετρήσουμε τον αριθμό των πελατών στον πίνακα Customers θα χρησιμοποιήσαμε το κάτωθι ερώτημα: SELECT COUNT(LastName) AS NumberOfCustomers FROM Customers Το αποτέλεσμα της εκτέλεσης του ερωτήματος είναι το εξής: NumberOfCustomers 4 33

34 SQL MAX Η συνάρτηση SQL MAX μας επιτρέπει την επιλογή της μέγιστης τιμής από ένα πεδίο. Η σύνταξή της είναι πολύ απλή και είναι η εξής: SELECT MAX(Column1) FROM Table1 Αν χρησιμοποιήσουμε τον γνωστό πίνακα Customers και προσπαθήσουμε να βρούμε την μεγαλύτερη ημερομηνία γέννησης τότε θα πρέπει να εκτελέσουμε το κάτωθι ερώτημα: SELECT MAX(DOB) AS MaxDOB FROM Customers 34

35 SQL MIN Η SQL MIN συνάρτηση μας επιτρέπει την επιλογή της ελάχιστης τιμής ενός πεδίου. Η σύνταξη της είναι απλή: SELECT MIN(Column1) FROM Table1 Αν χρησιμοποιήσουμε τον γνωστό πίνακα Customers και προσπαθήσουμε να βρούμε την μικρότερη ημερομηνία γέννησης τότε θα πρέπει να εκτελέσουμε το κάτωθι ερώτημα: SELECT MIN(DOB) AS MinDOB FROM Customers 35

36 SQL AVG Η SQL AVG συνάρτηση μας επιτρέπει την εξαγωγή του μέσου όρου τ ων τιμών ενός πεδίου. Η σύνταξή της είναι: SELECT AVG(Column1) FROM Table1 Αν υποθέσουμε ότι θέλουμε να βρούμε το μέσο όρο από το πεδίο SaleAmount ενός πίνακα Sales Sales: CustomerID Date SaleAmount 2 5/6/2004 $ /7/2004 $ /7/2004 $ /13/2004 $ /22/2004 $ θα χρησιμοποιήσουμε το κάτωθι ερώτημα: SELECT AVG(SaleAmount) AS AvgSaleAmount FROM Sales Θα επιστρέψει το εξής: AvgSaleAmount $

37 SQL SUM Η SQL SUM συνάρτηση μας επιτρέπει να υπολογίζουμε το άθροισμα των τιμών ενός αριθμητικού πεδίου. Η σύνταξή της είναι: SELECT SUM(Column1) FROM Table1 Χρησιμοποιούμε τον κάτωθι πίνακα: Sales: CustomerID Date SaleAmount 2 5/6/2004 $ /7/2004 $ /7/2004 $ /13/2004 $ /22/2004 $ Εκτελούμε το ακόλουθο ερώτημα: SELECT SUM(SaleAmount) FROM Sales Το αποτέλεσμα είναι: SaleAmount $ Φυσικά μπορούμε να εισάγουμε συγκεκριμένα κριτήρια στο WHERE τμήμα του SELECT και να μην επιλέξουμε όλες τις εγγραφές του πίνακα. Παράδειγμα CustomerID = 3, τότε έχουμε το εξής: SELECT SUM(SaleAmount) FROM Sales WHERE CustomerID = 3 37

38 Το αποτέλεσμα θα είναι: SaleAmount $

39 SQL GROUP BY Το SQL GROUP BY χρησιμοποιείται μαζί με SQL αθροιστικές ή άλλες συναρτήσεις (τις είδαμε προηγουμένως) όπως η SUM για να καθορίσει τρόπους ομαδοποίησης των αποτελεσμάτων βάση κάποιου πεδίου (ή κάποιων πεδίων). Ο καλύτερος τρόπος για να κατανοήσουμε τη χρήση του GROUP BY είναι με κάποιο παράδειγμα. Ας υποθέσουμε ότι έχουμε τον κάτωθι πίνακα EmployeeHours στον οποίο αποθηκεύουμε τις ώρες εργασίας των εργαζομένων ανά ημέρα σε μια επιχείρηση: Employee Date Hours John Smith 5/6/ Allan Babel 5/6/ Tina Crown 5/6/ John Smith 5/7/ Allan Babel 5/7/ Tina Crown 5/7/ John Smith 5/8/ Allan Babel 5/8/ Tina Crown 5/8/ Αν ο διευθυντής της επιχείρησης θέλει το άθροισμα των ωρών εργασίας των εργαζομένων πρέπει να εκτελέσει το κάτωθι ερώτημα: SELECT SUM (Hours) FROM EmployeeHours Αλλά αν θέλουμε να δούμε το άθροισμα των ωρών εργασίας ανά εργαζόμενο ξεχωριστά; Τότε πρέπει να αλλάξουμε το ερώτημα και να χρησιμοποιήσουμε το SQL GROUP BY: SELECT Employee, SUM (Hours) FROM EmployeeHours GROUP BY Employee Το αποτέλεσμα της εκτέλεσης του ερωτήματος θα είναι το εξής: 39

40 Employee John Smith 25 Allan Babel 24 Tina Crown 27 Hours Όπως μπορούμε να δούμε έχουμε μια γραμμή για κάθε εργαζόμενο, που μας δείχνει το συνολικό αριθμό ωρών εργασίας του. Το SQL GROUP BY χρησιμοποιείται και με άλλες συναρτήσεις όπως η SQL AVG: SELECT Employee, AVG(Hours) FROM EmployeeHours GROUP BY Employee Το αποτέλεσμα της εκτέλεσης του ερωτήματος θα είναι το εξής: Employee Hours John Smith 8.33 Allan Babel 8 Tina Crown 9 Στον συγκεκριμένο πίνακα έχει νόημα να εφαρμόσουμε το GROUP BY και στο πεδίο date για να δούμε το συνολικό αριθμό ωρών εργασίας ανά ημέρα. SELECT Date, SUM(Hours) FROM EmployeeHours GROUP BY Date Το αποτέλεσμα: Date Hours 5/6/ /7/ /8/

41 SQL HAVING Το SQL HAVING χρησιμοποιείται για να περιορίσει βάση συνθηκών την έξοδο ενός ερωτήματος θέτοντας μια συνάρτηση σε ένα πεδίο του ερωτήματος. Δεν μπορούμε να εισάγουμε κριτήρια σε ένα WHERE πάνω σε ένα πεδίο που βρίσκεται στο SELECT και στο οποίο εφαρμόζεται πάνω του μια συνάρτηση. Για παράδειγμα η εκτέλεση του κάτωθι ερωτήματος θα προκαλέσει σφάλμα εκτέλεσης: SELECT Employee, SUM (Hours) FROM EmployeeHours WHERE SUM (Hours) > 24 GROUP BY Employee Σε αυτή την περίπτωση χρησιμοποιούμε το SQL HAVING με σκοπό ακριβώς το να εισάγουμε κριτήριο ή κριτήρια στο αποτέλεσμα μιας συνάρτησης που εφαρμόζεται σε ένα πεδίο. SELECT Employee, SUM (Hours) FROM EmployeeHours GROUP BY Employee HAVING SUM (Hours) > 24 Το προηγούμενο ερώτημα θα επιλέξει και εμφανίσει όλους τους υπαλλήλους και το άθροισμα των ωρών εργασίας τους εφόσον το άθροισμα αυτό είναι μεγαλύτερο από 24. Employee Hours John Smith 25 Tina Crown 27 41

42 SQL JOIN Το SQL JOIN χρησιμοποιείται όταν θέλουμε να επιλέξουμε δεδομένα που προέρχονται από δύο ή περισσότερους πίνακες. Για να μπορέσουμε να χρησιμοποιήσουμε ένα JOIN για επιλογή δεδομένων από δύο (ή περισσότερους πίνακες) θα πρέπει οι πίνακες αυτές να σχετίζονται μεταξύ τους μέσω κάποιας συσχέτισης πεδίων τους. Για παράδειγμα έχουμε τους κάτωθι πίνακες: Customers: CustomerID FirstName LastName DOB Phone 1 John Smith John.Smith@yahoo.com 2/4/ Steven Goldfish goldfish@fishhere.net 4/4/ Paula Brown pb@herowndomain.org 5/24/ James Smith jim@supergig.co.uk 20/10/1980 Sales: CustomerID Date SaleAmount 2 5/6/2004 $ /7/2004 $ /7/2004 $ /13/2004 $ /22/2004 $ Μπορούμε εύκολα να δούμε ότι οι 2 πίνακες συσχετίζονται μέσο ενός κοινού πεδίου που ονομάζεται CustomerID και χάρη σε αυτό μπορούμε να επιλέξουμε δεδομένα που προέρχονται και από τους δύο πίνακες, ταιριάζοντας το κοινό αυτό πεδίο. Θεωρούμε το κάτωθι ερώτημα: SELECT Customers.FirstName, Customers.LastName, SUM(Sales.SaleAmount) AS SalesPerCustomer FROM Customers, Sales WHERE Customers.CustomerID = Sales.CustomerID 42

43 GROUP BY Customers.FirstName, Customers.LastName Το ερώτημα αυτό επιλέγει όλους τους πελάτες (όνομα και επίθετο) και το συνολικό ποσό που έχουν καταναλώσει σε αγορές. Το JOIN καθορίζεται μετά το WHERE και μας εκφράζει το γεγονός ότι οι δύο πίνακες έχουν ταιριασθεί βασιζόμενοι στο κοινό τους πεδίο CustomerID. Το αποτέλεσμα του ερωτήματος είναι: FirstName LastName SalesPerCustomers John Smith $99.95 Steven Goldfish $ Paula Brown $ James Smith $ Το προαναφερθέν ερώτημα μπορεί να γραφθεί και χρησιμοποιώντας τη λέξη JOIN ως εξής: SELECT Customers.FirstName, Customers.LastName, SUM(Sales.SaleAmount) AS SalesPerCustomer FROM Customers JOIN Sales ON Customers.CustomerID = Sales.CustomerID GROUP BY Customers.FirstName, Customers.LastName Υπάρχουν δύο τύποι των SQL JOINS, το INNER JOIN και το OUTER JOIN. Σε περίπτωση που δεν διευκρινίζεται τότε επιλέγεται το INNER JOIN ("INNER JOIN" = "JOIN"). To "INNER JOIN" θα επιλέξει όλες τις εγγραφές εκείνες από τους δύο πίνακες εφόσον υπάρχει κοινό σημείο μεταξύ των εγγραφών των δύο πινάκων. Δηλαδή θα επιστρέψει πληροφορίες για τους πελάτες που έχουν ήδη παραγγείλει κάτι. Στην περίπτωση που έχουμε πελάτη στον πίνακα Customers και δεν έχει παραγγείλει κάτι ακόμη (δεν υπάρχει δηλαδή εγγραφή στον πίνακα Sales με αυτό το CustomerID) τότε δεν θα εμφανισθεί στα αποτελέσματα του ερωτήματος. Αν ο πίνακας Sales έχει τις ακόλουθες εγγραφές: CustomerID Date SaleAmount 2 5/6/2004 $ /6/2004 $99.95 Αν χρησιμοποιήσουμε το προηγούμενο SQL JOIN, θα έχουμε: 43

44 SELECT Customers.FirstName, Customers.LastName, SUM(Sales.SaleAmount) AS SalesPerCustomer FROM Customers JOIN Sales ON Customers.CustomerID = Sales.CustomerID GROUP BY Customers.FirstName, Customers.LastName Το αποτέλεσμα: FirstName LastName SalesPerCustomers John Smith $99.95 Steven Goldfish $ Παρότι η Paula και ο James υπάρχουν ως πελάτες, δεν εμφανίζονται στα αποτελέσματα διότι δεν έχον καμία αγορά μέχρι τώρα.. Αν θέλουμε να εμφανίσουμε όλους τους πελάτες μας και τις αγορές τους, ανεξαρτήτως του γεγονότος αν έχουν αγοράσει κάτι ή όχι, τότε χρησιμοποιούμε το OUTER JOIN. Ο δεύτερος τύπος του JOIN καλείται OUTER JOIN και έχει δύο υποκατηγορίες που ονομάζονται LEFT OUTER JOIN και RIGHT OUTER JOIN. Το LEFT OUTER JOIN ή απλά LEFT JOIN επιλέγει όλες τις εγγραφές από το πρώτο πίνακα που εμφανίζεται στο FROM δίχως να υπολογίσει αν έχει κάποιο ταίρι στο δεύτερο πίνακα. Ελαφρώς αλλάζουμε το ερώτημά μας: SELECT Customers.FirstName, Customers.LastName, SUM(Sales.SaleAmount) AS SalesPerCustomer FROM Customers LEFT JOIN Sales ON Customers.CustomerID = Sales.CustomerID GROUP BY Customers.FirstName, Customers.LastName Και ας υποθέσουμε ότι ο πίνακας Sales έχει τις εξής εγγραφές: CustomerID Date SaleAmount 2 5/6/2004 $ /6/2004 $99.95 Το αποτέλεσμα θα είναι το εξής: FirstName LastName SalesPerCustomers 44

45 John Smith $99.95 Steven Goldfish $ Paula Brown NULL James Smith NULL Όπως βλέπουμε έχει επιλέξει όλες τις εγγραφές από τον Customers (πρώτο πίνακα). Για κάθε εγγραφή του πίνακα Customers που δεν έχει κάποιο ταίρι (ίδιο κωδικό) στον SALES (δεύτερο πίνακα) το SalerPerCustomers είναι NULL (NULL σημαίνει ότι η τιμή του πεδίου είναι κενή). Το RIGHT OUTER JOIN ή απλά RIGHT JOIN συμπεριφέρεται ακριβώς όπως το LEFT JOIN, η διαφορά τους είναι ότι το RIGHT JOIN επιστρέφει όλες τις εγγραφές από τον δεύτερο πίνακα (το δεξιό πίνακα στο JOIN τμήμα του ερωτήματος). 45

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

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

Διαβάστε περισσότερα

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

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ Η συνθήκη WHERE βάζει περιορισμούς στις εγγραφές που επιστρέφονται. Ο όρος ORDER BY ταξινομεί τις εγγραφές που επιστρέφονται. Παράδειγμα: SELECT * FROM table_name ORDER

Διαβάστε περισσότερα

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML. Κεφάλαιο 5 Η γλώσσα SQL 5.1 Εισαγωγή Η γλώσσα SQL (Structured Query Language) είναι η πιο διαδεδομένη διαλογική γλώσσα ερωταπαντήσεων που χρησιμοποιείται για την επικοινωνία του χρήστη με σχεσιακές ΒΔ.

Διαβάστε περισσότερα

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

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι Ιατρική Πληροφορική Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι Σημειώσεις μαθήματος: http://medisp.bme.teiath.gr/eclass/courses/tio103/ https://eclass.teiath.gr/courses/tio100/

Διαβάστε περισσότερα

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

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. Ιατρική Πληροφορική Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. Χρήσιμοι Σύνδεσμοι Σημειώσεις μαθήματος: http://medisp.bme.teiath.gr/eclass/courses/tio103/ https://eclass.teiath.gr/courses/tio100/

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΤΡΙΤΟ Foreign key, Index, DML Ερωτήµατα Γιώργος Μαρκοµανώλης Περιεχόµενα Foreign Key... 1 Index... 4 DML Ερωτήµατα... 6 INSERT...

Διαβάστε περισσότερα

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

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ Πίνακας Πεδίο Τύπος Κύριο κλειδί Αναφορική ακεραιότητα οντοτήτων Ξένο κλειδί Αναφορική ακεραιότητα δεδομένων Δρ. Κεραμόπουλος Ευκλείδης 2 ΚΥΡΙΟ ΚΛΕΙΔΙ ΦΟΙΤΗΤΗΣ ΑΜ CHAR(5) ΟΝΟΜΑ VARCHAR(20)

Διαβάστε περισσότερα

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

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων Η γλώσσα SQL H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων H SQL έχει διάφορα τμήματα: Γλώσσα Ορισμού Δεδομένων (ΓΟΔ) Γλώσσα Χειρισμού Δεδομένων (ΓΧΔ) Ενσωματωμένη

Διαβάστε περισσότερα

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

Σχεδιασμός Βάσεων Δεδομένων Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Σχεδιασμός Βάσεων Δεδομένων Εργαστήριο 4 Δρ. Βασιλική Κούφη Περιεχόμενα Υλοποίηση Βάσεως Δεδομένων Εκτέλεση ερωτημάτων SQL στην Βάση Δεδομένων BHMA 1. Σχεδιασμός

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση Βάσεις Δεδομένων 5η εργαστηριακή άσκηση SQL Δρ. Μαρία Ευθυμιοπούλου Εντολές sql Για να γράψετε ή να επικολλήσετε εντολές sql πηγαίνετε από το μενού SQL Workshop και επιλέγετε το SQL Commands 1. Δημιουργία

Διαβάστε περισσότερα

SQL Data Manipulation Language

SQL Data Manipulation Language SQL Data Manipulation Language Τελεστής union συνδυάζει subselects τα οποία παράγουν συμβατές σχέσεις γενική μορφή: subselect {union [all] subselect} περιορισμός: τα subselects δεν μπορούν να περιέχουν

Διαβάστε περισσότερα

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

Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης Περιεχόμενα 1 Γενική περιγραφή του προβλήματος 2 Μοντελοποίηση Ο/Σ 3 Σχεσιακό μοντέλο, SQL 4 Ερωτήματα

Διαβάστε περισσότερα

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

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2) Εργαστήριο βάσεων δεδομένων Εισαγωγή στη MySQL (2) Παράδειγμα -ER Παράδειγμα-Σχεσιακό Παράδειγμα Δημιουργία Πινάκων CREATE TABLE student( name VARCHAR(25) DEFAULT 'unknown' NOT NULL, lastname VARCHAR(25)

Διαβάστε περισσότερα

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής. ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Χειμερινό Εξάμηνο 2012 SQL Structured Query Language Δρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ 1 Πράξεις της σχεσιακής άλγεβρας ΠΡΑΞΗ ΣΚΟΠΟΣ

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων (Databases) Βάσεις Δεδομένων (Databases) ΕΠΛ 342 Χειμερινό Εξάμηνο 2011 Διδάσκοντες Καθηγητές Γιώργος Σαμάρας (ΧΩΔ01 109) Δημιουργία Πεδίων Ορισμού Πεδίο Ορισμού είναι συστατικό του σχήματος για τον ορισμό των μακροεντολών

Διαβάστε περισσότερα

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

Σχεδίαση Βάσεων Δεδομένων Οδηγίες Μέρος 1: Απαντήστε κάθε ερώτηση. 1. Ποια είναι τα πλεονεκτήματα που παρέχει το Περιβάλλον Βάσεων Δεδομένων της Oracle για τις επιχειρήσεις; Το σύστημα διαχείρισης βάσεων δεδομένων της Oracle δίνει

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ Εισαγωγή στη MySQL Νικόλαος Ζ. Ζάχαρης Τι είναι η MySql Είναι ένα Σχεσιακό Σύστημα Διαχείρισης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY. Η γλώσσα ορισμού δεδομένων της SQL Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 Περιεχόμενα 1 Δημιουργία πινάκων με την

Διαβάστε περισσότερα

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

Τμήμα Πληροφορικής ΑΠΘ 2013-2014 Βάσεις Δεδομένων Εργαστήριο V Τμήμα Πληροφορικής ΑΠΘ 2013-2014 2 Σκοπός του 5 ου εργαστηρίου Σκοπός αυτού του εργαστηρίου είναι: η μελέτη ερωτημάτων τροποποίησης δομής / δεδομένων η μελέτη σύνθετων ερωτημάτων

Διαβάστε περισσότερα

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

Διαχείριση Πολιτισμικών Δεδομένων Διαχείριση Πολιτισμικών Δεδομένων Μάθημα 7 Γλώσσα Ερωτημάτων SQL Τζανέτος Πομόνης ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Συντήρησης Πολιτισμικής Κληρονομιάς Βασικές Έννοιες Σχεσιακή

Διαβάστε περισσότερα

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

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Παραδοτέα 1. Το αρχείο.mdb της βάσης δεδομένων σας σε ACCESS 2. Ένα CD που θα αναγράφει το ονοματεπώνυμο του σπουδαστή και το ΑΕΜ και θα περιέχει το αρχείο.mdb της βάσης δεδομένων καθώς και το εγχειρίδιο

Διαβάστε περισσότερα

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

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY. Η γλώσσα ορισμού δεδομένων της SQL Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr astavrak@uoi.gr @AStavrakoudis Άνοιξη 2016 1 / 85 Περιεχόμενα

Διαβάστε περισσότερα

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

Το σχεσιακό μοντέλο βάσεων δεδομένων ΕΣΔ232 Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας Το σχεσιακό μοντέλο βάσεων δεδομένων Περιεχόμενα Περιεχόμενα - Βιβλιογραφία Ενότητας Εισαγωγή στο σχεσιακό μοντέλο Σχεσιακές γλώσσες ερωτημάτων Περιορισμοί

Διαβάστε περισσότερα

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

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2) Εργαστήριο βάσεων δεδομένων Εισαγωγή στη MySQL (2) Παράδειγμα - ER Παράδειγμα-Σχεσιακό Παράδειγμα Δημιουργία Πινάκων CREATE TABLE student( name VARCHAR(25) DEFAULT 'unknown' NOT NULL, lastnamevarchar(25)

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Εντολές ορισμού δεδομένων (DDL) στην SQL Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL

ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL 3.1 Εντολή επιλογής δεδομένων Η εντολή επιλογής δεδομένων select έχει την γενική μορφή SELECT FROM [WHERE ] [GROUP BY ]

Διαβάστε περισσότερα

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

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης Φροντιστήριο SQL Examples Ξένου Ρουμπίνη 1 SQL-DDL Data Definition/Description Language (DDL): προσδιορίζουν τη δομή ή το σχήμα των δεδομένων.

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 4ο Μάθημα: SQL - Παράδειγμα. Δρ. Κωνσταντίνος Χ. Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας 4ο Μάθημα: SQL - Παράδειγμα Δρ. Κωνσταντίνος Χ. Γιωτόπουλος SQL Εργασία Customer AFM Onoma Eponimo DOB Address Sex 131313 Dimitris

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου] ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου] Επιμέλεια: Καρβούνης Ευάγγελος, PhD, Επιστημονικός Συνεργάτης του Τμήματος Αντωνιάδης Νικόλαος, Καθηγητής Οκτώβριος

Διαβάστε περισσότερα

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων με βάση slides από A. Silberschatz, H. Korth, S. Sudarshan, Database System Concepts, 5 th edition Περιορισμοί πεδίου τιμών Περιορισμοί ακεραιότητας

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου] ΤΕΙ ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου] Χειμερινό Εξ. 2013-14 Επιμέλεια: Καρβούνης Ευάγγελος Οκτώβριος 2013 Περιεχόμενα 1 Σχεδιασμός Βάσης...

Διαβάστε περισσότερα

DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT. Ενημέρωση βάσης δεδομένων με SQL DELETE, UPDATE, INSERT Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 88 Περιεχόμενα 1 Γενικά για την αποθήκευση δεδομένων και την ενημέρωση της

Διαβάστε περισσότερα

Υποερωτήματα στην SQL Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr 1 / 31 Η ανάγκη για υποερώτημα Ποιος υπάλληλος παίρνει το μεγαλύτερο μισθό; Αν ξέραμε το μεγαλύτερο μισθό, πχ 2000, θα γράφαμε:

Διαβάστε περισσότερα

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

GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP. SQL: Ερωτήματα ομαδοποίησης και συνάθροισης GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2016 1 / 56 Περιεχόμενα 1 Εισαγωγή, γενικές

Διαβάστε περισσότερα

DELETE, UPDATE, INSERT

DELETE, UPDATE, INSERT Ενημέρωση βάσης δεδομένων με SQL DELETE, UPDATE, INSERT Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr astavrak@uoi.gr @AStavrakoudis Άνοιξη 2016 1 / 103 Περιεχόμενα 1 Γενικά για την αποθήκευση

Διαβάστε περισσότερα

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

Τμήμα Πληροφορικής ΑΠΘ Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ 2013-2014 2 Σκοπός του 2 ου εργαστηρίου Σκοπός αυτού του εργαστηρίου είναι: Η μελέτη ερωτημάτων σε μία μόνο σχέση. Εξετάζουμε τους τελεστές επιλογής

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Β. Μεγαλοοικονόμου, Δ. Χριστοδουλάκης Σχεσιακό Μοντέλο SQL- Μέρος Β Ακ.Έτος 2008-09 (μεβάσητιςσημειώσειςτωνsilberchatz, Korth και Sudarshan και του C. Faloutsos

Διαβάστε περισσότερα

Αρχεία και Βάσεις Δεδομένων

Αρχεία και Βάσεις Δεδομένων ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Αρχεία και Βάσεις Δεδομένων Διάλεξη 10η: SQL Μέρος 3ο Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών SQL Data Manipulation Language Τελεστής union συνδυάζει subselects

Διαβάστε περισσότερα

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

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 2 ο Σύνολο Ασκήσεων Οι βαθμοί θα ανακοινωθούν αύριο μαζί με τους βαθμούς της προγραμματιστικής άσκησης Τα αστεράκια δείχνουν τον εκτιμώμενο βαθμό δυσκολίας (*) εύκολο (**) μέτριο (***) δύσκολο Βάσεις Δεδομένων

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων. Εργαστήριο ΙV. Τμήμα Πληροφορικής ΑΠΘ 2014-2015 Βάσεις Δεδομένων Εργαστήριο ΙV Τμήμα Πληροφορικής ΑΠΘ 2014-2015 2 Σκοπός του 4 ου εργαστηρίου Σκοπός αυτού του εργαστηρίου είναι: η μελέτη ερωτημάτων σύνδεσης η μελέτη ερωτημάτων συνάθροισης 3 Εκφράσεις

Διαβάστε περισσότερα

Παράδειγμα Select Introduction Group By Join Aliases.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (3)

Παράδειγμα Select Introduction Group By Join Aliases.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (3) Εργαστήριο Βάσεων Δεδομένων Εισαγωγή στη MySQL (3) ER Σχεσιακό Create Tables 1/4 CREATE TABLE student( name VARCHAR(25) DEFAULT 'unknown' NOT NULL, lastname VARCHAR(25) DEFAULT 'unknown' NOT NULL, AM INT(5)

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Εισαγωγή Μοντελοποίηση Στα προηγούμενα μαθήματα: Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων) Λογικός

Διαβάστε περισσότερα

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

Εργαστήριο Βάσεων Δεδομένων. Triggers Εργαστήριο Βάσεων Δεδομένων Triggers CREATE TRIGGER Δήλωση δημιουργίας Trigger: CREATE [DEFINER = { user CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt

Διαβάστε περισσότερα

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

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11 ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model SQL Μαθ. #11 Ε-R Model for a COMPANY database The COMPANY relational database schema A relational database instance of the COMPANY schema SQL Μια γλώσσα σχεσιακής βάσης

Διαβάστε περισσότερα

SQL: Συναρτήσεις Συνάθροισης

SQL: Συναρτήσεις Συνάθροισης SQL: Συναρτήσεις Συνάθροισης Συναρτήσεις Συνάθροισης (Aggregate Functions) Εφαρμόζονται πάνω σε σύνολα τιμών γνωρισμάτων. count, max, min, avg, sum Περιορισμοί: η συνάρτηση count μπορεί να εφαρμοστεί σε

Διαβάστε περισσότερα

ΕΝΗΜΕΡΩΣΗ ΔΕΔΟΜΕΝΩΝ. UPDATE products SET prod_fpa=19 WHERE prod_fpa=23; SELECT prod_descr,purchase,purchase_date FROM products WHERE prod_fpa=9;

ΕΝΗΜΕΡΩΣΗ ΔΕΔΟΜΕΝΩΝ. UPDATE products SET prod_fpa=19 WHERE prod_fpa=23; SELECT prod_descr,purchase,purchase_date FROM products WHERE prod_fpa=9; ΕΝΗΜΕΡΩΣΗ ΔΕΔΟΜΕΝΩΝ 4.10 Επαναφέρετε πάλι το είδος 20 (όλο το στιγμιότυπο) στον πίνακα products με τις εντολές INSERT INTO. 4.11 Διαγράψτε το είδος 12 (όλο το στιγμιότυπο) στον πίνακα products και επαναφέρετε

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Ενημέρωση βάσης δεδομένων με τις εντολές INSERT, DELETE, UPDATE Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες

Διαβάστε περισσότερα

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

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3 ΔΕΣΠΟΙΝΑ ΠΑΠΑΚΩΝΣΤΑΝΤΙΝΟΥ dpap@unipi.gr 2 ΤΙ ΕΙΝΑΙ Η SQL? (1/2) Η SQL (Structured Query Language) αποτελεί μια πρότυπη

Διαβάστε περισσότερα

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

Παράδειγμα Insert Update Delete Alter.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (2) Εργαστήριο Βάσεων Δεδομένων Εισαγωγή στη MySQL (2) ER Σχεσιακό Create Tables 1/4 CREATE TABLE student( name VARCHAR(25) DEFAULT 'unknown' NOT NULL, lastname VARCHAR(25) DEFAULT 'unknown' NOT NULL, AM INT(5)

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II SQL Ερωτήματα ομαδοποίησης και συνάθροισης Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Βάσεις Δεδομένων 2009-2010 Ευαγγελία Πιτουρά 1 Εισαγωγή Μοντελοποίηση Στα προηγούμενα μαθήματα: Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με

Διαβάστε περισσότερα

MOCϦϣΎϬϴϠϋϝϮμΤϟϢΗϊΟήϤϟ. USE northwind SELECT employeeid, lastname, firstname, title FROM employees GO

MOCϦϣΎϬϴϠϋϝϮμΤϟϢΗϊΟήϤϟ. USE northwind SELECT employeeid, lastname, firstname, title FROM employees GO MS_SQL SERVERήϣϭϷϊΟήϣ ΓήϛάΘϟϪϨϣϑΪϬϟϦϜϟϭSQL SERVERήϣϭΡήηϊΟήϤϟάϫϦϣϑΪϬϟβϴϟ άϫϲϓγωέϯϟεύϣϯϡόϥϟέϊμϣϥ ΑΎϤϠϋSQL SERVER ήϣδαύθϝϟδτθτμϟδϙϳήτϟύα MOCϦϣΎϬϴϠϋϝϮμΤϟϢΗϊΟήϤϟ MOC 2071 ΏΔλΎΨϟήϣϭϷΡήθΑΪΒϨγϭ SELECTΔϠϤΟϡΪΨΘγΎΑϝϭΪΟϦϣΕΎϧΎϴΒϟωΎΟήΘγ

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων Εισαγωγή στη χρήση της γλώσσας SQL και στον προγραμματισμό εφαρμογών βάσεων δεδομένων Θα χρησιμοποιήσουμε το Σχεσιακό Σύστημα (προϊόν)

Διαβάστε περισσότερα

Οψεις (VIEWS) στην SQL Η εντολή CREATE VIEW Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 55 Περιεχόμενα 1 Εισαγωγικά για τις όψεις 2 Οψεις και συζεύξεις 3 Επιπλέον χρήση των όψεων

Διαβάστε περισσότερα

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

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL ΗΥ360 - ΑΡΧΕΙΑ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL ΛΙΛΙΤΣΗΣ ΠΡΟΔΡΟΜΟΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ SQL - STRUCTURED QUERY LANGUAGE 2 Μια γλώσσα επερωτήσεων για τη διαχείριση Σχεσιακών Βάσεων

Διαβάστε περισσότερα

1. ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΤΗΣ MySQL

1. ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΤΗΣ MySQL 1. ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΤΗΣ MySQL Τύποι στην MySQL Κείμενο Αριθμοί Ημερομηνίες και ώρες Επιλογή του τύπου Στήλες ονομάτων τύπος κειμένου Στήλες ποσών ή ποσοτήτων Αριθμητικός τύπος Στήλες ημερομηνιών τύπος ημερομηνίας

Διαβάστε περισσότερα

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

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Βάσεις εδοµένων 2011-2012 Ευαγγελία Πιτουρά 1 Εισαγωγή Μοντελοποίηση Στα προηγούµενα µαθήµατα: Εννοιολογικός Σχεδιασµός Βάσεων Δεδοµένων (µε

Διαβάστε περισσότερα

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

Εισαγωγή στην πληροφορική Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στην πληροφορική Ενότητα 6: Εισαγωγή στις βάσεις δεδομένων (Μέρος Β) Αγγελίδης Παντελής Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης

Διαβάστε περισσότερα

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

SQL Τύποι Δεδομένων Δημιουργία Πίνακα Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1) Εργαστήριο Βάσεων Δεδομένων Εισαγωγή στη My (1) Η (Structured Query Language) είναι μια πλήρης γλώσσα Βάσεων Δεδομενων Είναι δομημένη σε βάσεις που περιέχουν πίνακες Οι πίνακες αποτελούνται από γραμμές

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων. Ενότητα 7.2: Structured Query Language - 2 ο Μέρος. Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Βάσεις Δεδομένων Ενότητα 7.2: Structured Query Language - 2 ο Μέρος Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων Άδειες Χρήσης

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language) Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language) Παύλος Εφραιμίδης Βάσεις Δεδομένων Η Γλώσσα SQL - Μέρος Πρώτο 1 SQL - Structured Query Language (1) Ένας από τους βασικούς λόγους της απόλυτης επικράτησης

Διαβάστε περισσότερα

Το Μοντέλο των Οντοτήτων Συσχετίσεων Entity Relationship Model. Νικόλαος Ζ. Ζάχαρης

Το Μοντέλο των Οντοτήτων Συσχετίσεων Entity Relationship Model. Νικόλαος Ζ. Ζάχαρης Το Μοντέλο των Οντοτήτων Συσχετίσεων Entity Relationship Model Νικόλαος Ζ. Ζάχαρης Τι είναι το ERΜ Είναι ένα μοντέλο αναπαράστασης των δεδομένων και των συσχετίσεων τους, και χρησιμοποιείται κατά τη φάση

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΤΕΤΑΡΤΟ Insert, Update, Delete, Ένωση πινάκων Γιώργος Μαρκοµανώλης Περιεχόµενα Group By... 1 Having...1 Οrder By... 2 Εντολή Insert...

Διαβάστε περισσότερα

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

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples ΙΙ Ξένου Ρουμπίνη ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης Φροντιστήριο SQL Examples ΙΙ Ξένου Ρουμπίνη 1 SQL(DML) - Query Example 1 Query:1 Βρείτε τα ονόματα των έργων που δεν αφορούν το τμήμα research

Διαβάστε περισσότερα

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο) TEC610 (ΣΤ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Εαρινό εξάμηνο Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά

Διαβάστε περισσότερα

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

ΗΓλώσσαSQL. Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων ΗΓλώσσαSQL Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων Εισαγωγή Η δομημένη γλώσσα ερωτημάτων SQL (Structured Query Language) χρησιμοποιείται για τους χρήστες του ΣΔΒΔ

Διαβάστε περισσότερα

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL Διδάσκων του μαθήματος 2 Δρ. Λεωνίδας Φραγγίδης Επίκουρος Καθηγητής Τμήμα Διοίκησης Επιχειρήσεων ΤΕΙ ΑΜΘ Email: fragidis@teiemt.gr Ώρες Γραφείου: Τρίτη (10:00 12:00) Προτεινόμενα

Διαβάστε περισσότερα

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

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL ΓΙΑΝΝΗΣ ΑΓΑΘΑΓΓΕΛΟΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΗΥ360 - ΑΡΧΕΙΑ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL SQL SQL - STRUCTURED QUERY LANGUAGE 2 Μια γλώσσα επερωτήσεων για τη διαχείριση Σχεσιακών

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΕΠΛ 342 Βάσεις εδοµένων

ΕΠΛ 342 Βάσεις εδοµένων ΕΠΛ 342 Βάσεις εδοµένων Εργαστήριο 3 ο SQL - DML Ιωάννα Συρίµη syrimi@ucy.ac.cy Data Manipulation Language Εισαγωγή νέων Εγγραφών Insert Into ιαγραφή Εγγραφών Delete Αλλαγή υφιστάµενων Εγγραφών Update

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων. Εισαγωγή για το Εργαστήριο. Δρ. Τιάκας Ελευθέριος. Τμήμα Πληροφορικής ΑΠΘ 2015-2016 Βάσεις Δεδομένων Εισαγωγή για το Εργαστήριο Δρ. Τιάκας Ελευθέριος Τμήμα Πληροφορικής ΑΠΘ 2015-2016 2 Βασικοί στόχοι Μερικοί βασικοί στόχοι του εργαστηρίου είναι: Η ικανότητα ανάλυσης των απαιτήσεων, κατασκευής

Διαβάστε περισσότερα

SQL Server 2005 Tutorial Αςκήςεισ. Γεράσιμος Μαρκέτος InfoLab, Τμήμα Ρληροφορικήσ, Ρανεπιςτήμιο Ρειραιϊσ (http://infolab.cs.unipi.

SQL Server 2005 Tutorial Αςκήςεισ. Γεράσιμος Μαρκέτος InfoLab, Τμήμα Ρληροφορικήσ, Ρανεπιςτήμιο Ρειραιϊσ (http://infolab.cs.unipi. SQL Server 2005 Tutorial Αςκήςεισ Γεράσιμος Μαρκέτος InfoLab, Τμήμα Ρληροφορικήσ, Ρανεπιςτήμιο Ρειραιϊσ (http://infolab.cs.unipi.gr/) Εργαςτηριακή Άςκηςη Σχεδιάςτε ςτον SQL Server 2005 μια βάςη δεδομζνων

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1) Βάσεις Δεδομένων Η γλώσσα SQL Structured Query Language) Παύλος Εφραιμίδης SQL - Structured Query Language 1) Ένας από τους βασικούς λόγους της απόλυτης επικράτησης των Σχεσιακών ΒΔ Εξασφαλίζει μεταφερσιμότητα

Διαβάστε περισσότερα

ΔΟΜΕΣ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ

ΔΟΜΕΣ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΔΟΜΕΣ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΣΗΜΕΙΩΣΕΙΣ (Κατασκευή ΒΔ με τη ΓΛΩΣΣΑ MySQL) ΕΙΣΑΓΩΓΗ Βάση δεδομένων-βδ (Data Base-DB) είναι ένα πλήθος στοιχείων συναφών μεταξύ τους, τοποθετημένα και ταξινομημένα

Διαβάστε περισσότερα

Εισαγωγή στις βάσεις δεδομένων - Η ανατομία μιας βάσης δεδομένων

Εισαγωγή στις βάσεις δεδομένων - Η ανατομία μιας βάσης δεδομένων ΕΣΔ516 Τεχνολογίες Διαδικτύου Εισαγωγή στις βάσεις δεδομένων - Η ανατομία μιας βάσης δεδομένων Περιεχόμενα - Βιβλιογραφία Ενότητας Περιεχόμενα Ορισμοί Συστατικά στοιχεία εννοιολογικής σχεδίασης Συστατικά

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Όψεις (views) στην SQL Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι Απλά ερωτήματα Επιλογής Ερωτήματα με Ενώσεις πινάκων Ερωτήματα με Παραμετρικά Κριτήρια Ερωτήματα με Υπολογιζόμενα πεδία Απλά ερωτήματα Επιλογής Τα Ερωτήματα μας επιτρέπουν

Διαβάστε περισσότερα

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

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: Ενημέρωση Βάσης Δεδομένων (INSERT, UPDATE, DELETE) SQL DCL (GRANT, DENY, REVOKE)

Διαβάστε περισσότερα

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Ενότητα: 12Η ΕΡΓΑΣΤΗΡΙΑΚΗ ΑΣΚΗΣΗ Δρ. ΠΑΝΤΕΛΗΣ ΑΓΓΕΛΙΔΗΣ Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative

Διαβάστε περισσότερα

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

Τεχνολογία Πολιτισμικού Λογισμικού Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Τεχνολογία Πολιτισμικού Λογισμικού Ενότητα 10: Γλώσσα Ερωτημάτων SQL Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Β. Μεγαλοοικονόμου, Δ. Χριστοδουλάκης Query by Example QBE Ακ.Έτος 2008-09 (μεβάσητιςσημειώσειςτωνsilberchatz, Korth και Sudarshan και του C. Faloutsos CMU)

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση Βάσεις Δεδομένων 2η εργαστηριακή άσκηση Εισαγωγή στο περιβάλλον της oracle Δημιουργία πινάκων Δρ. Εύη Φαλιάγκα 1. Login Χρησιμοποιώντας έναν web explorer, μπαίνετε στο http://10.0.0.6:8080/apex και συμπληρώνετε

Διαβάστε περισσότερα

ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ MYSQL

ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ MYSQL Αντώνης Χρυσόπουλος Χριστίνα Αυδίκου Στέλιος Μόσχογλου Θεοδόσης Σουργκούνης ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ MYSQL MySQL For Pros Διαλέχτε, καλέ κυρία, Διαλέχτε 1. Ταξινόμηση 2. Περιορισμοί 3. Τελεστές LIKE, IN, BETWEEN

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων 3η εργαστηριακή άσκηση Βάσεις Δεδομένων 3η εργαστηριακή άσκηση Εισαγωγή στο περιβάλλον της oracle Συσχέτιση πινάκων (εισαγωγή ξένων κλειδιών) Δρ. Μαρία Ευθυμιοπούλου 1. Εμφάνιση πινάκων στο Workspace Στο προηγούμενο εργαστήριο

Διαβάστε περισσότερα

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

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι Ιατρική Πληροφορική Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι Σημειώσεις μαθήματος: http://medisp.bme.teiath.gr/eclass/courses/tio103/ https://eclass.teiath.gr/courses/tio100/

Διαβάστε περισσότερα

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

Βάσεις δεδομένων. (7 ο μάθημα) Ηρακλής Βαρλάμης Βάσεις δεδομένων (7 ο μάθημα) Ηρακλής Βαρλάμης varlamis@hua.gr Περιεχόμενα SQL Βασικές πράξεις Πράξεις συνόλων Συνενώσεις Συναθροιστικές συναρτήσεις Ομαδοποιήσεις 10/4/2014 Βάσεις Δεδομένων 2 Η γλώσσα

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων. Ενότητα 7.1: Structured Query Language - 1 ο Μέρος. Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Βάσεις Δεδομένων Ενότητα 7.1: Structured Query Language - 1 ο Μέρος Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων Άδειες Χρήσης

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων Ι SQL Μέρος 1 ο. Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ Βάσεις Δεδομένων Ι - 03 SQL Μέρος 1 ο Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ ΤΕΙ Θεσσαλίας Γιατί SQL; Η SQL είναι γλώσσα πολύ υψηλού επιπέδου Επιτρέπει να λέμε εύκολα τι θέλουμε να κάνουμε

Διαβάστε περισσότερα

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις Σχεδιασμός Πληροφοριακών Συστημάτων Σημειώσεις Συμπλήρωμα για τις Εκδόσεις 4 (4.1) και 4.2 των Σημειώσεων Έκδοση 19/2/2011 Μάριος Μάντακας mmantak@gmail.com Διαφορά από την προηγούμενη Έκδοση: Προσθήκη

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3 Διδάσκων: Γιάννης Θεοδωρίδης Συντάκτης Κειμένου: Βαγγέλης Κατσικάρος Φεβρουάριος 2008 Περιεχόμενα ξένα κλειδιά

Διαβάστε περισσότερα

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

Ενεργές ΒΔ. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Βάσεις Δεδομένων Ενεργές ΒΔ 1 Ενεργές ΒΔ Παύλος Εφραιμίδης pefraimi ee.duth.gr Βάσεις Δεδομένων Ενεργές ΒΔ 1 Active Databases Υποστηρίζουν την αυτόματη εκτέλεση ενεργειών όταν συμβούν συγκεκριμένα γεγονότα Ένας διαδεδομένος μηχανισμός

Διαβάστε περισσότερα

Υποερωτήματα SQL Παραδείγματα και εφαρμογές από τη βάση δεδομένων company Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr astavrak@uoi.gr @AStavrakoudis Άνοιξη 2016 1 / 55 Περιεχόμενα 1 Απλά υποερωτήματα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων (Databases) Βάσεις Δεδομένων (Databases) ΕΠΛ 342 Χειμερινό Εξάμηνο 2011 Διδάσκοντες Καθηγητές Γιώργος Σαμάρας (ΧΩΔ01 109) Δομημένη Γλώσσα Ερωτήσεων SQL DML Σχεσιακοί Τελεστές Τελεστές Συνόλων Ανάκτηση με NULLs Συνδέσεις-Συνενώσεις

Διαβάστε περισσότερα