Η αναλυτική περιγραφή της γλώσσας SQL αποτελεί αντικείµενο των σελίδων που ακολουθούν. Η ΓΛΩΣΣΑ ΟΡΙΣΜΟΥ Ε ΟΜΕΝΩΝ

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

Download "Η αναλυτική περιγραφή της γλώσσας SQL αποτελεί αντικείµενο των σελίδων που ακολουθούν. Η ΓΛΩΣΣΑ ΟΡΙΣΜΟΥ Ε ΟΜΕΝΩΝ"

Transcript

1 Κεφάλαιο 6 SQL Στο κεφάλαιο αυτό παρουσιάζεται η δοµηµένη γλώσσα ερωτοαποκρίσεων (Structured Query Language, SQL) που χρησιµοποιείται για τη διαχείριση των δεδοµένων της βάσης. Η διαχείριση αυτή περιλαµβάνει τόσο τη δηµιουργία και µεταβολή των πινάκων της εφαρµογής, όσο και την καταχώρηση και ανάκτηση δεδοµένων µε βάση συγκεκριµένα κριτήρια επιλογής. Όπως έχει ήδη αναφερθεί, µια από τις βασικές λειτουργίες ενός σχεσιακού συστήµατος διαχείρισης βάσεων δεδοµένων, είναι η διαχείριση του πληροφοριακού περιεχοµένου που είναι αποθηκευµένο στη βάση, και οργανωµένο σε πίνακες οι οποίοι συσχετίζονται µεταξύ τους. Οι πιο σηµαντικές µορφές αυτής της διαχείρισης είναι η εισαγωγή, µεταβολή και διαγραφή των εγγραφών των πινάκων της βάσης διεργασίες οι οποίες οδηγούν στη µεταβολή του πληροφοριακού περιεχοµένου αλλά και η επιλογή και εµφάνιση των εγγραφών των πινάκων µε βάση κάποια κριτήρια αναζήτησης. Πριν βέβαια πραγµατοποιηθούν όλες οι παραπάνω ενέργειες, θα πρέπει να δηµιουργήσουµε τους πίνακες της βάσης και να ορίσουµε τις συσχετίσεις που υφίστανται ανάµεσά στα πεδία τους, µε βάση το λογικό σχεδιασµό του συστήµατος που έχουµε περιγράψει σε προηγούµενο κεφάλαιο. Αυτές δύο βασικές οµάδες λειτουργιών η δηµιουργία του σχεσιακού σχή- µατος και η διαχείριση του πληροφοριακού περιεχοµένου που περιέχεται σε αυτό πραγµατοποιούνται από κατάλληλα εργαλεία που είναι ειδικά σχεδιασµένα για αυτό το σκοπό. Πιο συγκεκριµένα, η διαχείριση των πινάκων της βάσης, πραγµατοποιείται χρησιµοποιώντας τη γλώσσα ορισµ ού δε δοµένων (Data Definition Language, DDL), ενώ για τη διαχείριση των δεδοµένων της εφαρµογής, χρησιµοποιείται η γλώσσα χειρισµού δεδοµένων (Data Manipulation Language, DML). Αυτές οι δύο γλώσσες συναντώνται σε όλα τα µοντέρνα συστήµατα διαχείρισης βάσεων δεδοµένων και αποτελούν τµήµα µιας πιο γενικευµένης γλώσσας η οποία ονοµάζεται δοµη- µένη γλώσσα ερωτοαποκρίσεων (Structured Query Language, SQL) και έχει καθιερωθεί ως το διεθνές πρότυπο διαχείρισης των δεδοµένων µιας εφαρµογής. Υπάρχουν πολλές παραλλαγές της γλώσσας SQL που κυκλοφορούν στην α- γορά, οι οποίες ωστόσο χαρακτηρίζονται από την ίδια δοµή και την ίδια φιλοσοφία.. Έτσι, µια τυπική γλώσσα SQL, θα περιλαµβάνει τις επόµενες δοµικές µονάδες:

2 Κεφάλαιο 6 : SQL 88 Γλώσσα ορισµού δεδοµένων (Data Definition Language, DDL): Η γλώσσα αυτή, όπως έχουµε ήδη αναφέρει, περιλαµβάνει εντολές που µας επιτρέπουν να υλοποιήσουµε πίνακες, σχέσεις ανάµεσα σε πίνακες, και γενικά όλη τη δοµή µιας βάσης δεδοµένων. Γλώσσα χειρισµού δεδοµένων (Data Manipulation Language, DML): Η γλώσσα αυτή επιτρέπει τη διαχείριση των δεδοµένων της εφαρµογής, όπως την εισαγωγή, διαγραφή, ανάκτηση και τροποποίηση δεδοµένων. Ορισµός όψεων της βάσης (View Definition): Επιτρέπει τη δηµιουργία ό- ψεων της βάσης δεδοµένων οι οποίες όπως θα δούµε στη συνέχεια, ορίζονται ως εικονικοί πίνακες (virtual tables) οι οποίοι περιέχουν δεδοµένα από έναν ή περισσότερους πίνακες της βάσης. Ορισµός εξουσιοδοτήσεων (Authorization): Επιτρέπει τη δηµιουργία οµάδων χρηστών, και την απόδοση διαφορετικών δικαιωµάτων πρόσβασης σε κάθε έναν από αυτούς, προκειµένου η κάθε οµάδα χρηστών, να διαχειρίζεται µόνο τα δικά της δεδοµένα. ιαχείρισης ακεραιότητας (Integrity): Επιτρέπει το λεπτοµερή έλεγχο των δεδοµένων που καταχωρούνται στη βάση, έτσι ώστε να µην παραβιάζονται οι κανόνες ακεραιότητας (integrity constraints) που έχουµε ορίσει και οι οποίοι όταν τηρούνται, αποµακρύνουν τον κίνδυνο καταχώρησης ασυνεπών δεδοµένων (inconsistent data). Η αναλυτική περιγραφή της γλώσσας SQL αποτελεί αντικείµενο των σελίδων που ακολουθούν. Η ΓΛΩΣΣΑ ΟΡΙΣΜΟΥ Ε ΟΜΕΝΩΝ Η γλώσσα ορισµού δεδοµένων (Data Definition Language, DDL), επιτρέπει τη διαχείριση πινάκων (tables), όψεων (views) και δεικτών (indices) σε µια βάση δεδοµένων. Αυτή η διαχείριση περιλαµβάνει τον ορισµό και τη µεταβολή της δοµής αυτών των αντικειµένων, καθώς επίσης και τη διαγραφή τους. Από τα τρία αυτά αντικείµενα, οι πίνακες είναι το δοµικό χαρακτηριστικό µιας σχεσιακής βάσης δεδοµένων, καθώς περιέχουν τα δεδοµένα που καταχωρούνται σε αυτή, ενώ οι όψεις, όπως έχουµε δει, προκύπτουν από έναν ή περισσότερους πίνακες και συσχετίζουν δεδοµένα που είναι αποθηκευµένα σε αυτούς. Τέλος οι δείκτες είναι ειδικές δοµές δεδοµένων, οι οποίες επιταχύνουν τη διαδικασία της αναζήτησης πληροφοριών από τη βάση. Αναλυτική περιγραφή των όψεων και των δεικτών, θα δοθεί στη συνέχεια. Στις επόµενες σελίδες παρουσιάζονται οι εντολές της γλώσσας ορισµού δεδοµένων µε τις οποίες µπορούµε να διαχειριστούµε τους πίνακες, τις όψεις και τους δείκτες µιας σχεσιακής βάσης δεδοµένων. (α) ιαχείριση πινάκων Η διαχείριση των πινάκων από τις εντολές της γλώσσας ορισµού δεδοµένων, περιλαµβάνει τη δηµιουργία και διαγραφή πινάκων από τη βάση δεδοµένων καθώς και την προσθήκη πεδίων στους πίνακες, µετά τη δηµιουργία τους. Οι εντο-

3 Σχεσιακές Βάσεις εδοµένων Θεωρία και Εφαρµογές 89 λές που πραγµατοποιούν αυτές τις διαδικασίες, είναι οι CREATE TABLE, DROP TABLE και ALTER TABLE. Η εντολή CREATE TABLE χρησιµοποιείται για τη δηµιουργία ενός καινούριου πίνακα στη βάση δεδοµένων. Η εντολή δέχεται ως παράµετρο το όνοµα του πίνακα που θέλουµε να δηµιουργήσουµε και τη δοµή αυτού του πίνακα, που περιλαµβάνει το σύνολο των πεδίων που θα περιέχονται σε αυτόν. Για κάθε πεδίο καθορίζουµε το όνοµά του και τον τύπο του ενώ προαιρετικά µπορούµε να θέσουµε και κάποιους περιορισµούς όσον αφορά το σύνολο και τα χαρακτηριστικά των τιµών του. Οι πιο συνηθισµένοι τύποι δεδοµένων που µπορούµε να χρησιµοποιήσουµε για τα πεδία των πινάκων, είναι αριθµητικοί τύποι και συµβολοσειρές. Ένα πεδίο στο οποίο θα καταχωρηθεί κάποιος αριθµός, µπορεί να είναι µικρός (SMALLINT µε µέγιστη τιµή 32767) ή µεγάλος (INTEGER) ακέραιος ή πραγµατικός αριθµός (FLOAT), ενώ εάν θέλουµε να καταχωρήσουµε επ ακριβώς τη µορφή του πραγµατικού αριθµού, µπορούµε να χρησιµοποιήσουµε τον τύπο DECIMAL (i, j) όπου i είναι το συνολικό πλήθος των ψηφίων του αριθµού, και j το πλήθος των ψηφίων µετά την υποδιαστολή. Εάν σε ένα πεδίο πρόκειται να καταχωρηθεί συµβολοσειρά, µπορούµε να χρησιµοποιήσουµε τον τύπο CHAR (n) ή VARCHAR (n) όπου n είναι το πλήθος των χαρακτήρων που θα χρησιµοποιηθούνε. Η διαφορά ανάµεσα σε αυτούς τους δύο τύπους, είναι πως στον τύπο CHAR χρησιµοποιούνται ακριβώς n χαρακτήρες, ενώ στον τύπο VARCHAR το πλήθος των χαρακτήρων είναι µεταβλητό, αλλά σε κάθε περίπτωση, όχι µεγαλύτερο από n χαρακτήρες. Στα µοντέρνα συστήµατα διαχείρισης βάσεων δεδοµένων, υπάρχει και ένας τύπος δεδοµένων DATE τον οποίο χρησιµοποιούµε όταν θέλουµε να καταχωρήσουµε ηµεροµηνίες. Τέλος, οι περιορισµοί τους οποίους µπορούµε να θέσουµε για κάθε πεδίο, α- φορούν κυρίως το δικαίωµα καταχώρησης ή όχι της τιµής NULL, σε αυτό το πεδίο. Έτσι, για όσα πεδία δεν επιτρέπεται η απόδοσης τιµής NULL σε αυτά, χρησιµοποιούµε κατά την κλήση της εντολής, τον κανόνα «NOT NULL». Χρησιµοποιώντας την εντολή CREATE TABLE, µπορούµε να κατασκευάσουµε όλους τους πίνακες της βάσης δεδοµένων της εταιρείας, όπως φαίνεται στο ακόλουθο παράδειγµα:

4 Κεφάλαιο 6 : SQL 90 CREATE TABLE ( FNAME VARCHAR (15) NOT NULL, MINIT CHAR (1), LNAME VARCHAR (15) NOT NULL, SSN CHAR (9) NOT NULL, BDATE DATE, ADDRESS VARCHAR (30), SEX VARCHAR (30), SALARY INTEGER, SUPERSSN CHAR (9), DNO INTEGER ); CREATE TABLE DEPARTMENT ( DNAME VARCHAR (15) NOT NULL, DNUMBER INTEGER NOT NULL, MGRSSN CHAR (9), MGRDATE DATE ); CREATE TABLE DEPT_LOCATIONS ( DNUMBER INTEGER NOT NULL, DLOCATION VARCHAR (15) NOT NULL ); CREATE TABLE PROJECT ( PNAME VARCHAR (15) NOT NULL, PNUMBER INTEGER NOT NULL, PLOCATION VARCHAR (15), DNUM INTEGER NOT NULL ); CREATE TABLE WORKS_ON ( ESSN CHAR (9) NOT NULL, PNO INTEGER NOT NULL, HOURS DECIMAL (3,1) NOT NULL );

