SQL Data Definition. REFERENCES (foreign key), CHECKκαι PRIMARY KEY (key)



Σχετικά έγγραφα
Κεφάλαιο 5. Ορισµός Βάσεων εδοµένων µε SQL DDL - Άλλες Γλώσσες Σχεσιακών Βάσεων (QBE) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.

Κεφάλαιο 5. Ορισµός Βάσεων εδοµένων µε SQL DDL - Άλλες Γλώσσες Σχεσιακών Βάσεων (QBE) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.

Η Γλώσσα SQL. Μέρος β. Η Γλώσσα SQL Σελίδα 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Database System Concepts and Architecture (Αρχιτεκτονική, οµές, και Μοντέλα)

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

Query-by-Example (QBE)

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

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 8: RM II. Relational Model. (Chapter )

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Κεφ 4: Προχωρημένες Εντολές SQL

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

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

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

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

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΓΡΕΒΕΝΑ)

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

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

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

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

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

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

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

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

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

Η Γλώσσα SQL. Παράδειγμα ΒΔ (Τράπεζα)

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

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

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

Η Γλώσσα SQL. Μέρος β. Η Γλώσσα SQL Σελίδα 1

Διάλεξη 18: Προγραμματισμός Βάσης Δεδομένων ΙΙ. Διδάσκων: Παναγιώτης Ανδρέου

QUERY-BY-EXAMPLE. Η Γλώσσα SQL Σελίδα 1

Διάλεξη 02: Βάσεις Δεδομένων Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου

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


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

10 η Διάλεξη Python Βάσεις δεδομένων στη python

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

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

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

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

Κεφάλαιο 3 ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ. I.B. Το Σχεσιακό Μοντέλο Σελίδα 2.1

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

ΕΝΑΥΣΜΑΤΑ ΣΤΗΝ POSTGRES

Κεφάλαιο 4. Η Γλώσσα SQL και Σχεσιακός Λογισµός. Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.46

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

( Boats)) ( Tempsids, bid. sname. Boats. Boats. Boats. (Reserves)/ > Reserves. Interlake' Sailors) ...

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures):

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

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

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

Αρχιτεκτονική Συστημάτων Βάσεων Δεδομένων. Κατηγορίες χρηστών ΣΔΒΔ Αρχιτεκτονική ANSI/SPARC Γλώσσες ερωτημάτων Μοντέλα δεδομένων Λειτουργίες ΣΔΒΔ

Βάςεισ Δεδομζνων Ι. Ενότητα 7: Ειςαγωγή ςτην γλώςςα_sql. Δρ. Σςιμπίρθσ Αλκιβιάδθσ Σμιμα Μθχανικϊν Πλθροφορικισ ΣΕ

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

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

Η Γλώσσα SQL. Μέρος α. Η Γλώσσα SQL Σελίδα 1

Πληροφοριακά Συστήµατα

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

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

SQL: Αιτήματα. Κεφάλαιο 5. Database Management Systems, R. Ramakrishnan and J. Gehrke

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

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

Η Γλώσσα SQL. What is the average salary in the Toy department? Anonymous SQL user

Lecture 8: RM I + RA I

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

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

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


Transcript:

Κεφάλαια 4, 4, 5, 5, 6 - Ορισµός Βάσεων εδοµένων µε SQL DDL -ΠεριορισµοίΑκεραιότηταςστην SQL -Περιβάλλοντα Χρήσης της SQL (API) - Άλλες Γλώσσες Σχεσιακών Βάσεων (QBE) Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.84

SQL Data Definition H Γλώσσα Ορισµού (DDL) της SQL χρησιµοποιείται για CREATE, DROP και ALTER τις περιγραφές των Σχέσεων στη Βάση εδοµένων CREATE TABLE DEPARTMENT ( DNumber integer DName varchar(12) not null, MgrSSN char(9), MainLocation char(30) MgrSD char(9) primary key (Dnumber) foreign key MgrSSN references EMPLOYEE.SSN check MainLocation in ( athens, thessaloniki, patra ) ); Σε µερικά (παλαιότερα) SQL συστήµατα, δεν υπάρχει υποστήριξη για REFERENCES (foreign key), CHECKκαι PRIMARY KEY (key) Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.85

SQL DDL -συνέχεια Ηεντολή: DROP TABLE DEPENDENT διαγράφει τον πλήρη πίνακα DEPENDENT και τον ορισµό του (δεν είναι δυνατή πλέον η χρήση του για ενηµερώσεις, κλπ.) Ηεντολή: ALTER TABLE EMPLOYEE ADD JOB VARCHAR(15) προσθέτει ένα νέο γνώρισµα, µε όνοµα JOB, στη Σχέση EMPLOYEE Όλεςοιτιµέςγιατο JOB στηναρχήθαείναι NULL Αργότεραµπορείνααλλάξουνµετηνεντολή UPDATE. Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.86

Περιορισµοί Ακεραιότητας Το Σχεσιακό Μοντέλο υποστηρίζει 6 είδη περιορισµών ακεραιότητας: ΠΕ ΙΟ ΤΙΜΩΝ (DOMAIN), ΣΤΗΛΩΝ (COLUMN) και ΟΡΙΖΟΜΕΝΩΝΑΠΟΤΟΝΧΡΗΣΤΗ (USER-DEFINED), ΚΛΕΙ Ι (KEY), ΑΚΕΡΑΙΟΤΗΤΑΟΝΤΟΤΗΤΑΣ (ENTITY INTEGRITY), ΑΝΑΦΟΡΙΚΗΑΚΕΡΑΙΟΤΗΤΑ (REFERENTIAL INTEGRITY.) Τα περισσότερα εµπορικά DBMS δεν υποστηρίζουν όλους τους περιορισµούς ακεραιότητας (υποστήριξη εδώ σηµαίνει ότι αν µια ενηµέρωση καταστρατηγεί έναν περιορισµό τότε το DBMS δεν επιτρέπει την εκτέλεσή του) Έχουµε ήδη µιλήσει για τον προσδιορισµό των έµφυτων στο µοντέλο περιορισµών, (κλειδί, ακεραιότηταοντότητας, αναφορικήακεραιότητα. Οιάλλοι 3 περιορισµοί προσδιορίζονταιρητά. Μοντέρνα DBMS επιβάλουν όλο και περισσότερους δοµικούς περιορισµούς, µε καλό παράδειγµα την: Access της Microsoft. Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.87

Περιορισµοί στο Σχεσιακό Μοντέλο Όταν υποστηρίζεται ένας περιορισµός ακεραιότητας, αρκετές ενέργειες πρέπει να γίνουν από το DBMS. Αυτές είναι, η διαδοχική τροποποίηση (cascade delete) και η διαδοχική ενηµέρωση (cascade update.) Μερικά DBMSs υποστηρίζουν άµεσα τα παραπάνω (Access) Άλλα DBMSs απαιτούναπότονχρήστηναγράψει triggers (διαδικασίες) για την υποστήριξη αυτών (SQL Server) Περιορισµοί Στηλών και Πεδίων υποστηρίζονται µερικώς (ενίοτε και από strong-typing ή άλλους ισχυρούς µηχανισµούς) Περιορισµοί που ορίζονται από τον Χρήστη έχουν περιληφθεί σε νεώτερες εκδόσεις της τυποποίησης της SQL (SQL-92) µε ASSERTIONS (ειδικοί κανόνες) Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.88

Περιορισµοί Πεδίου Τιµών Γενικά οι περιορισµοί ακεραιότητας προφυλάγουν τα δεδοµένα από καταστροφή που προέρχεται από ατυχή χρήση. Τα Domain constraints είναι η πλέον απλή µορφή περιορισµών ακεραιότητας Η SQL υποστηρίζει πολλούς τύπους πεδίων τιµών: char(n). varchar(n). int. smallint. numeric(p,d). real, double precision. float(n). Null values επιτρέπονται.. Με το not null απαγορεύονται Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.89

date. time. Τύποι Πεδίου Τιµών (συνέχεια)» Π.χ. date 2001-7-27» Π.χ. time 09:00:30 time 09:00:30.75 timestamp: η ηµεροµηνία και η χρονική στιγµή» Π.χ.. timestamp 2001-7-27 09:00:30.75 Interval: χρονική περίοδος» Π.χ. Interval 1 day» Χρονικές πράξεις επιτρέπονται Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.90

Ορισµός νέων τύπων πεδίου τιµών Το create domain στη SQL-92 ορίζει νέο τύπο (από άλλους υπάρχοντες) create domain person-name char(20) not null create domain Dollars numeric(12, 2) create domain Euros numeric(12,2) εν µπορούµε να συγκρίνουµε µια τιµή τύπου Dollars µε µιατιµήτύπου Euros. However, we can convert type as below (cast r.a as Pounds) (Should also multiply by the dollar-to-pound conversion-rate) Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.91

Περιορισµοί Πεδίου Τιµών (συνέχεια) Το check clause στην SQL-92 επιτρέπει επιπλέον περιορισµούς: ιαβεβαίωση ότι ένα πεδίο τιµών για ΩΡΟΜΙΣΘΙΑ επιτρέπει µόνο τιµές που είναι µεγαλύτερες από κάποιο ελάχιστο. create domain hourly-wage numeric(5,2) constraint value-test check(value > = 4.00) Το constraint value-test είναι προαιρετικό, αλλά χρήσιµο για να δείχνειπουενδεχοµένωςγίνεταιµιαπαραβίαση. Μπορεί να είναι αρκετά σύνθετο create domain AccountType char(10) constraint account-type-test check (value in ( Checking, Saving )) check (branch-name in (select branch-name from branch)) Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.92

Αναφορική Ακεραιότητα στην SQL Κύρια / Υποψήφιακλειδιάκαιαναφορικήακεραιότηταορίζονταιστην SQL µε την εντολή create table: Το primary key clause για γνωρίσµατα του κύριου κλειδιού. Tο unique key clause για γνωρίσµατα του υποψήφιου κλειδιού. Το foreign key clause για γνωρίσµατα του εξωτερικού κλειδιού και το όνοµα της σχέσης που αναφέρεται από το εξωτερικό κλειδί Ένα εξωτερικό κλειδί αναφέρεται στο κύριο κλειδί της αναφερόµενης σχέσης foreign key (account-number) references account Είναι δυνατή και η σύντµηση account-number char (10) references account Επίσης, µπορεί να γραφεί σε πλήρη µορφή (ρητή αναφορά σε γνώρισµα) Πάντα αναφέρεται σε κύριο ή υποψήφιο κλειδί foreign key (account-number) references account(account-number) Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.93

Αναφορική Ακεραιότητα στην SQL Παράδειγµα create table customer (customer-name char(20), customer-street char(30), customer-city char(30), primary key (customer-name)) create table branch (branch-name char(15), branch-city char(30), assets integer, primary key (branch-name)) create table account (account-number char(10), branch-name char(15), balance integer, primary key (account-number), foreign key (branch-name) references branch) create table depositor (customer-name char(20), account-number char(10), primary key (customer-name, account-number), foreign key (account-number) references account, foreign key (customer-name) references customer Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.94

Assertions --Παραδείγµατα Κάθε Υπάλληλος είναι είτε Άνδρας ή Γυναίκα CREATE ASSERTION gender CHECK Sex= m OR Sex= f Οι Μισθοί πρέπει να ξεπερνούν το 1,000,000 CREATE ASSERTION salary_bound CHECK Salary > 1000000 Αν κάποιος επιχειρήσει την παρακάτω εισαγωγή: insert into EMPLOYEE (select Name= tom,.., Salary=1200000, ) η εισαγωγή ΑΛΛΑΖΕΙ εµπεδώνοντας τον κανόνα assert σε: insert into EMPLOYEE (select Name= tom,.., Salary=12000.. where 1200000 > 1000000 ) Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.95

Assertions Παραδείγµατα (2) The sum of all loan amounts for each branch must be less than the sum of all account balances at the branch. create assertion sum-constraint check (not exists (select * from branch where (select sum(amount) from loan where loan.branch-name = branch.branch-name) >= (select sum(amount) from account where loan.branch-name = branch.branch-name))) Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.96

Triggers To trigger είναι µια εντολή που εκτελείται αυτόµατα από το σύστηµα σαν παρενέργεια (εκπυρσοκρότηση) µιας τροποποίησης της Βάσης εδοµένων Για να σχεδιαστεί ένας µηχανισµός trigger χρειάζεται να Γραφούνοισυνθήκεςεκτέλεσηςτου trigger Γραφούν οι πράξεις που γίνονται όταν το trigger εκτελείται. Τα Triggers επίσηµαορίστηκανµετηντυποποίησητης SQL το 1999, αλλά προϋπήρχαν και σε παλαιότερα DBMS Τα Triggers ΕΝ ΣΥΝΙΣΤΑΝΤΑΙ (εκτός αν είναι απολύτως απαραίτητα) διότι µπορεί να έχουν αναπάντεχα αποτελέσµατα όταν δεν έχουν σχεδιαστεί καλά Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.97

Παράδειγµα Trigger στην SQL:1999 create trigger overdraft-trigger after update on account referencing new row as nrow for each row when nrow.balance < 0 begin atomic insert into borrower (select customer-name, account-number from depositor where nrow.account-number = depositor.account-number); insert into loan values (n.row.account-number, nrow.branch-name, nrow.balance); update account set balance = 0 where account.account-number = nrow.account-number end Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.98

Χρήση των triggers για Εξωτερικές πράξεις Π.χ., κάνε νέα παραγγελία για ένα προϊόν του οποίου η ποσότητα στηναποθήκηλιγοστεύειµετάαπόµιατροποποίηση. create trigger reorder-trigger after update of amount on inventory referencing old row as orow, new row as nrow for each row when nrow.level < = (select level from minlevel where minlevel.item = orow.item) and orow.level > (select level from minlevel where minlevel.item = orow.item) begin insert into orders (select item, amount from reorder where reorder.item = orow.item) end Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.99

Triggers στην MS-SQLServer -Συντακτικό create trigger overdraft-trigger on account for update as if inserted.balance < 0 begin insert into borrower (select customer-name,account-number from depositor, inserted where inserted.account-number = depositor.account-number) insert into loan values (inserted.account-number, inserted.branch-name, inserted.balance) update account set balance = 0 from account, inserted where account.account-number = inserted.account-number end Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.100

ηµιουργία Ευρετηρίων στην SQL Στις περισσότερες περιπτώσεις µια Σχέση Βάσης αντιστοιχεί σε αποθηκευµένο αρχείο Η εντολή CREATE INDEX χρησιµοποιείται για τον προσδιορισµό ευρετηρίου (index) που έχει ονοµασία (index name) CREATE INDEX LN_INDEX on EMPLOYEE (Name); Για τον προσδιορισµό ενός περιορισµού ευρετηρίου κλειδιού στο γνώρισµα (γνωρίσµατα) κλειδιού χρησιµοποιείται το UNIQUE CREATE UNIQUE INDEX S_IND on EMPLOYEE (SSN); Γιατονπροσδιορισµόενός ευρετηρίουσυστάδων (clustering index) χρησιµοποιείται το CLUSTER CREATE INDEX D_IN on EMPLOYEE(DNumber) CLUSTER; Στα περισσότερα DBMS, κάποια παραλλαγή των B+-tree χρησιµοποιείται για την υλοποίηση ευρετηρίων Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.101

Σχεσιακές Όψεις και SQL Η αρχιτεκτονική 3-επιπέδων στα DBMS, έχει σαν αποτέλεσµα διαφορετικοί χρήστες να βλέπουν διαφορετικά εξωτερικά σχήµατα (όψεις) - αυτό επιτυγχάνεται στο σχεσιακό µοντέλο µε την έννοια του VIEW External Schema 1 External Schema 2... External Schema N RELATIONAL VIEWS Conceptual Schema RELATIONAL DATABASE SCHEMA (RELATIONS) Internal Schema Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.102

Σχεσιακές Όψεις Ορισµός (1) ΜιαΟΨΗ (VIEW) είναιµιασχέσηπου ΕΝείναιστοιχείοτου Εννοιολογικού Σχήµατος (οι Σχέσεις Βάσης)) αλλά είναι προσβάσιµη ως µια ιδεατή (virtual) σχέση ΟχρήστηςδενµπορείναξεχωρίσειανµιαΣχέσηείναιΣχέση Βάσης ήείναιόψη Η Όψη ΕΝ αποθηκεύεται (materialized) στην Βάση εδοµένων ΤαπεριεχόµενατηςΌψηςπροσδιορίζονταιαπότον (αποθηκευµένο) ορισµό της σαν µια συνάρτηση των περιεχοµένων της ΜιαΌψηορίζεταισεΣχέσειςΒάσηςήσεάλλεςΌψειςµεκάποιο query Πράξεις (queries, ενηµερώσεις) σε Όψεις µεταφράζονται σε Πράξεις στις ορίζουσες (την Όψη) Σχέσεις Βάσης ΕΝ υπάρχουν περιορισµοί στα Queries σε Όψεις Ελάχιστες ενηµερώσεις σε Όψεις επιτρέπονται Μια Όψη αλλάζει δυναµικά µε τη Βάση δεδοµένων Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.103

Σχεσιακές Όψεις Ορισµός (2) CREATE VIEW table_name [ ( view_column_list ) ] AS query_expression [ WITH CHECK OPTION ] V1: Εργαζόµενοι σε Έργα CREATE VIEW PROJWORKER(EName, Address, Project) AS select Name, Address, PName from EMPLOYEE, PROJECT, WORKS_ON where PROJECT.PNumber = WORKS_ON.PNumber and WORKS_ON.SSN=EMPLOYEE.SSN ; Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.104

Σχεσιακές Όψεις - Παραδείγµατα Όταν το view_column_list λείπει, τα γνωρίσµατα της ΟΨΗΣ κληρονοµούνται από τα Γνωρίσµατα της ορίζουσας Σχέσης V2: Υπάλληλοι µε υψηλούς µισθούς CREATE VIEW BIGSHARKS AS select * from EMPLOYEE where Salary > 50000 and BirthDate > 31.12.65; Οχρήστηςδύναταινακάνειερωτήσειςάµεσασεαυτήτηνέα Σχέση που λέγεται BIGSHARKS, και η οποία έχει ακριβώς τα ίδια Γνωρίσµατα µε τη Σχέση EMPLOYEE Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.105

Σχεσιακές Όψεις Παραδείγµατα (2) Μια Όψη είναι δυνατόν να έχει διαφορετικά γνωρίσµατα (νέα) από το Εννοιολογικό Σχήµα V3: Πληροφορίες για Τµήµατα (µέσος µισθός, κλπ.) CREATE VIEW DEPTINFO (Name, NoOfEmpl, AvgSalary) AS select DName, COUNT(*), AVG(Salary) from DEPARTMENT d, EMPLOYEE e where d.dnumber = e.dnumber group by DName ; Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.106

Σχεσιακές Όψεις Παραδείγµατα (3) V4: Βρεςτοναριθµότωνυπαλλήλωνκαιτονµέσοµισθό (παρουσίασε και το όνοµα τµήµατος) select * from where DEPTINFO Name = research V5: Αύξησεκατά 1 τοναριθµότωνυπαλλήλωνστοτµήµα Έρευνας Αυτή η ενηµέρωση ΕΝ επιτρέπεται (Γιατί?) Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.107

Σχεσιακές Όψεις - Εκτέλεση Όπως ήδη ειπώθηκε, το σύστηµα µεταφράζει προσβάσεις (ενηµερώσεις) σε Όψεις ΣΕ προσβάσεις (ενηµερώσεις) σε Σχέσεις Βάσης. ΠΩΣ ΜΠΟΡΕΙ ΝΑ ΓΙΝΕΙ ΑΥΤΌ? ΧΑΖΗ Προσπάθεια 1: ηµιούργησε (Materialize) την Όψη (προσωρινός πίνακας) και εκτέλεσε το query σε αυτήν. ΧΑΖΗ Προσπάθεια 2: Κράτα συνεχώς ενήµερη την Όψη -- δηλαδή, κράτησέ την δηµιουργηµένη (ονοµάζεται, snapshot) και όποτε σχετικές ενηµερώσεις γίνονται στις Σχέσεις Βάσης, τότε πέρασε αυτές και στην Όψη. Εκτέλεσε το query στο snapshot. ΣΩΣΤΗ Προσπάθεια: Άλλαξε το query αντικαθιστώντας την Όψηµετο query σεσχέσειςβάσηςπουτηνορίζει, καιεκτέλεσε το query σεαυτέςτιςσχέσειςβάσης. Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.108

Σχεσιακές Όψεις Παραδείγµατα Εκτέλεσης Για παράδειγµα, το query στην Όψη BIGSHARKS: select Name, Address from BIGSHARKS where DNumber = 5 Τροποποιείται ανάλογα και το παρακάτω query εκτελείται: select Name, Address from EMPLOYEE where Salary > 50000 and BirthDate > 31.12.65 and DNumber = 5 Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.109

Σχεσιακές Όψεις - Ενηµερώσεις Γενικά, υπάρχουν σοβαροί περιορισµοί στις ενηµερώσεις Μια ενηµέρωση Όψης είναι αναµφίβολη αν µια µοναδική ενηµέρωση στις Σχέσεις Βάσης µπορεί να εκπληρώσει το ζητούµενο αποτέλεσµα στην Όψη ΠΑΡΑΤΗΡΗΣΕΙΣ: Μια όψη που ορίζεται σε µια (ακριβώς) Σχέση Βάσης είναι ενηµερώσιµη αν τα γνωρίσµατα της Όψης περιέχουν το Κύριο Κλειδί Όψεις που ορίζονται σε πολλαπλές Όψεις είναι γενικά µηενηµερώσιµες Όψεις που περιέχουν Συναθροιστικές Συναρτήσεις είναι σίγουρα µη-ενηµερώσιµες Οι Ενηµερώσεις των Όψεων παραµένουν ένα ενδιαφέρον ανοικτό ερευνητικό θέµα / πρόβληµα (π.χ., Data Warehouses) Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.110

Σχεσιακές Όψεις - Σχόλια To WITH CHECK OPTION χρησιµοποιείταισεενηµερώσιµες όψεις για να αντιµετωπίσει το πρόβληµα των γραµµών που εξαφανίζονται (vanishing rows) Για παράδειγµα, θεωρήστε την Όψη: CREATE VIEW V AS select * from R where A = X Έστω η ενηµέρωση: UPDATE V set A = Y Η ενηµέρωση θα προχωρήσει κανονικά, αλλά οι πλειάδες που ήταν πριν προσβάσιµες στην V θα εξαφανιστούν! (προφανώς, δεν θα ικανοποιούν πλέον την συνθήκη της WHERE-πρότασης) Οι Όψεις χρησιµοποιούνται (επίσης) ως µηχανισµοί ασφάλειας και δικαιοδοσίας Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.111

Εµφύτευση της SQL σε Γλώσσα Προγραµµατισµού Εντολές DML συχνά εµφυτεύονται σε προγράµµατα γλώσσας προγραµµατισµού (host) Η εµφυτευµένη SQL εντολή διακρίνεται από εντολές της Γλώσσας Προγραµµατισµού µε ειδικό τρόπο, π.χ. µε πρόθεµα Υπάρχουν δυο τρόποι εµφύτευσης: 1.- Επέκταση της Γλώσσας Προγραµµατισµού (αλλαγή του Compiler) Ενδεικτικά, RIGEL, MODULA-R, Gemstone, Orion, κλπ.) Ονοµάζονται database programming languages 2.- Χρήση ενός προ-επεξεργαστή της Γλώσσας για τις εντολές DML Ο προ-επεξεργαστής αντικαθιστά τις εντολές DML µε κλήσεις στην host γλώσσα, οι οποίες εκτελούνται Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.112