5 Σχεσιακές Βάσεις εδοµένων Θεωρία και Εφαρµογές 91 CREATE TABLE DEPENDENT ( ESSN CHAR (9) NOT NULL, DEP_NAME VARCHAR (15) NOT NULL, SEX CHAR (1), BDATE CHAR (9), RELATION VARCHAR (8) ); εν είναι δύσκολο να διαπιστώσει κανείς, πως στην παραπάνω σύνταξη της εντολής CREATE TABLE δεν έχουµε τη δυνατότητα να καθορίσουµε ποιο είναι το πρωτεύον κλειδί του πίνακα. Αυτό είναι κάτι που ποικίλλει από γλώσσα σε γλώσσα, καθώς σε άλλες εκδόσεις της SQL, είναι δυνατός ο καθορισµός των κλειδιών των πινάκων, κατά τη φάση της δηµιουργίας τους, µε την CREATE TABLE. Η παράµετρος που καθορίζει το πρωτεύον κλειδί σε αυτές τις περιπτώσεις, είναι η UNIQUE η οποία χρησιµοποιείται ως κανόνας µαζί µε τον κανόνα NOT NULL. Έτσι για να δείξουµε πως το πεδίο SSN είναι πρωτεύον κλειδί του πίνακα µπορούµε να το δηλώσουµε στην CREATE TABLE ως SSN CHAR (9) NOT NULL UNIQUE Χρησιµοποιώντας την παράµετρο UNIQUE µπορούµε να ορίσουµε µόνο α- πλά και όχι σύνθετα πρωτεύοντα κλειδιά. Για να ορίσουµε ένα σύνθετο κλειδί, θα πρέπει όπως θα δούµε στη συνέχεια, να δηµιουργήσουµε ένα δείκτη χρησιµοποιώντας την εντολή CREATE UNIQUE INDEX. Ας σηµειωθεί επιπλέον, πως οι πίνακες που δηµιουργούνται µε την εντολή CREATE TABLE, είναι οι βασικοί πίνακες της βάσης (base tables), διότι τα δεδοµένα που περιέχουν, αποθηκεύονται σε αρχεία του συστήµατος. Αντίθετα, οι όψεις, είναι εικονικοί πίνακες (virtual tables), που µπορεί να αποθηκεύονται και αυτοί σε αρχείο, χωρίς όµως κάτι τέτοιο να είναι υποχρεωτικό. Τέλος, θα πρέπει να αναφερθεί, πως η σειρά µε την οποία αποθηκεύονται οι τιµές των πεδίων στους πίνακες, είναι ίδια µε τη σειρά µε την οποία έχουν δηλωθεί τα πεδία των πινάκων κατά την κλήση της εντολής. Αυτό σηµαίνει, πως στον πίνακα, η η- µεροµηνία γέννησης (BDATE) για τον κάθε εργαζόµενο, αποθηκεύεται µετά από τον κωδικό SSN, διότι το πεδίο BDATE στην εντολή CREATE TABLE έχει δηλωθεί µετά το πεδίο SSN στον πίνακα. Οι άλλες δύο εντολές που περιλαµβάνονται στη γλώσσα ορισµού δεδοµένων, είναι η DROP TABLE και η ALTER TABLE. Η εντολή DROP TABLE χρησιµοποιείται για τη διαγραφή ενός πίνακα από τη βάση δεδοµένων, ενέργεια, η οποία διαγράφει όχι µόνο τα δεδοµένα του πίνακα, αλλά και τον ίδιο τον πίνακα. Παράδειγ- µα χρήσης της εντολής είναι η κλήση της µε τη µορφή DROP TABLE DEPENDENTS η οποία διαγράφει τον πίνακα DEPENDENTS µαζί µε όλα τα δεδοµένα που περιέχει, από τη βάση δεδοµένων της εταιρείας.

6 Κεφάλαιο 6 : SQL 92 Τέλος, η εντολή ALTER TABLE επιτρέπει την τροποποίηση της δοµής του πίνακα µετά τη δηµιουργία του, και πιο συγκεκριµένα, την προσθήκη νέων πεδίων σε αυτόν αν και σε ορισµένες περιπτώσεις επιτρέπεται τόσο η διαγραφή όσο και η µεταβολή του τύπου δεδοµένων για κάποιο από τα πεδία του πίνακα. Για να προσθέσουµε ένα νέο πεδίο σε κάποιο πίνακα, θα πρέπει να καθορίσουµε το όνοµά του και τον τύπο του. Για παράδειγµα η εντολή ALTER TABLE ADD JOB VARCHAR (12) προσθέτει στον πίνακα το πεδίο JOB που είναι συµβολοσειρά µε µέγιστο µήκος ίσο µε 12 χαρακτήρες. (β) ιαχείριση όψεων Η όψη (view), στην ορολογία της SQL, ορίζεται ως ένας απλός πίνακας, ο οποίος προκύπτει από το συνδυασµό των πεδίων ενός ή περισσοτέρων πινάκων. Αυτοί οι πίνακες, µε τη σειρά τους, µπορεί να είναι είτε βασικοί πίνακες τα δεδοµένα των οποίων αποθηκεύονται στα αρχεία του συστήµατος, ή άλλες όψεις, οι οποίες θεωρούνται εικονικοί πίνακες που τους χρησιµοποιούµε χωρίς να αποθηκεύουµε τα περιεχόµενά τους. ηµιουργώντας µια όψη, µπορούµε να έχουµε εύκολη προσπέλαση σε πεδία τα οποία χρησιµοποιούµε πολύ συχνά. Ας υποθέσουµε για παράδειγµα πως για κάποιο υπάλληλο χρησιµοποιούµε συνέχεια το όνοµά του, καθώς και τα ονόµατα των projects στα οποία εργάζεται. Αυτά τα δεδοµένα βρίσκονται αποθηκευµένα σε τρεις διαφορετικούς πίνακες τους πίνακες, PROJECT και WORKS_ON και αυτό σηµαίνει πως κάθε φορά που θέλουµε να τα χρησιµοποιήσουµε θα πρέπει να καταφύγουµε στις πράξεις της σύζευξης αυτών των πινάκων. η- µιουργώντας όµως µια όψη, η οποία θα προκύπτει από αυτές τις συζεύξεις των τριών πινάκων, µπορούµε να χρησιµοποιούµε αυτά τα πεδία πάρα πολύ εύκολα, θεωρώντας τα ως πεδία τα οποία ανήκουν στον ίδιο πίνακα. Οι βασικοί πίνακες από τους οποίους δηµιουργείται µια όψη, αναφέρονται και ως πίνακες ορισµού της όψης (defining tables). Για να δηµιουργήσουµε µια όψη, χρησιµοποιούµε την εντολή CREATE VIEW. Η εντολή δέχεται ως όρισµα το όνοµα της όψης που πρόκειται να δηµιουργήσουµε. Επίσης, εάν το επιθυµούµε, µπορούµε να καθορίσουµε και τα ονόµατα των πεδίων αυτής της όψης στην αντίθετη περίπτωση, θα χρησιµοποιηθούν τα ονόµ ατα των πεδίων των πινάκων ορισµού της. Τέλος επειδή τα πεδία της όψης θα καθοριστούν εφαρµόζοντας ένα ερώτηµα (query) επί των βασικών πινάκων της βάσης, θα πρέπει να περάσουµε ως παράµετρο στην εντολή και ένα τέτοιο ερώτηµα. Ένα παράδειγµα χρήστης της CREATE VIEW παρουσιάζεται στη συνέχεια: CREATE VIEW AS WORKS_ON1 FNAME, LNAME, PNAME, HOURS, PROJECT, WORKS_ON WHERE SSN = ESSN AND PNO = PNUMBER

7 Σχεσιακές Βάσεις εδοµένων Θεωρία και Εφαρµογές 93 Η παραπάνω εντολή δηµιουργεί µια καινούρια όψη που φέρει το όνοµα WORKS_ON1 και περιέχει τα πεδία FNAME, LNAME, PNAME και HOURS των πινάκων, PROJECT και WORKS_ON. Έχοντας δηµιουργήσει τώρα αυτή την όψη, µπορούµε να τη χρησιµοποιήσουµε σαν ένα απλό πίνακα εφαρµόζοντας πάνω του όλες τις πράξεις που έχουν να κάνουν µε τη διαχείριση πινάκων. Για παράδειγµα, προκειµένου να βρούµε τα ονοµατεπώνυµα των υπαλλήλων που εργάζονται σε όλα τα PROJECTS περισσότερες από 10 ώρες την εβδοµάδα, δεν χρειάζεται να συνδυάσουµε τους πίνακες, PROJECT και WORKS_ON, αλλά µπορούµε απλά να γράψουµε FNAME, LNAME WORKS_ON1 WHERE HOURS > 10 Ένα δεύτερο παράδειγµα χρήσης της CREATE VIEW παρουσιάζεται στη συνέχεια: CREATE VIEW AS DEPT_INFO (DNAME, EMP_NO, AVG_SAL) DNAME, COUNT (*), SUM (SALARY) DEPARTMENT, WHERE DNUMBER, DNO GROUP BY DNAME Αυτή η εντολή δηµιουργεί µια καινούρια όψη µε το όνοµα DEPT_INFO που για κάθε τµήµα περιέχει το όνοµά του, το πλήθος των υπαλλήλων που εργάζονται σε αυτό, καθώς και το µέσο όρο των µισθών τους. Στην προκειµένη περίπτωση, τα ονό- µατα των πεδίων της όψης, δεν είναι τα ίδια µε τα ονόµατα των αντίστοιχων πεδίων του πίνακα, αλλά τα καθορίζουµε επ ακριβώς κατά την κλήση της εντολής. Περισσότερες λεπτοµέρειες όσον αφορά τη χρήση της εντολής που χρησι- µοποιείται στα δύο παραπάνω παραδείγµατα, θα δοθεί στις επόµενες σελίδες. Τέλος, η διαγραφή µιας όψης γίνεται µε την εντολή DROP VIEW. Παράδειγµα χρήσης της εντολής αυτής, είναι η κλήση της µε τη µορφή DROP VIEW WORKS_ON1 η οποία διαγράφει την όψη WORKS_ON1 από τη βάση δεδοµένων της εταιρείας. (γ) ιαχείριση δεικτών Η έννοια του δείκτη (index) σε όλα τα συστήµατα διαχείρισης βάσεων δεδο- µένων, είναι στενά συνυφασµένη µε την έννοια της αναζήτησης πληροφορίας. Ο δείκτης δεν είναι τίποτε άλλο από µια δοµή δεδοµένων που αποθηκεύεται σε ειδικά αρχεία της βάσης (index files) και έχει ως στόχο να επιταχύνει τη διαδικασία α- ναζήτησης πληροφορίας από τους πίνακες της βάσης. Οι δείκτες συνήθως ορίζονται για συγκεκριµένα πεδία αυτών των πινάκων (indexing fields) και για κάθε τιµή των εν λόγω πεδίων, αποθηκεύουν ένα σύνολο από pointers που δείχνουν όλες τις περιοχές της συσκευής δευτερεύουσας αποθήκευσης στις οποίες βρίσκονται αποθηκευµένα, τα δεδοµένα της κάθε εγγραφής. Τα αρχεία των δεικτών είναι εποµένως αρ-

8 Κεφάλαιο 6 : SQL 94 κετά µικρότερα σε µέγεθος σε σχέση µε τα αρχεία δεδοµένων, και η διαδικασία αναζήτησης της πληροφορίας δια της χρήσης τους, λαµβάνει χώρα δια της εφαρµογής γνωστών τεχνικών αναζήτησης, όπως είναι για παράδειγµα η δυαδική αναζήτηση (binary search). Η δηµιουργία ενός δείκτη στη γλώσσα SQL, γίνεται χρησιµοποιώντας την εντολή CREATE INDEX, και περιλαµβάνει τον καθορισµό του ονόµατος του δείκτη, και του πεδίου του πίνακα για το οποίο θα δηµιουργηθεί. Για παράδειγµα, προκειµένου να δηµιουργήσουµε ένα δείκτη για το πεδίο LNAME του πίνακα, θα καλέσουµε την εντολή CREATE INDEX µε τη µορφή CREATE INDEX ON LNAME_INDEX (LNAME) Η ταξινόµηση των τιµών του πεδίου πάνω στο οποίο θα δηµιουργηθεί ο δείκτης, µπορεί να είναι είτε αύξουσα (ascending) είτε φθίνουσα (descending), και καθορίζεται από το χρήστη, αναγράφοντας τις παραµέτρους ASC και DESC αντίστοιχα, αµέσως µετά το όνοµα του πεδίου. Εάν δεν χρησιµοποιήσουµε αυτή την παράµετρο, όπως στο παραπάνω παράδειγµα, ο δείκτης χρησιµοποιεί την αύξουσα ταξινόµηση για τη διάταξη των τιµών του πεδίου. Η δηµιουργία ενός δείκτη για ένα συνδυασµό πεδίων είναι επίσης δυνατή, και µάλιστα έχουµε τη δυνατότητα να καθορίσουµε διαφορετικό είδος ταξινόµησης για κάθε απλό πεδίο. Έτσι η εντολή CREATE INDEX ON NAMES_INDEX (LNAME ASC, FNAME DESC, MINIT) δηµιουργεί ένα δείκτη πάνω στα πεδία LNAME, MINIT και FNAME, εκ των οποίων το LNAME ταξινοµείται κατά αύξουσα διάταξη ενώ το FNAME ταξινοµείται κατά φθίνουσα διάταξη. Τέλος όταν δεν έχουµε τη δυνατότητα να ορίσουµε κατά το στάδιο δηµιουργίας των πινάκων το πρωτεύον κλειδί του πίνακα, µπορούµε να το κάνουµε δηµιουργώντας ένα INDEX για αυτό το πεδίο, και ταυτόχρονα δηλώνοντας πως οι τιµές που καταχωρούνται σε αυτό, θα πρέπει να είναι µοναδικές: CREATE UNIQUE INDEX ON SSN_INDEX (SSN) Ας σηµειωθεί πως ο καθορισµός του πρωτεύοντος κλειδιού του πίνακα µε τον τρόπο αυτό, θα πρέπει να γίνει πριν την καταχώρηση εγγραφών σε αυτόν, διότι εάν υπάρχουν ήδη εγγραφές που έχουν τις ίδιες τιµές στο πεδίο που θέλουµε να κάνουµε πρωτεύον κλειδί, η παραπάνω διαδικασία θα αποτύχει. Η διαγραφή ενός δείκτη από τη βάση δεδοµένων, γίνεται χρησιµοποιώντας την εντολή DROP_INDEX. Παράδειγµα χρήσης αυτής της εντολής είναι η κλήση της µε τη µορφή DROP INDEX LNAME_INDEX η οποία διαγράφει το δείκτη LNAMES_INDEX, από τη βάση δεδοµένων της εταιρείας.

9 Σχεσιακές Βάσεις εδοµένων Θεωρία και Εφαρµογές 95 Η ΓΛΩΣΣΑ ΧΕΙΡΙΣΜΟΥ Ε ΟΜΕΝΩΝ Η γλώσσα χειρισµού δεδοµένων (Data Manipulation Language, DML), ε- πιτρέπει τη διαχείριση των δεδοµένων των πινάκων της βάσης, και πιο συγκεκριµένα, την εισαγωγή, διαγραφή, και τροποποίηση των εγγραφών των πινάκων. Επιπλέον, έχουµε τη δυνατότητα να ανακτήσουµε από τους πίνακες, δεδοµένα, τα οποία πληρούν κάποια συγκεκριµένα κριτήρια. Η πραγµατοποίηση όλων αυτών των διαδικασιών, γίνεται χρησιµοποιώντας τις εντολές INSERT, DELETE, UPDATE και, η αναλυτική παρουσίαση των οποίων, αποτελεί αντικείµενο των σελίδων που ακολουθούν. ΕΙΣΑΓΩΓΗ ΕΓΓΡΑΦΩΝ ΣΕ ΠΙΝΑΚΑ ΤΗΣ ΒΑΣΗΣ Η ΕΝΤΟΛΗ INSERT Η εισαγωγή µιας νέας εγγραφής σε κάποιον από τους πίνακες της βάσης δεδοµένων, γίνεται δια της χρήσης της εντολής INSERT, η οποία στη γενική περίπτωση, καλείται µε τη µορφή INSERT INTO <TABLE NAME> VALUES (<v 1 >, <v 2 >,, <v n >) όπου <TABLE NAME> είναι το όνοµα του πίνακα στον οποίο θα καταχωρηθεί η νέα εγγραφή, και <v 1 >, <v 2 >,, <v n >, είναι οι τιµές των πεδίων της εγγραφής που θέλουµε να καταχωρήσουµε. Έτσι η εντολή INSERT INTO VALUES ( Richard, K, Marini, , 30-Dec-52, 98 Oak Forest, Katy, TX, M, 37000, , 4) καταχωρεί στον πίνακα ένα νέο υπάλληλο µε όνοµα Richard K. Marini, που έχει κωδικό SSN , ηµεροµηνία γέννησης 30 εκεµβρίου 1952, ιεύθυνση 98 Oak Forest, Katy, TX, φύλλο άρρεν, µισθό 37000, ο οποίος εποπτεύεται από τον MANAGER µε κωδικό SSN , και έχει τοποθετηθεί στο τµήµα µε κωδικό αριθµό 4. Από το παραπάνω παράδειγµα, διαπιστώνουµε πως οι τιµές των πεδίων στην εντολή INSERT, θα πρέπει να αναγραφούν µε τη σειρά µε την οποία δηλώθηκαν τα πεδία του πίνακα στην εντολή CREATE TABLE, έτσι ώστε η κάθε τιµή να καταχωρηθεί στη σωστή στήλη του πίνακα, και να διασφαλισθεί η συµβατότητα ανάµεσα στον τύπο δεδοµένων του πεδίο υ, και στον τύπο δεδοµένων των καταχωρηµένων τιµών. Εάν για κάποιο πεδίο δεν επιθυµούµε να καταχωρήσουµε κάποια τιµή, τότε η αντίστοιχη τιµή στην εγγραφή που θα καταχωρήσουµε θα είναι ίση µε NULL. Εναλλακτικά, µπορούµε να παραλείψουµε τις τιµές NULL, για κάποια πεδία του πίνακα. Στην περίπτωση αυτή όµως θα πρέπει να καθορίσουµε επ ακριβώς σε ποιες στήλες του πίνακα θα καταχωρηθούν οι τιµές που καθορίζουµε. Έτσι η εντολή INSERT INTO (FNAME, LNAME, SSN) VALUES ( Richard, Marini, )

10 Κεφάλαιο 6 : SQL 96 υποδηλώνει ξεκάθαρα, πως η νέα εγγραφή που θα καταχωρήσουµε περιλαµβάνει µόνο το όνοµα, το επώνυµο και τον κωδικό SSN για τον νέο. Θα πρέπει ωστόσο η σειρά µε την οποία αναγράφονται οι τιµές της νέας εγγραφής, να είναι και πάλι ίδια µε τη σειρά µε την οποία αναγράφονται τα ονόµατα των πεδίων, δίπλα από το όνοµα του πίνακα, έτσι ώστε η κάθε τιµή να καταχωρηθεί στο σωστό πεδίο. Ας σηµειωθεί πως στη γενική περίπτωση η γλώσσα ορισµού δεδοµένων, δεν ελέγχει εάν η εγγραφή που πρόκειται να καταχωρηθεί ικανοποιεί τους κανόνες ακεραιότητας (integrity constraints) που έχουµε καθορίσει κατά το λογικό σχεδιασµό του σχήµατος της βάσης. Έτσι, η παραπάνω εγγραφή θα προστεθεί στον πίνακα, ακόµη και εάν ο κωδικό του τµήµατος στον οποίο πρόκειται να καταχωρηθεί ο νέος υπάλληλος, αναφέρεται σε ένα ανύπαρκτο τµήµα. Είναι λοιπόν καθήκον του χρήστη να εξετάσει εάν πληρούνται οι κανόνες ακεραιότητας κάθε φορά που επιχειρεί να προσθέσει µια νέα εγγραφή. Αντίθετα η εντολή INSERT δεν θα ε- κτελεστεί εάν καταχωρήσουµε τιµή NULL σε κάποια από τα πεδία του πίνακα, για τα οποία στην CREATE TABLE έχουµε καθορίσει τον κανόνα «NOT NULL» - στην περίπτωση αυτή, η διαδικασία καταχώρησης της νέας εγγραφής, θα αποτύχει. Τέλος, έχουµε τη δυνατότητα να συνδυάσουµε τις εντολές INSERT και προκειµένου να καταχωρήσουµε σε ένα πίνακα, περισσότερες από µια εγγραφές ταυτόχρονα. Για παράδειγµα η εντολή INSERT INTO DEPTS_INFO (DNAME, EMP_NO, TOTAL_SAL) DNAME, COUNT (*), SUM (SALARY) DEPARTMENT, WHERE DNUMBER = DNO GROUP BY DNAME καταχωρεί στον πίνακα DEPTS_INFO ένα πλήθος εγγραφών, που για κάθε τµήµα της εταιρείας, περιλαµβάνει το όνοµα του τµήµατος, το πλήθος των υπαλλήλων που εργάζονται σε αυτό, και το σύνολο των µισθών τους. Είναι προφανές πως για να εκτελεστεί η παραπάνω εντολή, ο πίνακας DEPTS_INFO θα πρέπει να έχει δη- µιουργηθεί σε προηγούµενο στάδιο της διαδικασίας, και η δοµή του θα πρέπει να είναι συµβατή µε τη δοµή του πίνακα που επιστρέφει η έτσι ώστε να είναι δυνατή η προσθήκη σε αυτόν των νέων εγγραφών. ΙΑΓΡΑΦΗ ΕΓΓΡΑΦΩΝ ΑΠΟ ΠΙΝΑΚΑ ΤΗΣ ΒΑΣΗΣ Η ΕΝΤΟΛΗ DELETE Η εντολή DELETE, χρησιµοποιείται για τη διαγραφή εγγραφών από κάποιο πίνακα. Οι εγγραφές διαγράφονται µόνο από ένα πίνακα κάθε φορά και καθορίζονται δια της χρήσης της πρότασης WHERE η οποία χρησιµοποιείται µε τον ίδιο τρόπο που χρησιµοποιείται και στη. Εάν δεν χρησιµοποιηθεί η πρόταση WHERE, η εντολή DELETE διαγράφει όλες τις εγγραφές του πίνακα πάνω στον οποίο εφαρµόζεται. Αυτό βέβαια δεν σηµαίνει πως λαµβάνει χώρα και διαγραφή του πίνακα από τη βάση για να αποµακρυνθεί και ο ίδιος ο πίνακας θα πρέπει να χρησιµοποιηθεί και η εντολή DROP TABLE. Παραδείγµατα χρήσης της εντολής DELETE παρουσιάζονται στη συνέχεια:

11 Σχεσιακές Βάσεις εδοµένων Θεωρία και Εφαρµογές 97 DELETE WHERE LNAME = Brown DELETE WHERE SSN = DELETE WHERE DNO IN ( DNUMBER DEPARTMENT WHERE DNAME = Research ) Στα δύο πρώτα παραδείγµατα η εντολή DELETE διαγράφει µια εγγραφή κά- αυτή που αναφέρεται στον Brown, και αυτή που αναφέρεται στον υπάλλη- θε φορά λο µε κωδικό SSN = Στο τρίτο παράδειγµα οι εγγραφές που πρόκειται να διαγραφούν, καθορίζονται από µια πρόταση η οποία επιστρέφει τον κωδικό του τµήµατος µε όνοµα DEPARTMENT. Εποµένως, η παραπάνω εντολή, διαγράφει όλους τους υπαλλήλους της εταιρείας, που ανήκουν στο Research Department. Τέλος, η εντολή DELETE διαγράφει όλες τις εγγρα- φές του πίνακα, δηλαδή όλους τους υπαλλήλους της εταιρείας. Τ ΡΟΠΟΠΟΙΗΣΗ ΤΟΥ ΠΕΡΙΕΧΟΜΕΝΟΥ ΤΩΝ ΕΓΓΡΑΦΩΝ ΤΩΝ ΠΙΝΑΚΩΝ ΤΗΣ ΒΑΣΗΣ Η ΕΝΤΟΛΗ UPDATE Η εντολ ή UPDATE, χρησιµοποιείται για την τροποποίηση των τιµών των πε- επιλεγµένων εγγραφών κάποιου από τους πίνακες της βάσης. Αυτές οι εγγραφές, δίων καθορίζονται όπως και στην εντολή DELETE, από µια πρόταση WHERE, που καθορίζει τα χαρακτηριστικά των εγγραφών που θέλουµε να τροποποιήσουµε. Τα πεδία των οποίων οι τιµές θα µεταβληθούν, καθώς επίσης και οι νέες τιµές που θα καταχωρήσουµε σε αυτά, καθορίζονται, χρησιµοποιώντας την πρόταση SET. Έτσι, η εντολή UPDATE PROJECT SET PLOCATION = Bellaire, DNUM = 5 WHERE PNUMBER = 10 τροποποιεί τις τιµές των πεδίων της εγγραφής του πίνακα PROJECT για την οποία το πεδίο PNUMBER έχει την τιµή 10, και αποδίδει στο πεδίο PLOCATION την τι- µή Bellaire, και στο πεδίο DNUM, την τιµή 5. Τέλος, όπως και στην εντολή DELETE, µπορούµε να τροποποιήσουµε τις τιµές πολλών εγγραφών ταυτόχρονα, εάν συνδυάσουµε την εντολή UPDATE µε την ε ντολή. Έτσι η εντολή