Εµφύτευση της SQL SQL εντολέςκαλούνταιµέσααπόέναπρόγραµµαµιας host γλώσσας (π.χ., C ή COBOL) Οιεντολέςτης SQL µπορούννααναφέρονταισε host µεταβλητές Πρέπει να περιλαµβάνουν µια εντολή για σύνδεσµο µε την σωστή βάση. Οι SQL Σχέσεις είναι σύνολα εγγραφών, χωρίς προκαθορισµένο (a priori) όριο στον αριθµό των εγγραφών. εν υπάρχουν τέτοιεςδοµέςστην C! Για να αντιµετωπίσει αυτή την δυσκολία η SQL υποστηρίζει ένα µηχανισµό που λέγεται cursor Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.113

Cursors Οι δυνατότητες που προσφέρονται για τον CURSOR είναι ηλώνεται για µια σχέση ή ένα query που είναι γεννήτορας µιας σχέσης. Μπορεί να ανοίξει (open) έναν cursor, και διαδοχικά να φέρει (fetch) πλειάδες, µετά να µετακινήσει (move) τον cursor, µέχρις ότου όλες οι πλειάδες ανακληθούν Μπορείµετηχρήσητου ORDER BYναελέγχειτησειρά ανάκλησης των πλειάδων»πεδίαστην ORDER BY πρότασηπρέπεινα παρουσιάζονται και στην SELECT πρόταση. Μπορεί να διαγράφει / τροποποιεί πλειάδες που δείχνονται από τον cursor Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.114