12 Κεφάλαιο 6 : SQL 98 UPDATE SET SALARY = SALARY * 1.1 WHERE DNO IN ( DNUMBER DEPARTMENT WHERE DNAME = Research ) τροποποιεί τους µισθούς όλων των υπαλλήλων που εργάζονται στο Research Department, προκαλώντας αύξηση της τιµής τους κατά 10%. ΕΠΙΛΟΓΗ Ε ΟΜΕΝΩΝ ΑΠΟ ΤΟΥΣ ΠΙΝΑΚΕΣ ΤΗΣ ΒΑΣΗΣ Η ΕΝΤΟΛΗ Εκτός από την οµάδα διαδικασιών η οποία τροποποιεί το περιεχόµενο των πινάκων της βάσης, υπάρχουν και άλλες διαδικασίες, οι οποίες δε µεταβάλλουν τα δεδοµένα των πινάκων, αλλά αναζητούν και εµφανίζουν δεδοµένα, τα οποία πληρούν κάποια συγκεκριµένα κριτήρια επιλογής. Αυτού του είδους οι διαδικασίες ονοµάζονται ερωτήµατα (queries) και πραγµατοποιούνται δια της χρήσης µιας εκ των ε- ντολών της γλώσσας χειρισµού δεδοµένων (Data Manipulation Language, DML), που φέρει το όνοµα. Η χρήση της εντολής ακολουθεί τη σύνταξη <attribute list> <table list> WHERE <condition> όπου ο κατάλογος <attribute list> περιέχει τα ονόµατα των πεδίων που θέλουµε να ανακτήσουµε, ο κατάλογος <table list> περιέχει τα ονόµατα των πινάκων που θα χρησιµοποιηθούνε στη δηµιουργία του ερωτήµατος, ενώ <condition>, είναι το κριτήριο αναζήτησης, που θα πρέπει να ικανοποιείται από τα δεδοµένα των πινάκων, προκειµένου αυτά να εµφανιστούν στο τελικό αποτέλεσµα. Ένα παράδειγµα της εντολής είναι η κλήση της µε τη µορφή WHERE BDATE, ADDRESS FNAME= John AND MINIT= B AND LNAME= Smith Η εντολή αυτή εφαρµόζεται πάνω στον πίνακα και επιστρέφει την ηµεροµηνία γέννησης και τη διεύθυνση του υπαλλήλου, που φέρει το όνοµα John B. Smith. Εάν τα δεδοµένα που περιλαµβάνονται στο ερώτηµα ανήκουν σε περισσότερους από έναν πίνακες, τότε η εντολή θα εφαρµοσθεί πάνω σε όλους αυτούς τους πίνακες. Επιπλέον, στην προκειµένη περίπτωση, εκτός από τις επιθυµητές τιµές των πεδίων που θέλουµε να εµφανίσουµε, θα πρέπει στην πρόταση WHERE, να συµπεριλάβουµε και τη συνθήκη σύζευξης (join condition) που καθορίζει ποιες στήλες των δύο πινάκων συσχετίζονται µεταξύ τους. Ας πάρουµε για παράδειγµα την εντολή

13 Σχεσιακές Βάσεις εδοµένων Θεωρία και Εφαρµογές 99 WHERE FNAME, LNAME, ADDRESS DNAME = Research AND DNUMBER = DNO η οποία εµφανίζει το ονοµατεπώνυµο και τη διεύθυνση όλων των υπαλλήλων που εργάζονται στο Research Department. Στο ερώτηµα αυτό, τα πεδία που θα ανακτήσουµε ανήκουν στον πίνακα, αλλά το πεδίο DNAME που περιλαµβάνεται στην πρόταση WHERE, ανήκει στον πίνακα DEPARTMENT. Αυτό σηµαίνει πως στη σύνταξη της εντολής, θα εµφανιστούν και οι δύο πίνακες. Λόγω της εµφάνισης περισσότερων από ένα πινάκων, δεν αρκεί µόνο ο καθορισµός του κριτηρίου επιλογής, αλλά θα πρέπει να συµπεριλάβουµε στο εν λόγω ερώτηµα και τα κοινά πεδία των δύο πινάκων τα οποία συσχετίζονται µεταξύ τους. Για το λόγο αυτό, στην πρόταση WHERE, εκτός από το κριτήριο επιλογής DNAME = Research, καθορίζουµε και τη συνθήκη σύζευξης που είναι η DNUMBER = DNO. Οι δύο αυτές συνθήκες, θα πρέπει να ικανοποιούνται ταυτόχρονα και αυτό πραγµατοποιείται, δια της χρήσης του λογικού τελεστή AND. Η χρήση των άλλων λογικών τελεστών OR και NOT είναι επίσης δυνατή, ενώ στη συνθήκη καθορισµού των κριτηρίων αναζήτησης µπορούµε να χρησιµοποιήσουµε και όλους τους τελεστές σύγκρισης που είχαµε αναλύσει στο προηγούµενο κεφάλαιο. Έτσι για να βρούµε ό- λους τους υπαλλήλους που έχουν µισθό µεγαλύτερο από 30000, θα πρέπει στην πρόταση WHERE να συµπεριλάβουµε τη συνθήκη SALARY > Σε περιπτώσεις κατά της οποίες υπάρχουν πεδία που ανήκουν σε διαφορετικούς πίνακες, αλλά φέρουν το ίδιο όνοµα, το ερώτηµα χαρακτηρίζεται από κάποιο βαθµό ασάφειας, όσον αφορά τον πίνακα στον οποίο ανήκει το κάθε πεδίο. Για να αναδείξουµε αυτή την ασάφεια, ας υποθέσουµε πως στον πίνακα, το πεδίο που περιέχει τον κωδικό του τµήµατος στον οποίο εργάζεται, δεν ονοµάζεται DNO, αλλά DNUMBER, έχει δηλαδή το ίδιο όνοµα µε το αντίστοιχο πεδίο του πίνακα DEPARTMENT. Στην περίπτωση αυτή η πρόταση WHERE του προηγούµενου ερωτήµατος θα λάβει τη µορφή WHERE DNAME = Research AND DNUMBER = DNUMBER η οποία ασφαλώς περιέχει µεγάλο ποσοστό απροσδιοριστίας, καθώς δεν αποσαφηνίζει σε ποιο πίνακα ανήκει το κάθε ένα από τα δύο πεδία DNUMBER. Για να αποµακρύνουµε αυτή την ασάφεια, θα πρέπει να αναφερθούµε στα πεδία των πινάκων, χρησιµοποιώντας ένα πιο πλήρη τρόπο σύνταξης που έχει τη µορφή TABLE_NAME.ATTRIBUTE_NAME περιλαµβάνει δηλαδή, τον καθορισµό, όχι µόνο του ονόµατος του πεδίου, αλλά και το όνοµα του πίνακα στον οποίο ανήκει το εν λόγω πεδίο. Έτσι η ασάφεια που χαρακτηρίζει το προηγούµενο ερώτηµα, αίρεται, εάν το επαναδιατυπώσουµε στη µορφή WHERE FNAME, LNAME, ADDRESS DNAME = Research AND DEPARTMENT.DNUMBER =.DNUMBER

14 Κεφάλαιο 6 : SQL 100 Μια ακόµη ιδιάζουσα περίπτωση που αξίζει να αναφερθεί, αφορά την εµφάνιση της ασάφειας µε τον τρόπο που την ορίσαµε παραπάνω, όχι όσον αφορά τα πεδία των πινάκων, αλλά όσον αφορά τους ίδιους τους πίνακες. Χαρακτηριστικό παράδειγµα αυτής της περίπτωσης είναι οι αναδροµικές συσχετίσεις (recursive relationships) που υφίστανται ανάµεσα σε δύο αντίγραφα του ίδιου πίνακα. Αυτό π.χ. συµβαίνει στην περίπτωση κατά την οποία θέλουµε για κάθε υπάλληλο, να ανακτήσουµε το ονοµατεπώνυµό του, καθώς και το ονοµατεπώνυµο του MANAGER που τον εποπτεύει. Επειδή όµως και ο MANAGER είναι και ο ίδιος ένας υπάλληλος, και εποµένως τα προσωπικά του στοιχεία βρίσκονται και αυτά αποθηκευµένα στον πίνακα, θα πρέπει στη σύνταξη του ερωτήµατος, να χρησιµοποιήσουµε δύο φορές τον πίνακα, µε αποτέλεσµα την εµφάνιση α- προσδιοριστίας όσον αφορά τον ακριβή ρόλο του κάθε αντιγράφου του πίνακα κατά την εκτέλεση του παραπάνω ερωτήµατος. Η άρση της απροσδιοριστίας στην περίπτωση αυτή, λαµβάνει χώρα δια της χρήσης για κάθε αντίγραφο του πίνακα και ενός διαφορετικού ονόµατος. Αυτό το ό- νοµα δεν επηρεάζει τις ιδιότητες του πίνακα, αλλά πρόκειται απλά για ένα ψευδώνυ- µο (alias). Έτσι, το παραπάνω ερώτηµα θα διατυπωθεί µε τη µορφή E.FNAME, E.LNAME, S.FNAME, F.LNAME E S WHERE E.SUPERSSN = S.SSN στην οποία έχουµε ορίσει για κάθε αντίγραφο του πίνακα και ένα διαφορετικό ψευδώνυµο. Πιο συγκεκριµένα, το ψευδώνυµο E, αναφέρεται στον πίνακα µε το ρόλο του υπαλλήλου, ενώ το ψευδώνυµο S, αναφέρεται στον πίνακα µε το ρόλο του επόπτη. Στην περίπτωση αυτή αίρεται κάθε µορφή απροσδιοριστίας όσον αφορά τον τρόπο ερµηνείας του παραπάνω ερωτήµατος, καθώς το κάθε αντίγραφο του πίνακα παίζει πλέον το δικό του ρόλο ο οποίος είναι διακριτός και πλήρως ορισµένος. Στην περίπτωση κατά την οποία καλέσουµε την εντολή χωρίς την πρόταση WHERE, το αποτέλεσµα που θα λάβουµε θα περιλαµβάνει όλες τις εγγραφές του πίνακα, καθώς δεν καθορίζουµε κάποιο συγκεκριµένο κριτήριο αναζήτησης. Για παράδειγµα, εάν γράψουµε FNAME, LNAME θα λάβουµε τα ονοµατεπώνυµα όλων των υπαλλήλων της εταιρείας, ενώ για να λάβουµε όλα τα πεδία της κάθε εγγραφής, θα χρησιµοποιήσουµε τον τελεστή «*». Έτσι η εντολή * WHERE DNO = 5 θα επιστρέψει όλα τα πεδία των υπαλλήλων της εταιρείας, για τους οποίους ο κωδικός του τµήµατος στο οποίο απασχολούνται έχει την τιµή 5.