Ο Cursor που παίρνει ονόµατα ναυτικών που έχουν κρατήσει ένα κόκκινο σκάφος, σε σε αλφαβητική σειρά DECLARE sinfo CURSOR FOR SELECT S.sname FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color= red ORDER BY S.sname; FETCH 5 IN sinfo; εν επιτρέπεται να αντικατασταθεί S.sname από το, ας πούµε, S.sidστην ORDER BY πρόταση! (Γιατί?) Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.115

Εµφύτευσητης SQL σε C --Παράδειγµα char SQLSTATE[6]; EXEC SQL BEGIN DECLARE SECTION char c_nονοµα[20]; short c_minrating; float c_age; EXEC SQL END DECLARE SECTION c_minrating = random(); EXEC SQL DECLARE sinfo CURSOR FOR SELECT S.Ονοµα, S.age FROM ΝΑΥΤΙΚΟΣ S WHERE S.rating > :c_minrating ORDER BY S.Ονοµα; do { EXEC SQL FETCH sinfo INTO :c_ονοµα, :c_age; printf( %s is %d years old\n, c_nονοµα, c_age); } while (SQLSTATE!= 02000 ); EXEC SQL CLOSE sinfo; Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.116

υναµική SQL Επιτρέπεισεπρογράµµατανακατασκευάζουνκαιναστέλνουν SQL επερωτήσεις σε run time Παράδειγµα χρήσης δυναµικής SQL από ένα πρόγραµµα C char * sqlprog = update account set balance = balance * 1.05 where account-number =? EXEC SQL prepare dynprog from :sqlprog; char account [10] = A-101 ; EXEC SQL execute dynprog using :account; Το δυναµικό SQL πρόγραµµα περιέχει ένα?, που θα συµπληρωθεί από τον χρήστη όταν το SQL πρόγραµµα εκτελείται Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.117