15 Σχεσιακές Βάσεις εδοµένων Θεωρία και Εφαρµογές 101 Η παράµετρος DISTINCT: Σε αντίθεση µε τη σχεσιακή άλγεβρα όπου οι πίνακες διαπραγµατεύονται ως σύνολα από πλειάδες, η γλώσσα SQL δεν ακολουθεί αυτή την προσέγγιση, και δεν διαγράφει από µόνη της τις διπλοεγγραφές που ενδέχεται να εµφανιστούν στο τελικό αποτέλεσµα. Εάν για παράδειγµα χρησιµοποιήσου- µε την εντολή SALARY για να ανακτήσουµε τους µισθούς των υπαλλήλων της εταιρείας, υπάρχει πιθανότητα στο τελικό αποτέλεσµα να εµφανίζεται η ίδια τιµή περισσότερες από µια φορές στην περίπτωση κατά την οποία υπάρχουν πολλοί υπάλληλοι που παίρνουν τον ίδιο µισθό. Εάν όµως θέλουµε να κρατήσουµε µόνο µια φορά την κάθε τιµή θα καλέσουµε την εντολή µε τη µορφή DISTINCT SALARY Στον επόµενο πίνακα παρουσιάζουµε το αποτέλεσµα των παραπάνω εντολών, προκειµένου να γίνει καλύτερα κατανοητός, ο τρόπος λειτουργίας της DISTINCT. SALARY SALARY Στον παραπάνω πίνακα η αριστερή στήλη περιέχει το αποτέλεσµα της εντολής χωρίς τη χρήση της παραµέτρου DISTINCT, η οποία χρησιµοποιείται στη δεύτερη περίπτωση. Όπως φαίνεται από τα περιεχόµενα των πινάκων, η χρήση της DISTINCT αποµακρύνει τις τιµές που εµφανίζονται περισσότερες από µιας φορά, µε αποτέλεσµα το σύνολο των τιµών που επιστρέφεται από τη να είναι πλέον διακριτό, και να περιλαµβάνει µόνο διαφορετικές τιµές. Η παράµετρος UNION: σε ορισµένες εκδόσεις της SQL υποστηρίζεται η ε- φαρµογή επί των πινάκων της βάσης των πράξεων που εφαρµόζονται ανάµεσα σε σύνολα. Στην περίπτωση αυτή, οι πίνακες διαπραγµατεύονται ως σύνολα από πλειάδες, µε αποτέλεσµα τη διαγραφή των διπλοεγγραφών εάν αυτές εµφανιστούν. Υ- πενθυµίζουµε από τη θεωρία της σχεσιακής άλγεβρας πως για να είναι δυνατή η ε- φαρµογή των πράξεων από τη θεωρία συνόλων πάνω στους πίνακες της βάσης οι πράξεις αυτές είναι η ένωση (UNION), η τοµή (INTERSECTION) και η διαφορά (DIFFERENCE) θα πρέπει οι πίνακες να είναι συµβατοί ως προς την ένωση (union compatible), δηλαδή να έχουν το ίδιο πλήθος πεδίων, και τα αντίστοιχα πεδία των πινάκων να έχουν το ίδιο σύνολο τιµών.

16 Κεφάλαιο 6 : SQL 102 Ως παράδειγµα εφαρµογής της ένωσης δύο πινάκων, θα επαναδιατυπώσουµε σε γλώσσα SQL ένα από τα παραδείγµατα του προηγούµενου κεφαλαίου και πιο συγκεκριµένα εκείνο που ζητούσε να ανακτηθούν οι κωδικοί των PROJECTS στα ο- ποία δουλεύει ο υπάλληλος µε το επώνυµο Smith, τόσο ως εργαζόµενος όσο και ως MANAGER κάποιου τµήµατος. Για να απαντήσουµε σε αυτό το ερώτηµα, θα πρέπει να βρούµε τους κωδικούς των PROJECTS στα οποία ο Smith συµµετέχει ως εργαζόµενος και τους κωδικούς των PROJECTS στα οποία ο Smith συµµετέχει ως MANAGER, οπότε, το τελικό αποτέλεσµα θα αποτελείται από την ένωση των δύο συνόλων. Έτσι, το ερώτηµα αυτό σε γλώσσα SQL θα διατυπωθεί ως εξής: WHERE UNION WHERE PNUMBER PROJECT, DEPARTMENT, DNUM = DNUMBER AND MGRSSN = SSN AND LNAME = Smith PNUMBER PROJECT, WORKS_ON, PNUMBER = PNO AND ESSN = SSN AND LNAME = Smith Σύνολα τιµών και φωλιασµένα ερωτήµατα (nested queries): Σε ορισµένες περιπτώσεις, είναι δυνατή η χρήση στην πρόταση WHERE ενός συνόλου (set), από το οποίο θα πρέπει να παίρνει τιµές, κάποιο από τα πεδία του πίνακα. Εάν για παράδειγµα ζητούµε τους κωδικούς SSN των υπαλλήλων που εργάζονται στα PROJECTS µε κωδικό 1, 2 ή 3, µπορούµε να γράψουµε το ερώτηµα µε τη µορφή WHERE DISTINCT ESSN WORKS_ON PNUMBER = 1 OR PNUMBER = 2 OR PNUMBER = 3 Εναλλακτικά, µπορούµε να χρησιµοποιήσουµε τη σύνταξη DISTINCT ESSN WORKS_ON WHERE PNUMBER IN (1, 2, 3) Στην παραπάνω σύνταξη ο τελεστής σύγκρισης (comparison operator) IN, συγκρίνει την τιµή του πεδίου πάνω στο οποίο εφαρµόζεται µε όλες τις τιµές του συνόλου, και επιστρέφει την τιµή TRUE, εάν διαπιστώσει ταύτιση µε κάποια από αυτές τις τιµές. Είναι προφανές πως στη γενική περίπτωση είναι πρακτικά δύσκολο να χρησι- µοποιήσουµε ένα σύνολο τιµών µε τον τρόπο που το κάναµε παραπάνω. Αυτό συµβαίνει διότι αφ ενός δεν µπορούµε να γνωρίζουµε τις τιµές που θα περιλαµβάνονται σε αυτό, έτσι ώστε να τις παραθέσουµε τη µία µετά την άλλη, και αφ ετέρου, αυτές οι τιµές ενδέχεται να αλλάξουν στο µέλλον, καθώς η βάση χαρακτηρίζεται από συνεχή εισαγωγή, διαγραφή και τροποποίηση εγγραφών. Για το λόγο αυτό,

17 Σχεσιακές Βάσεις εδοµένων Θεωρία και Εφαρµογές 103 δεν καταχωρούµε απευθείας αυτές τις τιµές, αλλά τις ανακτούµε µε µία πρόταση την οποία διαβιβάζουµε ως παράµετρο στον τελεστή σύγκρισης IN. Με τον τρόπο αυτό καλούµε την εντολή µέσα από κάποια άλλη, κάτι που έχει ως αποτέλεσµα τη δηµιουργία των επονοµαζόµενων φωλιασµένων ερωτη- µάτων (nested queries). Η εντολή που χρησιµοποιείται µαζί µε τον τελεστή σύγκρισης IN στην πρόταση WHERE, ονοµάζεται εσωτερικό ερώτηµα (inner query), ενώ η µέσα από την οποία καλείται το εσωτερικό ερώτηµα, ονοµάζεται εξωτερικό ερώτηµα (outer query). Χρησιµοποιώντας φωλιασµένα ερωτήµατα, το παραπάνω παράδειγµα που ζητούσε τους κωδικούς των PROJECTS στα οποία ο Smith συµµετέχει τόσο ως εργαζόµενος, όσο και ως MANAGER, µπορεί να επαναδιατυπωθεί ως εξής: DISTINCT PNAME PROJECT WHERE PNUMBER IN ( PNUMBER PROJECT, DEPARTMENT WHERE DNUM = DNUMBER AND MGRSSN = SSN AND LNAME = Smith ) OR PNUMBER IN ( PNO WORKS_ON, WHERE ESSN = SSN AND LNAME = Smith ) Εκείνο που κάνουµε στην παραπάνω εντολή είναι να βρούµε το σύνολο των κωδικών των PROJECTS στα οποία ο Smith συµµετέχει τόσο ως εργαζόµενος όσο και ως MANAGER, και στη συνέχεια χρησιµοποιώντας τον λογικό τελεστή OR να ενώσουµε στην ουσία αυτά τα σύνολα. Επειδή δεν είναι δυνατόν να γνωρίζουµε σε κάθε χρονική στιγµή τις τιµές αυτών των συνόλων, τις ανακτούµε µε δύο φωλιασµένες, έτσι ώστε σε κάθε περίπτωση τα σύνολα αυτά, να περιέχουν τις σωστές τιµές. Μιλώντας γενικά, µπορούµε να έχουµε όσες φωλιασµένες θέλουµε, τη µία µέσα στην άλλη. Σε περιπτώσεις δε, κατά τις οποίες υπάρχει κάποια ασάφεια όσον αφορά τα ονόµατα των πεδίων ή των πινάκων που περιλαµβάνονται στο ερώτη- µα, µπορούµε να χρησιµοποιήσουµε ψευδώνυµα (aliases) για αυτούς τους πίνακες, µε τον τρόπο που έχουµε περιγράψει στα προηγούµενα παραδείγµατα. Ας θεωρήσου- µε π.χ. το ερώτηµα

18 Κεφάλαιο 6 : SQL 104 E.FNAME, E.LNAME E WHERE E.SSN IN ( ESSN DEPENDENT WHERE ESSN = E.SSN AND E.FNAME = DEPENDENT_NAME AND SEX = E.SEX ) το οποίο επιστρέφει το όνοµα και το επώνυµο κάθε υπαλλήλου, που έχει ένα προστατευόµενο µέλος µε το ίδιο όνοµα και το ίδιο φύλλο µε το δικό του. Επειδή ο πίνακας εµφανίζεται τόσο στο εσωτερικό όσο και στο εξωτερικό ε- ρώτηµα, θα πρέπει αφ ενός µεν, να δηµιουργήσουµε ένα ψευδώνυµό του, Ε, έτσι ώ- στε να καταστήσουµε διακριτό το ρόλο των δύο αντιγράφων του, αφ ετέρου δε, να χρησιµοποιήσουµε τον πλήρη τρόπο σύνταξης κάθε φορά που χρησιµοποιούµε κάποιο πεδίο, έτσι ώστε να ξέρουµε σε ποιο πίνακα αναφέρεται. Ολοκληρώνουµε την περιγραφή των φωλιασµένων στη γλώσσα SQL, µε την περιγραφή των παραµέτρων EXISTS και NOT EXISTS, οι οποίες χρησιµοποιούνται για να ελέγξουν εάν κάποιο φωλιασµένο ερώτηµα έχει επιστρέψει πλειάδες ή όχι. Εάν η εσωτερική έχει επιστρέψει πλειάδες οι οποίες θα χρησιµοποιηθούνε από το εξωτερικό ερώτηµα, η παράµετρος EXISTS θα επιστρέψει την τιµή TRUE, ενώ στην αντίθετη περίπτωση θα επιστρέψει την τιµή FALSE. Ε- ντελώς ανάλογος είναι και ο ρόλος της NOT EXISTS η οποία για τις δύο παραπάνω περιπτώσεις θα επιστρέψει τις τιµές FALSE και TRUE αντίστοιχα. Για να κατανοήσουµε καλύτερα τη λειτουργία αυτών των δύο παραµέτρων, ας θεωρήσουµε το επόµενο ερώτηµα : έστω ότι θέλουµε να βρούµε τα ονοµατεπώνυ- µα όλων των υπαλλήλων της εταιρείας που δεν έχουν προστατευόµενα µέλη. Η εντολή που θα απαντήσει σε αυτό το ερώτηµα, έχει τη µορφή LNAME, FNAME WHERE NOT EXISTS ( * DEPENDENT WHERE SSN = ESSN ) Σε αυτό το ερώτηµα, η εσωτερική, επιστρέφει όλες τις πλειάδες του πίνακα DEPENDENT που συσχετίζονται µε κάποιο από τους υπαλλήλους της εταιρείας. Εάν αυτή η δεν επιστρέψει καµία πλειάδα, αυτό σηµαίνει πως ο υ- πάλληλος αυτός δεν έχει προστατευόµενα µέλη, και εποµένως ικανοποιεί τη συνθήκη για αυτό το ερώτηµα µε τον τρόπο αυτό µπορούµε τελικά να ανακτήσουµε όλους τους υπαλλήλους που χαρακτηρίζονται από αυτή την ιδιότητα. Εντελώς ανάλογη είναι και η χρήση της παραµέτρου EXISTS. Αθροιστικές συναρτήσεις (aggregate functions) : όπως έχει ήδη αναφερθεί στο προηγούµενο κεφάλαιο, σε ένα σχεσιακό σχήµα βάσεων δεδοµένων, υπάρχει η δυνατότητα να εφαρµόσουµε πάνω στα δεδοµένα των πινάκων, ένα σύνολο συναρτή-

19 Σχεσιακές Βάσεις εδοµένων Θεωρία και Εφαρµογές 105 σεων οι οποίες επιστρέφουν κάποιες τιµές. Στη γλώσσα SQL οι συναρτήσεις αυτές είναι η COUNT η οποία επιστρέφει το πλήθος των εγγραφών ενός πίνακα ή το πλήθος κάποιων τιµών ανάλογα µε τον τρόπο µε τον οποίο καλείται, η MIN και η MAX οι οποίες επιστρέφουν την ελάχιστη και τη µέγιστη τιµή κάποιου συνόλου, η SUM που επιστρέφει το άθροισµα κάποιων τιµών, και η AVG που επιστρέφει το µέσο όρο τους. Στις επόµενες παραγράφους παρουσιάζουµε κάποια παραδείγµατα που θα µας επιτρέψουν να κατανοήσουµε τον τρόπο µε τον οποίο χρησιµοποιούνται αυτές οι συναρτήσεις µέσα από τη γλώσσα χειρισµού δεδοµένων. 1) Να βρεθεί το άθροισµα των µισθών όλων των υπαλλήλων που δουλεύουν στο Research Department, καθώς επίσης ο µεγαλύτερος και ο µικρότερος µισθός και ο µέσος όρος τους WHERE SUM (SALARY), MAX (SALARY), MIN (SALARY), AVG (SALARY), DEPARTMENT DNO = DNUMBER AND DNAME = Research. 2) Να βρεθεί το πλήθος των υπαλλήλων που δουλεύουν στο Research Department COUNT (*), DEPARTMENT WHERE DNO = DNUMBER AND DNAME = Research. 3) Να ανακτηθεί το όνοµα και το επώνυµο των υπαλλήλων της εταιρείας που έχουν περισσότερα από δύο προστατευόµενα µέλη. LNAME, FNAME WHERE ( COUNT (*) DEPENDENT WHERE SSN=ESSN ) 2 Οι παράµετροι GROUP BY και HAVING: Σε ορισµένες περιπτώσεις, επιθυ- µούµε την εφαρµογή των αθροιστικών συναρτήσεων, όχι σε όλες τις πλειάδες του πίνακα, αλλά µόνο σε ένα σύνολο από αυτές, οι οποίες έχουν ένα κοινό χαρακτηριστικό, Ας υποθέσουµε για παράδειγµα πως για κάθε τµήµα της εταιρείας ζητούµε να ανακτήσουµε το πλήθος των υπαλλήλων που εργάζονται σε αυτό, καθώς και το µέσο όρο των µισθών τους. Στην περίπτωση αυτή είναι προφανές πως θα πρέπει να οµαδοποιήσουµε τις εγγραφές των υπαλλήλων µε κριτήριο τον κωδικό του τµήµατος στο οποίο απασχολούνται, και στη συνέχεια να εφαρµόσουµε τις αθροιστικές συναρτήσεις, σε κάθε µια από αυτές τις οµάδες. Το σύνολο των πεδίων ως προς τα οποία θα λάβει χώρα αυτή η οµαδοποίηση (grouping attributes) πρέπει υποχρεωτικά να είναι ανάµεσα στα πεδία που θα επιστρέψει η έτσι ώστε να γνωρίζουµε σε ποιο πεδίο αναφέρεται η κάθε µια από τις εγγραφές που θα εµφανιστούν στο τελικό αποτέλεσµα.

20 Κεφάλαιο 6 : SQL 106 Χαρακτηριστικό παράδειγµα χρήσης της παραµέτρου GROUP BY είναι το ερώτηµα DNO, COUNT (*), AVG (SALARY) GROUP BY DNO που για κάθε τµήµα της εταιρείας, επιστρέφει τον κωδικό του, το πλήθος των υπαλλήλων που εργάζονται σε αυτό, και το µέσο όρο των µισθών τους. Είναι σηµαντικό να αναφερθεί στο σηµείο αυτό, πως σε περιπτώσεις κατά τις οποίες τα δεδοµένα που θέλουµε να ανακτήσουµε ανήκουν σε δύο ή περισσότερους πίνακες, η παράµετρος GROUP BY θα κληθεί µετά την πράξη της σύζευξης των δύο πινάκων. Ας θεωρήσουµε για παράδειγµα το ερώτηµα PNUMBER, PNAME, COUNT (*) PROJECTS, WORKS_ON WHERE PNUMBER = PNO GROUP BY PNUMBER, PNAME που για κάθε PROJECT της εταιρείας, επιστρέφει τον κωδικό του, το όνοµά του, καθώς και το πλήθος των υπαλλήλων που εργάζονται σε αυτό. Επειδή στην περίπτωση αυτή θα λάβει χώρα συσχέτιση πληροφορίας από δύο διαφορετικούς πίνακες, θα πρέπει να χρησιµοποιηθεί η πράξη της σύζευξης (join) που στην προκειµένη περίπτωση θα συσχετίσει το πεδίο PNUMBER του πίνακα PROJECT, µε το πεδίο PNO του πίνακα WORKS_ON. Έτσι, η οµαδοποίηση των εγγραφών µε βάση τον κωδικό και το όνοµα του PROJECT, θα πρέπει να εφαρµοσθεί πάνω στο αποτέλεσµα της σύζευξης των δύο πινάκων, κάτι που σηµαίνει πως η παράµετρος GROUP BY θα χρησιµοποιηθεί τελευταία. Επιπλέον, είναι πιθανό να µην επιθυµούµε την εφαρµογή των αθροιστικών συναρτήσεων, πάνω σε όλες τις οµάδες εγγραφών που οποίες προκύπτουν δια της χρήσης της παραµέτρου GROUP BY, αλλά µόνο πάνω σε εκείνες που πληρούν κάποια συγκεκριµένη συνθήκη. Στην περίπτωση κατά την οποία είµαστε υποχρεω- µένοι να διαλέξουµε αυτές τις οµάδες, µπορούµε να χρησιµοποιήσουµε την παράµετρο HAVING συνοδευόµενη από κάποια συνθήκη επιλογής. Ας υποθέσουµε για παράδειγµα ότι ζητούµε το όνοµα και τον κωδικό του PROJECT καθώς και το πλήθος των υπαλλήλων που εργάζονται σε αυτό, όχι όµως για όλα τα PROJECTS, αλλά µόνο για εκείνα στα οποία εργάζονται περισσότεροι από δύο υπάλληλοι. Στην περίπτωση αυτή θα επαναδιατυπώσουµε το προηγούµενο ερώτηµα, ως εξής : PNUMBER, PNAME, COUNT (*) PROJECTS, WORKS_ON WHERE PNUMBER = PNO GROUP BY PNUMBER, PNAME HAVING COUNT (*) > 2. Η διαφορά ανάµεσα στα τελευταία δύο ερωτήµατα, έχει να κάνει µε το πλήθος των οµάδων εγγραφών που θα περιλαµβάνοντα στο τελικό αποτέλεσµα. Και

21 Σχεσιακές Βάσεις εδοµένων Θεωρία και Εφαρµογές 107 στις δύο περιπτώσεις, θα λάβει χώρα η σύζευξη ανάµεσα στους πίνακες, καθώς και η οµαδοποίηση των πλειάδων του ενδιάµεσου πίνακα που θα προκύψει από τη αυτή τη σύζευξη, µε κριτήριο τον κωδικό και το όνοµα του PROJECT. Η πρόταση όµως δεν θα επιστρέψει όλες τις εγγραφές αλλά µόνο εκείνες που αντιστοιχούν σε πλήθος υπαλλήλων µεγαλύτερο του 2. Εποµένως η παράµετρος HAVING επιτρέπει την επιλογή συγκεκριµένων οµάδων εγγραφών. Τέλος, ιδιαίτερη προσοχή απαιτείται σε περιπτώσεις κατά τις οποίες υπάρχουν δύο συνθήκες επιλογής, µια στην πρόταση, και µια στην παράµετρο HAVING. Έστω για παράδειγµα ότι για κάθε τµήµα, ζητούµε το πλήθος των υπαλλήλων που εργάζονται σε αυτό και έχουν µισθό µεγαλύτερο από 40000, αλλά την πληροφορία αυτή τη θέλουµε µόνο για εκείνα τα τµήµατα στα οποία εργάζονται περισσότεροι από 5 υπάλληλοι. Στην περίπτωση αυτή έχουµε δύο συνθήκες τη συνθήκη SALARY > που αναφέρεται στους µισθούς των υπαλλήλων, και τη συνθήκη COUNT (*) > 5 που αναφέρεται στο πλήθος των υπαλλήλων που δουλεύουν σε κάθε τµήµα. Η σωστή απάντηση σε αυτό το ερώτηµα έχει τη µορφή DNAME, COUNT (*) DEPARTMENT, WHERE DNUMBER = DNO AND SALARY > AND DNO IN ( DNO GROUP BY DNO HAVING COUNT (*) > 5 ) GROUP BY DNAME Συγκρίσεις ανάµεσα σε συµβολοσειρές, αριθµητικοί τελεστές, και ταξινό- µηση εγγραφών: Σε ορισµένα συστήµατα διαχείρισης βάσεων δεδοµένων, υπάρχει η δυνατότητα να καθορίσουµε κριτήρια αναζήτησης στην πρόταση WHERE που να περιλαµβάνουν συγκρίσεις ανάµεσα σε συµβολοσειρές. Μια συµβολοσειρά ορίζεται ως ένα σύνολο χαρακτήρων όπως είναι για παράδειγµα ένα επώνυµο ή µια διεύθυνση. Σε µια εντολή, η πρόταση WHERE επιτρέπει τη σύγκριση ανά- µεσα σε τµήµατα συµβολοσειρών δια της χρήσης της παραµέτρου LIKE. Η LIKE δέχεται ως όρισµα ένα τµήµα συµβολοσειράς, και το διαβιβάζει στην πρόταση WHERE η οποία συγκρίνει αυτό το τµήµα µε την τιµή του αντίστοιχου πεδίου, και επιστρέφει µόνο εκείνες τις εγγραφές, οι οποίες ικανοποιούν τη συνθήκη επιλογής. Επειδή η LIKE συγκρίνει τµήµατα συµβολοσειρών, θα πρέπει µε κάποιο τρόπο να καθορίσουµε, σε ποιο τµήµα της συµβολοσειράς αναφέρεται το όρισµά της. Για να το κάνουµε αυτό, µπορούµε να χρησιµοποιήσουµε τα ειδικά σύµβολα «%» και «_» εκ των οποίων το πρώτο αναφέρεται σε ένα αυθαίρετο πλήθος χαρακτήρων, ενώ το δεύτερο σε ένα απλό χαρακτήρα. Εάν για παράδειγµα θέλουµε να ανακτήσουµε όλους τους υπαλλήλους της εταιρείας των οποίων η διεύθυνση περιλαµβάνει τη λέξη Houston, µπορούµε να χρησιµοποιήσουµε την εντολή