APIΒάσης εδοµένων: Εναλλακτικόςτης Εµφύτευσης τρόπος πρόσβασης Αντί να αλλάζει ο compiler, προστίθεται µια βιβλιοθήκη µε Κλήσεις στη Βάση εδοµένων (API) Application Programming Interface Ειδικές ιαδικασίες / Αντικείµενα Περνά τις SQL εντολές σαν character strings από τη γλώσσα και παρουσιάζει τα αποτελέσµατα µε φιλικό (για τη γλώσσα) τρόπο Το ODBC της Microsoft έχει γίνει το C/C++ standard στα Windows Το JDBC της SUN είναιτοανάλογογιατη Java Ανεξάρτητα του DBMS» Ένας οδηγός παγιδεύει τις κλήσεις και τις µεταφράζει σε κώδικα για το DBMS» ΗΒάσηµπορείναείναιστο ίκτυο Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.118

SQL API στη Java (JDBC) Connection con = // connect DriverManager.getConnection(url, login", pass"); Statement stmt = con.createstatement(); // set up stmt String query = "SELECT COF_NAME, PRICE FROM COFFEES"; ResultSet rs = stmt.executequery(query); try { // handle exceptions // loop through result tuples while (rs.next()) { String s = rs.getstring("cof_name"); Float n = rs.getfloat("price"); System.out.println(s + " " + n); } } catch(sqlexception ex) { System.out.println(ex.getMessage () + ex.getsqlstate () + ex.geterrorcode ()); } Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.119