22 Κεφάλαιο 6 : SQL 108 WHERE FNAME, LNAME ADDRESS LIKE %HOUSTON% Η εντολή αυτή επιστρέφει όλους τους υπαλλήλους της εταιρείας, η διεύθυνση των οποίων περιέχει τη συµβολοσειρά «HOUSTON». Τα σύµβολα «%» που υπάρχουν πριν και µετά τη συµβολοσειρά, υποδηλώνουν πως πριν και µετά τη λέξη HOUSTON µπορεί να βρίσκεται ένα αυθαίρετο πλήθος χαρακτήρων το µόνο πράγµα που ενδιαφέρει την εντολή είναι η ύπαρξη ή όχι της συµβολοσειράς HOUSTON µέσα στην τιµή της διεύθυνσης για κάθε υπάλληλο. Σε περιπτώσεις κατά τις οποίες θέλουµε να αναφερθούµε σε συγκεκριµένο χαρακτήρα µέσα στη συµβολοσειρά, µπορούµε να χρησιµοποιήσουµε το σύµβολο «_». Ας υποθέσουµε για παράδειγµα πως θέλουµε να ανακτήσουµε όλους τους εργαζόµενους που έχουν γεννηθεί τη δεκαετία του Εάν λάβουµε υπ όψιν το φορ- µαλισµό που χρησιµοποιούµε για να καταχωρήσουµε τις ηµεροµηνίες µια τυπική ηµεροµηνία είναι π.χ. η 12/6/1957 δεν είναι δύσκολο να διαπιστώσουµε πως οι εργαζόµενοι που έχουν γεννηθεί το παραπάνω χρονικό διάστηµα, θα έχουν ως όγδοο ψηφίο στην τιµή της ηµεροµηνίας γέννησής τους, τον αριθµό 5. Εποµένως µπορούµε να επαναδιατυπώσουµε το παραπάνω ερώτηµα, ζητώντας από τη βάση να µας επιστρέψει όλους τους εργαζόµενους, η ηµεροµηνία γέννησης των οποίων, έχει ο- ποιαδήποτε τιµή σε όλα τα ψηφία της, µε εξαίρεση το όγδοο ψηφίο, το οποίο θα πρέπει υποχρεωτικά να έχει την τιµή 5. Η εντολή που περιγράφει αυτό το ερώτηµα, έχει τη µορφή WHERE LNAME, FNAME BDATE LIKE _ 5 _ Με άλλα λόγια το σύµβολο «_» αντικαθιστά ένα χαρακτήρα κάθε φορά, ενώ το σύµβολο «%», αντικαθιστά ένα σύνολο χαρακτήρων, αυθαίρετου µεγέθους. Ένα άλλο ενδιαφέρον χαρακτηριστικό που συναντάται σε πολλές εκδόσεις της γλώσσας χειρισµού δεδοµένων, είναι η δυνατότητα χρήσης αριθµητικών τελεστών, µέσα στην πρόταση. Τυπικό παράδειγµα µιας τέτοιας περίπτωσης είναι το ερώτηµα WHERE FNAME, LNAME, 1.1*SALARY, WORKS_ON, PROJECT SSN = ESSN AND PNO = PNUMBER AND PNAME = ProductX που για όλους τους υπαλλήλους που εργάζονται στο PROJECT µε όνοµα ProductX, επιστρέφει το όνοµά τους, το επώνυµό τους, και το µισθό τους αυξηµένο κατά 10%. Με τον ίδιο τρόπο µπορούµε να χρησιµοποιήσουµε και τους αριθµητικούς τελεστές «+», και «/». Τέλος, εάν το επιθυµούµε, µπορούµε να εµφανίσουµε τις εγγραφές των πινάκων που επιστρέφονται από ένα ερώτηµα, όχι µε τη σειρά µε την οποία είναι καταχω-

23 Σχεσιακές Βάσεις εδοµένων Θεωρία και Εφαρµογές 109 ρηµένες στους πίνακες της βάσης, αλλά ταξινοµηµένες, κατά αύξουσα ή κατά φθίνουσα ταξινόµηση. Για να το κάνουµε αυτό θα χρησιµοποιήσουµε την παράµετρο ORDER BY συνοδευόµενη από τα πεδία ως προς τα οποία θέλουµε να λάβει χώρα αυτή η ταξινόµηση. Εάν δεν καθορίσουµε κάποιο είδος ταξινόµησης, τα αποτελέσµατα του ερωτήµατος θα ταξινοµηθούν κατά αύξουσα σειρά. Έτσι η εντολή DNAME, LNAME, FNAME, PNAME DEPARTMENT,, WORKS_ON, PROJECT WHERE DNUMBER = DNO AND SSN = ESSN AND PNO = PNUMBER ORDER BY DNAME, LNAME, FNAME θα επιστρέψει τα ονόµατα των υπαλλήλων, των τµηµάτων στα οποία εργάζονται, και των έργων στα οποία απασχολούνται, ταξινοµηµένων κατά αύξουσα σειρά, ως προς το όνοµα του τµήµατος, το επώνυµο του υπαλλήλου, και το όνοµα του υπαλλήλου. Αντίθετα εάν χρησιµοποιήσουµε την ORDER BY µε τη µορφή ORDER BY DNAME DESC, LNAME ASC, FNAME ASC τότε η ταξινόµηση ως προς το όνοµα του τµήµατος θα γίνει κατά φθίνουσα σειρά, ενώ η ταξινόµηση ως προς το επώνυµο και το όνοµα του υπαλλήλου, θα γίνει κατά αύξουσα σειρά.

Εισαγωγή Mια από τις βασικές λειτουργίες ενός σχεσιακού συστήµατος διαχείρισης βάσεων δεδοµένων είναι η διαχείριση του πληροφοριακού περιεχοµένου που

Εισαγωγή Mια από τις βασικές λειτουργίες ενός σχεσιακού συστήµατος διαχείρισης βάσεων δεδοµένων είναι η διαχείριση του πληροφοριακού περιεχοµένου που ΤΕΙ ΑΘΗΝΩΝ ΣΧΟΛΗ Σ Ο ΤΜΗΜΑ ΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2009-2010 Η/Υ ΙΙΙ ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ (Θεωρία) ΜΑΘΗΜΑ 4ο Η γλώσσα βάσεων δεδοµένων SQL, η γλώσσα QBE. Αθανασίου Ειρήνη, MSc 1 Εισαγωγή Mια

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

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ 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 Μια γλώσσα σχεσιακής βάσης

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

Εισαγωγή στις Βάσεις Δεδομζνων II

Εισαγωγή στις Βάσεις Δεδομζνων II ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΣΙΑ ΠΑΝΕΠΙΣΗΜΙΟ ΚΡΗΣΗ Εισαγωγή στις Βάσεις Δεδομζνων II Ενότητα: Η γλώσσα SQL Διδάσκων: Πηγουνάκης Κωστής ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΣΧΟΛΗ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ Άδειες Χρήσης Το παρόν εκπαιδευτικό

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

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

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

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

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

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

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

Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL

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

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

Βάσεις Δεδομένων Η γλώσσα 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) Ένας από τους βασικούς λόγους της απόλυτης επικράτησης των Σχεσιακών ΒΔ Εξασφαλίζει μεταφερσιμότητα

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

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

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

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

Περιεχόμενα. Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL. Συνένωση Σχέσεων στην SQL2 (3) Συνένωση Σχέσεων στην SQL2. (Join Relations Feature in SQL)

Περιεχόμενα. Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL. Συνένωση Σχέσεων στην SQL2 (3) Συνένωση Σχέσεων στην SQL2. (Join Relations Feature in SQL) Περιεχόμενα Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL Παύλος Εφραιμίδης Προχωρημένα Ερωτήματα SQL Συνένωση Συναθροιστικές Συναρτήσεις Ομαδοποίηση Βάσεις Δεδομένων SQL - Μέρος Τρίτο 1 Βάσεις Δεδομένων

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

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

Βάσεις δεδομένων. (8 ο μάθημα) Ηρακλής Βαρλάμης Βάσεις δεδομένων (8 ο μάθημα) Ηρακλής Βαρλάμης varlamis@hua.gr Περιεχόμενα SQL (συνέχεια) Φωλιασμένες υπο-ερωτήσεις Δημιουργία όψεων Πράξεις ενημέρωσης και περιορισμοί 1/5/2014 Βάσεις Δεδομένων 2 Από το

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

Κεφάλαιο 3 Σχεσιακό Μοντέλο

Κεφάλαιο 3 Σχεσιακό Μοντέλο Κεφάλαιο 3 Σχεσιακό Μοντέλο Στο κεφάλαιο αυτό παρουσιάζεται το σχεσιακό µοντέλο βάσεων δεδοµένων, και αναλύονται τα δοµικά του χαρακτηριστικά, οι βασικές του ιδιότητες, και ο τρόπος µε τον οποίο µπορεί

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

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

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

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

Κεφάλαιο 11 Ερωτήµατα

Κεφάλαιο 11 Ερωτήµατα Κεφάλαιο 11 Ερωτήµατα Στο κεφάλαιο αυτό περιγράφεται ο τρόπος δηµιουργίας και διαχείρισης ερωτηµάτων µέσα από το περιβάλλον της Microsoft Access. Όπως έχει ήδη αναφερθεί σε προηγούµενο κεφάλαιο, ένας από

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

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

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

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

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

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

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

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ (Relational Model) Μαθ. #10

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ (Relational Model) Μαθ. #10 ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ (Relational Model) Μαθ. #10 Πράξεις Αλλαγής εδοµένων INSERT (εισαγωγή) Αυτός ο τελεστής παρέχει µια λίστα από πεδία τιµών για µια καινούργια πλειάδα η οποία θα εισαχθεί σε µια σχέση R

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

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

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

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

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

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

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

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

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

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

Βάσεις Δεδομένων Σύνθετα SQL queries. Ψευδώνυμα (Aliases) (2) Ψευδώνυμα (Aliases) (1) Ασάφεια και Πλήρη Ονόματα. Ερώτημα χωρίς τον όρο WHERE (1)

Βάσεις Δεδομένων Σύνθετα SQL queries. Ψευδώνυμα (Aliases) (2) Ψευδώνυμα (Aliases) (1) Ασάφεια και Πλήρη Ονόματα. Ερώτημα χωρίς τον όρο WHERE (1) Ασάφεια και Πλήρη Ονόματα Βάσεις Δεδομένων Σύνθετα SQL queries Παύλος Εφραιμίδης Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 1 Ονόματα Πεδίων: Στην SQL, τα ονόματα των πεδίων (γνωρισμάτων) σε κάθε σχέση είναι

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

Κεφάλαιο 9 Συσχετίσεις

Κεφάλαιο 9 Συσχετίσεις Κεφάλαιο 9 Συσχετίσεις Το κεφάλαιο αυτό διαπραγµατεύεται τη δηµιουργία και διαχείριση των συσχετίσεων που υφίστανται ανάµεσα στους πίνακες µιας σχεσιακής βάσης δεδοµένων. Όπως έχει ήδη αναφερθεί, ο ρόλος

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

Βάσεις Δεδομένων Σύνθετα SQL queries

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

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

Lecture 14: SQL DML I

Lecture 14: SQL DML I Department of Computer Science University of Cyprus EPL342 Databases Lecture 14: SQL DML I SQL Structured Query Language (Chapter 8.4, Elmasri-Navathe 5ED) ιδάσκων: Παναγιώτης Ανδρέου http://www.cs.ucy.ac.cy/courses/epl342

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

Κεφάλαιο 5 Σχεσιακή Άλγεβρα

Κεφάλαιο 5 Σχεσιακή Άλγεβρα Κεφάλαιο 5 Σχεσιακή Άλγεβρα Στο κεφάλαιο αυτό παρουσιάζονται οι θεµελιώδεις πράξεις της σχεσιακής άλγεβρας που χρησιµοποιούνται για τη διαχείριση των δεδοµένων των πινάκων µιας σχεσιακής βάσης δεδοµένων.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Certified Data Base Designer (CDBD)

Certified Data Base Designer (CDBD) Certified Data Base Designer (CDBD) Εξεταστέα Ύλη (Syllabus) Πνευµατικά ικαιώµατα Το παρόν είναι πνευµατική ιδιοκτησία της ACTA Α.Ε. και προστατεύεται από την Ελληνική και Ευρωπαϊκή νοµοθεσία που αφορά

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

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

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

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

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

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL Εθνικό Μετσόβιο ολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Βάσεις Δεδομένων Βασίλειος Βεσκούκης v.vescoukis@cs.ntua.gr Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL Η γλώσσα SQL

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΠΕΜΠΤΟ Triggers, Stored procedures Γιώργος Μαρκοµανώλης Περιεχόµενα Triggers-Ενηµέρωση δεδοµένων άλλων πινάκων... 1 Ασφάλεια...

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

Κεφάλαιο 4 Λογικός Σχεδιασµός Κανονικοποίηση

Κεφάλαιο 4 Λογικός Σχεδιασµός Κανονικοποίηση Κεφάλαιο 4 Λογικός Σχεδιασµός Κανονικοποίηση Στο κεφάλαιο αυτό παρουσιάζονται οι βασικοί κανόνες σχεδίασης της δοµής των πινάκων στο σχεσιακό µοντέλο, και αναλύεται η τεχνική της κανονικοποίησης που είναι

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΠΕΜΠΤΟ Views, Triggers Γιώργος Μαρκοµανώλης Περιεχόµενα Όψη... 1 ηµιουργία όψης... 2 Επιλογή CHECK... 3 Όψεις µόνο για εµφάνιση

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

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

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

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

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

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

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

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

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

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

Εγχειρίδιο Χρήσης της Microsoft Access 2000 1