Μειονεκτήµατατων Host Programming Languages Ανάµιξη των ιαδικαστικών και ηλωτικών γλωσσών (το γνωστό language mismatchπρόβληµα) ιαφορετικοί προ-επεξεργαστές απαιτούνται για διαφορετικές γλώσσες Οι Σχέσεις δεν αποτελούν πολίτες Α κατηγορίας στην γλώσσα (π.χ., µια Σχέση δεν περνιέται σαν παράµετρος σε διαδικασία) Η HOST γλώσσα πιθανόν να µην υποστηρίζει χρήσιµες δοµές (π.χ., η FORTRAN δεν υποστηρίζει εγγραφές) Οι database programming languagesκέρδισανπολύέδαφος, ειδικά σε object-oriented DBMSs Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.120

Χρήση της SQL SQL sessions O Πελάτης (client) συνδέεται σε ένα SQL Εξυπηρετητή (server), ξεκινώντας ένα session Εκτελεί µια σειρά από εντολες Αποσυνδέει το session Μπορεί να κάνει commit ή rollback της εργασίας που εκτέλεσε στο session Έναπεριβάλλον SQL έχειπολλέςσυνιστώσες, περιλαµβανοµένου ενός µοναδικού αριθµού χρήσης, και ενός διαγράµµατος (schema), που ορίζει ποιο από τα πολλά διαγράµµατα ένα session χρησιµοποιεί Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.121

Άλλαχαρακτηριστικά: ιαγράµµατα, Κατάλογοι και Περιβάλλοντα Ιεραρχία 3-επιπέδωνστηνονοµασίαΣχέσεων. Η Β περιέχει πολλά catalogs Κάθε κατάλογος µπορεί να περιέχει πολλά διαγράµµατα (schemas) Τα SQL αντικείµενα (Σχέσεις, Όψεις) περιλαµβάνονται σε ένα schema Π.χ. catalog5.company-schema.employee Κάθε χρήστης έχει Default κατάλογο και ιάγραµµα, και ο συνδυασµός αυτός είναι µοναδικός για το χρήστη Πολλαπλές εκδόσεις µιας εφαρµογής µπορούν να εκτελούνται σε διαφορετικά ιαγράµµατα Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.122

Μειονεκτήµατα της SQL Η SQL δενυποστηρίζει strong typing, inheritance, etc. Οι SQL πίνακες ΕΝ ΕΙΝΑΙ ΣΧΕΣΕΙΣ (επιτρέπουν διπλές πλειάδες) Οι SQL πίνακες δεν εµφωλιάζονται (δεν αποτελούν τιµές για άλλους πίνακες) Η SQL δενυποστηρίζειπολλέςπράξεις, όπως: generalized restriction, division, forall Η SQL δεν υποστηρίζει 3-V logic (Λογική 3 τιµών αληθείας) Η SQL δεν υποστηρίζει µεταβατικούς περιορισµούς Η SQL δενυποστηρίζεισυναρτησιακέςεξαρτήσεις (functional dependencies) Η SQL δεν υποστηρίζει περιορισµούς ακεραιότητας σε Όψεις ΠΑΡΟΛΑ ΑΥΤΑ, η SQL είναι η STANDARD ΓΛΩΣΣΑ Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.123

Query-by-Example (QBE) Μια Γλώσσα για ερωταποκρίσεις που αναπτύχθηκε στην IBM (από τον Moshe Zloof) και παρουσιάζεται σε ένα προϊόν (QMF) (που είναι εναλλακτικός τρόπος διεπαφής για το DB2) Ευκολότερη από την SQL για τον µέσο χρήστη (ΟΠΤΙΚΗ και ΙΣ ΙΑΣΤΑΤΗ) ΚΕΝΤΡΙΚΗ Ι ΕΑ: Το Σύστηµα παρέχει στον χρήστη τη δυνατότητα να δει το περίγραµµα των Σχέσεων στη Βάση και ο Χρήστης συµπληρώνει τους πίνακες δίνοντας παραδείγµατα για το πώς θέλει να είναι η απάντηση QBE1: ΒρεςταονόµατατωνΥπαλλήλωνστοΤµήµα 4 EMPLOYEE SSN Name BDate Address Sex Salary SupSSN DNumber P. x 4 Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.124

QBE ΣΥΝΟΨΗ Οι Αρχές της Γλώσσας Ο χρήστης δεν απαιτείται να θυµάται τα ονόµατα των γνωρισµάτων και των σχέσεων Στην διατύπωση της ερωταπόκρισης, δεν απαιτείται να τηρούνται ανελαστικοί κανόνες Στηρίζεται στον σχεσιακό λογισµό πλειάδων (µεταβλητές είναι οι στήλες) Σχεσιακά πλήρης διατύπωση, και κάτι παραπάνω, µια και εκφράζεται και transitive closure Πως Λειτουργεί Σύµβολα µε _ να προηγείται, είναι ΜΕΤΑΒΛΗΤΕΣ Σύµβολα χωρίς _ να προηγείται είναι ΣΤΑΘΕΡΕΣ ΤΙΜΕΣ (υποδηλώνουν µια συνθήκη για επιλογή - equality selection-condition) Το πρόσηµο P. χρησιµοποιείται για να υποδειχθεί ποια γνωρίσµατα θα τυπωθούν (υποδηλώνει µια προβολή - projection) Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.125