Εγχειρίδιο Χρήσης της Microsoft Access 2000 1 Εγχειρίδιο Χρήσης της Microsoft Access 2000 1 ΗΜΙΟΥΡΓΙΑ ΝΕΑΣ ΒΑΣΗΣ Ε ΟΜΕΝΩΝ (NEW DATABASE) Για να δηµιουργήσουµε µια νέα βάση δεδοµένων ξεκινούµε τη Microsoft Access 2000 από το Start Menu ή τη Γραµµή

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

Κεφάλαιο 2 Μοντέλο Οντοτήτων Συσχετίσεων

Κεφάλαιο 2 Μοντέλο Οντοτήτων Συσχετίσεων Κεφάλαιο 2 Μοντέλο Οντοτήτων Συσχετίσεων Στο κεφάλαιο αυτό παρουσιάζεται το µοντέλο οντοτήτων συσχετίσεων, µια από τις πιο σηµαντικές διαγραµµατικές τεχνικές που µας επιτρέπουν να καθορίσουµε τη δοµή της

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

Εισαγωγή στις Βάσεις Δεδομζνων II

Εισαγωγή στις Βάσεις Δεδομζνων II ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΣΙΑ ΠΑΝΕΠΙΣΗΜΙΟ ΚΡΗΣΗ Εισαγωγή στις Βάσεις Δεδομζνων II Ενότητα: Σχεσιακή Άλγεβρα Διδάσκων: Πηγουνάκης Κωστής ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΣΧΟΛΗ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ Άδειες Χρήσης Το παρόν

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

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

Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 2 Η Γλώσσα SQL Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 1 Η γλώσσα SQL What men or gods are these? What maidens loth? What mad pursuit? What struggle to escape? What pipes and timbrels? What wild ectasy?

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

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

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

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

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

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

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

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

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

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

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

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

Στο κεφάλαιο αυτό περιγράφεται η τρόπος δηµιουργίας και διαχείρισης πινάκων µέσα από το περιβάλλον της Microsoft

Στο κεφάλαιο αυτό περιγράφεται η τρόπος δηµιουργίας και διαχείρισης πινάκων µέσα από το περιβάλλον της Microsoft Κεφάλαιο 8 Πίνακες Στο κεφάλαιο αυτό περιγράφεται η τρόπος δηµιουργίας και διαχείρισης πινάκων µέσα από το περιβάλλον της Microsoft Access. Η δηµιουργία ενός πίνακα (table) µέσα από τη Microsoft Access,

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

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Βάσεις Δεδομένων Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Βάσεις Δεδομένων», 2015-2016 Κεφάλαιο 6: Structured Query Language (SQL) Μια γλώσσα Βάσεων

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

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

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Δεδομένων. Βασίλειος Βεσκούκης Ορισμός Βάσης Δεδομένων Δομή Περιορισμοί Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Βάσεις Δεδομένων Βασίλειος Βεσκούκης v.vescoukis@cs.ntua.gr Βασικές πράξεις της Σχεσιακής Αλγεβρας Σχεσιακό Μοντέλο Δεδομένων Ορισμός Βάσης

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

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

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

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

Query-by-Example (QBE)

Query-by-Example (QBE) Φροντιστήριο 8 o Χειµερινό Εξάµηνο 2009-10 Τµήµα Μηχανικών Η/Υ και Πληροφορικής Πολυτεχνική Σχολή, Πανεπιστήµιο Πατρών Πέµπτη, 3 εκεµβρίου 2009 Τι είναι η QBE; Γλώσσα επερωτήσεων σε σχεσιακές ϐάσεις δεδοµένων

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

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

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

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

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

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

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

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

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

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

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

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

τουργικών χαρακτηριστικών πού έχουν µετατρέψει την αλληλεπίδραση του χρήση µε την εφαρµογή σε µια εύκολη και ευχάριστη διαδικασία.

τουργικών χαρακτηριστικών πού έχουν µετατρέψει την αλληλεπίδραση του χρήση µε την εφαρµογή σε µια εύκολη και ευχάριστη διαδικασία. Κεφάλαιο 10 Φόρµες Στο κεφάλαιο αυτό περιγράφεται ο τρόπος µε τον οποίο είναι δυνατή η δηµιουργία διαλόγων αλληλεπίδρασης µε το χρήση και η διαχείριση των δεδοµένων της εφαρµογής µέσα από ένα εύχρηστο

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

DELETE, UPDATE, INSERT.

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

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

Κεφάλαιο 7 Εισαγωγή στη Microsoft Access

Κεφάλαιο 7 Εισαγωγή στη Microsoft Access Κεφάλαιο 7 Εισαγωγή στη Microsoft Access Το κεφάλαιο αυτό περιλαµβάνει µια συνοπτική εισαγωγή στην Microsoft Access 2000, που είναι και το σχεσιακό σύστηµα διαχείρισης βάσεων δεδοµένων µε το οποίο θα ασχοληθούµε.

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

DELETE, UPDATE, INSERT

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

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

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

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

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

1 / 87

1 / 87 Τα πρώτα ερωτήματα SQL Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2016 1 / 87 Δυο λόγια για την SQL Υλοποίηση του σχεσιακού μοντέλου δεδομένων του E.F. Codd, αρχικά ως DSl/Alpha, αργότερα

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

Lecture 16: SQL DML III

Lecture 16: SQL DML III Department of Computer Science University of Cyprus EPL342 Databases Lecture 16: SQL DML III SQL Structured Query Language (Chapter 8.5.5-8.6, Elmasri-Navathe 5ED) ιδάσκων: Παναγιώτης Ανδρέου http://www.cs.ucy.ac.cy/courses/epl342

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

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

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

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

S Q Q L L -- SQL (Structured Query Language) select insert update delete 2.47

S Q Q L L -- SQL (Structured Query Language) select insert update delete 2.47 Κεφάλαιο 4 Η Γλώσσα SQL και Σχεσιακός Λογισµός Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.46 SQL -ΕΙΣΑΓΩΓΗ SQL (Structured Query Language) είναι η τυποποιηµένη standard γλώσσα στις Σχεσιακές Βάσεις.

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

1 / 97

1 / 97 Τα πρώτα ερωτήματα SQL Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 97 Περιεχόμενα 1 Εισαγωγικά σχόλια και παρατηρήσεις 2 Απλά ερωτήματα προβολής, επιλέγοντας στήλες από ένα πίνακα

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΕΥΤΕΡΟ ηµιουργία Βάσης, Πίνακα, Domain Γιώργος Μαρκοµανώλης Περιεχόµενα ηµιουργία Βάσης... 1 ηµιουργία µιας shadow βάσης... 2 ιαγραφή

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

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

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

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

SQL Data Manipulation Language

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

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

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

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

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

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

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

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

Εισαγωγή στις Βάσεις Δεδομζνων II

Εισαγωγή στις Βάσεις Δεδομζνων II ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΣΙΑ ΠΑΝΕΠΙΣΗΜΙΟ ΚΡΗΣΗ Εισαγωγή στις Βάσεις Δεδομζνων II Ενότητα: Το Σχεσιακό Μοντζλο Διδάσκων: Πηγουνάκης Κωστής ΤΜΗΜΑ ΟΙΚΟΝΟΜΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΣΧΟΛΗ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ Άδειες Χρήσης Το

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

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

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

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

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

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

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

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

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

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

Η ΕΝΝΟΙΑ ΤΟΥ Ε ΟΜΕΝΟΥ ΚΑΙ ΤΟΥ ΤΥΠΟΥ Ε ΟΜΕΝΩΝ

Η ΕΝΝΟΙΑ ΤΟΥ Ε ΟΜΕΝΟΥ ΚΑΙ ΤΟΥ ΤΥΠΟΥ Ε ΟΜΕΝΩΝ Κεφάλαιο 1 Εισαγωγή Στο κεφάλαιο αυτό παρουσιάζεται µια συνοπτική εισαγωγή στη θεωρία των βάσεων δεδοµένων και των συστηµάτων διαχείρισης βάσεων δεδοµένων, προκειµένου ο αναγνώστης να κατανοήσει τις βασικές

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

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

Βάσεις δεδομένων. (6 ο μάθημα) Ηρακλής Βαρλάμης Βάσεις δεδομένων (6 ο μάθημα) Ηρακλής Βαρλάμης varlamis@hua.gr (Συνέχεια) ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ 3/4/2014 2 Περιεχόμενα Συνέχεια στη Σχεσιακή άλγεβρα Συνένωση Θήτα Ισότητας Φυσική Διαίρεση Σύνθετες λειτουργίες

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

3. SQL. 3. Structured Query Language (SQL) 1

3. SQL. 3. Structured Query Language (SQL) 1 3. Structured Query Language (SQL 1 3. SQL Η SQL (Structured Query Language είναι µία από τις γλώσσες διαχείρισης σχεσιακών βάσεων δεδοµένων. Ανήκει στην κατηγορία των µη διαδικαστικών γλωσσών τέταρτης

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

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά ΣΤΟΧΟΣ Postgress Το 9ο εργαστήριο εισάγει τον/ην φοιτητή/τρια στη χρήση και προγραµµατισµό συναρτήσεων στην PostgreSQL. ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ Η σχετική ύλη του βιβλίου του µαθήµατος (διαφάνειες και

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΠΕΜΠΤΟ Stored procedures, Exceptions, ιακιώµατα Γιώργος Μαρκοµανώλης Περιεχόµενα Stored Procedures... 1 Exceptions... 1 Εντολή

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κλειδιά (keys) Λογικά, σκεφτόµαστε για «κλειδιά» σαν τα δεδοµένα (τα πεδία) εκείνα τα οποία µας επιτρέπουν να ξεχωρίσουµε τις διάφορες εγγραφές

Κλειδιά (keys) Λογικά, σκεφτόµαστε για «κλειδιά» σαν τα δεδοµένα (τα πεδία) εκείνα τα οποία µας επιτρέπουν να ξεχωρίσουµε τις διάφορες εγγραφές Κλειδιά (keys) Key (κλειδί) Λογικά, σκεφτόµαστε για «κλειδιά» σαν τα δεδοµένα (τα πεδία) εκείνα τα οποία µας επιτρέπουν να ξεχωρίσουµε τις διάφορες εγγραφές Σούπερκλειδί (superkey) Ένα πεδίο ορισµού ή

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

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

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

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

Διάλεξη 07: Σχεσιακό Μοντέλο II (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 07: Σχεσιακό Μοντέλο II (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 07: Σχεσιακό Μοντέλο II (Relational Data Model) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: Περιορισμοί Σχεσιακού Μοντέλου και Σχεσιακά Σχήματα Πράξεις Ενημερώσεων

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

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 Άνοιξη 2014 Περιεχόμενα 1 Δημιουργία πινάκων με την

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

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα: ΘΕΜΑΤΑ Θέμα 1 ο Σε μία βάση δεδομένων χρηματιστηριακών συναλλαγών υπάρχουν οι παρακάτω πίνακες που αποτελούνται από τα εξής πεδία : : ΚΣ, ΗΜΝΙΑ, ΩΡΑ, ΚΜ, ΤΙΜΗ ΜΕΤΟΧΗ : ΚΜ, ΟΝΟΜΑ, ΕΤΟΣ_ΙΔΡΥΣΗΣ, ΚΚ, ΚΑΤΗΓΟΡΙΑ

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

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

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

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

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

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

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

Σχεσιακό Μοντέλο Τα πρώτα συστήµατα Βάσεων δεδοµένων ήταν βασισµένα στο ιεραρχικό ή στο δικτυακό µοντέλο δεδοµένων. Το σχεσιακό µοντέλο πρωτοπαρουσιάσ

Σχεσιακό Μοντέλο Τα πρώτα συστήµατα Βάσεων δεδοµένων ήταν βασισµένα στο ιεραρχικό ή στο δικτυακό µοντέλο δεδοµένων. Το σχεσιακό µοντέλο πρωτοπαρουσιάσ ΤΕΙ ΑΘΗΝΩΝ ΣΧΟΛΗ Σ Ο ΤΜΗΜΑ ΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ 2009-2010 Η/Υ ΙΙΙ ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ (Θεωρία) ΜΑΘΗΜΑ 3ο Σχεσιακό µοντέλο, Σχεσιακές βάσεις δεδοµένων, Σχεσιακό σχήµα βάσης δεδοµένων (Relational

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

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

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

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

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

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

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