QBE Σύνοψη Ηδιαδικασία ιαδικασία ερωταπόκρισης Πρώτα, ο χρήστης διαλέγει τις σχέσεις (πίνακες) που χρειάζεται για το query Παρουσιάζονται τα περιγράµµατα των πινάκων που διαλέχτηκαν Ο χρήστης «πηγαίνει» στις κατάλληλες στήλες (µε ειδικά πλήκτρα) Τιµές-παραδείγµατα (µεταβλητές), σταθερές, κλπ., δακτυλογραφούνται Άλλοι συγκριτικοί τελεστές (πέραν της ισότητας που είναι αυτόµατη για σταθερές τιµές) πρέπει να δακτυλογραφηθούν (όπως, >, <, κλπ.) πιοπολύπλοκεςσυνθήκεςµπαίνουνσεένακουτί-συνθηκών (condition box) Συνθήκες στην ίδια σειρά υποδηλώνουν το Boolean AND Συνθήκες σε διαφορετικές σειρές υποδηλώνουν το Boolean OR Ηάρνηση (negation - Boolean NOT) προσδιορίζεταιµετοσύµβολο Οι Συνενώσεις (JOINS) εκφράζονται µε τη χρήση κοινών παραδειγµατικών τιµών σε πολλαπλούς πίνακες Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.126

QBE Παραδείγµατα (1) QBE2: Βρες τα ονόµατα των Υπαλλήλων που εργάζονται σε ένα Τµήµα που έχει µάνατζερ διαφορετικό από αυτόν µε αριθµό 3334 EMPLOYEE SSN Name BDate Address Sex Salary SupSSN DNumber P. x no DEPARTMENT DNumber DName MgrSSN MgrSD no 3334 Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.127

QBE Παραδείγµατα (2) QBE3: Βρες τα ονόµατα των Υπαλλήλων που έχουν µισθό µεγαλύτερο των 300,000 και εργάζονται στο Τµήµα 5 SSN Name BDate Address Sex Salary SupSSN DNumber P. x >300000 5 QBE4: Βρες τα ονόµατα των Υπαλλήλων που έχουν µισθό µεγαλύτερο των 300,000 ή εργάζονται στο Τµήµα 5 SSN Name BDate Address Sex Salary SupSSN DNumber P. x 5 P. y >300000 Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.128

QBE Παραδείγµατα (3) QBE5: Βρες ονόµατα και διευθύνσεις Υπαλλήλων του Τµήµατος 4 που κερδίζουν περισσότερα από κάποιον που εργάζεται στο Τµήµα 5 EMPLOYEE SSN Name BDate Address Sex Salary SupSSN DNumber P. tom P. kifis 10 4 20 5 CONDITION BOX 10 > 20 Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.129

QBE Παραδείγµατα (4) QBE6: Βρες τα ονόµατα των Υπαλλήλων που έχουν µισθό µεγαλύτερο από τον µισθό του µάνατζερ του Τµήµατός των EMPLOYEE SSN Name BDate Address Sex Salary SupSSN DNumber P. tom 10 6 4444 15 DEPARTMENT DNumber DName MgrSSN MgrSD CONDITION BOX 6 4444 10> 15 Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.130

QBE Παραδείγµατα (5) QBE7: Βρες όλους τους Εξαρτώµενους για Υπαλλήλους που έχουν ένα Εξαρτώµενο γεννηθέντα το 1972 ενώ δεν έχουν κανένα Εξαρτώµενο που γεννήθηκε µετά το 1975 DEPENDENT ESSN Name Sex BDate Relation P. 44 44 1972 44 <1975 Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.131

QBE Παραδείγµατα (6) QBE8: Βρες το άθροισµα των µισθών όλων τον Υπαλλήλων EMPLOYEE SSN Name BDate Address Sex Salary SupSSN DNumber P.SUM.ALL. x QBE9: Εισαγωγή ενός νέου Υπαλλήλου EMPLOYEE SSN Name BDate Address Sex Salary SupSSN DNumber I. 6669 thomas 8.2.65 ekali m 60000 9876 4 Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.132

QBE Παραδείγµατα (7) QBE10: ώσε αύξηση µισθού 15% για όλους τους Υπαλλήλους του Τµήµατος 5 EMPLOYEE SSN Name BDate Address Sex Salary SupSSN DNumber 44 s 5 U. 44 s* 1.15 Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.133

Μια µατιά στην MS Access Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.134

Κλείνοντας Η QBE είναιµιακοµψήκαιφιλικήπροςτοχρήστηγλώσσα που βασίζεται στο σχεσιακό λογισµό πεδίου Είναι ιδιαίτερα εκφραστική (σχεσιακά πλήρης, αν και οι ενηµερώσεις ληφθούν υπόψη). Απλές ερωταποκρίσεις είναι εξαιρετικά εύκολο να εκφραστούν στην QBE, µε ένα ελάχιστο συντακτικό που πρέπει κανείς να θυµάται Η QBE Έχει επηρεάσει σε µεγάλο βαθµό τις γραφικές διευκολύνσεις για queries που σήµερα προσφέρονται σε πολλάπροϊόντα, περιλαµβανοµένηςκαιτης Microsoft Access. Ι.Β. ΣχεσιακέςΓλώσσες Εµφύτευση / DDL Σελίδα 2.135