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

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

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

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

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

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

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

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

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

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

SQL. Πριν μια σύντομη επανάληψη της σχεσιακής άλγεβρας. H SQL έχει διάφορα τμήματα: Γλώσσα Ορισμού εδομένων (ΓΟ ) Γλώσσα Χειρισμού εδομένων (ΓΧ )

Η Γλώσσα SQL. SQL αποτελείται από: DDL (Data Definition Language) - ορισμός, δημιουργία, τροποποίηση και διαγραφή σχήματος.

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Πως θα υλοποιήσουμε (προγραμματίσουμε) την εφαρμογή μας χρησιμοποιώντας ένα σχεσιακό Σ Β :

Η Γλώσσα SQL. Βάσεις εδοµένων Ευαγγελία Πιτουρά 1

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

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

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

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Πως θα υλοποιήσουμε (προγραμματίσουμε) την εφαρμογή μας χρησιμοποιώντας ένα σχεσιακό Σ Β :

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

Η Γλώσσα Βάσεων εδοµένων SQL

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

Σχεσιακή Άλγεβρα. Εισαγωγή. Εισαγωγή. Εισαγωγή. Παράδειγμα. Εισαγωγή. Ταινία Τίτλος Έτος Διάρκεια Είδος. Παίζει Όνομα-Ηθοποιού Τίτλος Έτος.

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

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

Σχεδιασμός μιας Β : Βήματα

Το Σχεσιακό Μοντέλο. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Σχεσιακή Άλγεβρα. Βάσεις Δεδομένων : Σχεσιακή Άλγεβρα 1

Σχεσιακή Άλγεβρα Σχεδιασμός Βάσεων Δεδομένων

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

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα

DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT

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

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

Λογικός Σχεδιασμός Σχεσιακών Σχημάτων: Αποσύνθεση

Σχεσιακή Άλγεβρα. Προγράμματα που απαντούν σε επερωτήσεις για τον τρέχον στιγμιότυπο της βάσης δεδομένων (querying)

SQL. Πριν µια σύντοµη επανάληψη της σχεσιακής άλγεβρας. H SQL έχει διάφορα τµήµατα: Γλώσσα Χειρισµού εδοµένων (ΓΧ )

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

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

Σχεσιακό Μοντέλο. Εισαγωγή. Βάσεις εδοµένων : Σχεσιακό Μοντέλο 1


Εισαγωγή. Σχεδιασµός µιας Β

Το Σχεσιακό Μοντέλο. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Σχεσιακή Άλγεβρα. Σχεσιακή Άλγεβρα

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πράξεις στο Σχεσιακό Μοντέλο

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

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

Σχεσιακή Άλγεβρα. Προγράµµατα που απαντούν σε ερωτήσεις για τον παρόν στιγµιότυπο της βάσης δεδοµένων (quering)

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

Συναρτησιακές Εξαρτήσεις

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

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

Σχεδιασμός μιας εφαρμογής ΒΔ: Βήματα. 1. Συλλογή και Ανάλυση Απαιτήσεων(requirement analysis)

SQL Data Manipulation Language

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

Τελεστής Προβολής - Παράδειγμα. Π Πόλη, Εξάμηνο (Φοιτητές)

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

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

Σχεσιακή Άλγεβρα. Προγράµµατα που απαντούν σε επερωτήσεις για τον παρόν στιγµιότυπο της βάσης δεδοµένων (querying)

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

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

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

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

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

καλών σχεσιακών σχημάτων

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

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

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

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

Βάσεις Δεδομένων : Λογικός Σχεδιασμός 1. καλών σχεσιακών σχημάτων. Λογικός Σχεδιασμός Σχεσιακών Σχημάτων. Γενικές Κατευθύνσεις.

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

καλών σχεσιακών σχημάτων

Κανονικοποίηση Σχήµατος

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

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

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

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

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

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

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

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

Βάσεις Δεδομένων : Σχεσιακό Μοντέλο 1. Ένας απλός τρόπος αναπαράστασης δεδομένων: ένας διδιάστατος πίνακας που λέγεται σχέση.

Lecture 21: Functional Dependencies and Normalization

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

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

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

Βάσεις Περιβαλλοντικών Δεδομένων

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

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

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

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

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

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

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

Βάσεις εδοµένων Ευαγγελία Πιτουρά 2. Υλοποίηση/προγραμματισμός εφαρμογής χρησιμοποιώντας ένα σχεσιακό ΣΔΒΔ: Γλώσσα Ορισμού(του σχήματος)

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

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

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

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

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

Transcript:

Η SQL ως γλώσσα τροποποίησης Δεδομένων Τροποποίηση Βάσης Δεδομένων: Γλώσσα Χειρισμού Δεδομένων (ΓXΔ) Τροποποιήσεις 1. Διαγραφή 2. Εισαγωγή 3. Ενημέρωση Οι εντολές αυτές ΤΡΟΠΟΠΟΙΟΥΝ το στιγμιότυπο της βάσης δεδομένων (δηλαδή, το περιεχόμενο των πινάκων)

Εισαγωγή Δεδομένων σε Πίνακα: INSERT Για να εισάγουμε δεδομένα σε μια σχέση: (α) Αν έχουμε συγκεκριμένες τιμές που θα εισαχθούν σε μια γραμμή τις προσδιορίζουμε στη values: insert into R (A 1,, A n ) values (v 1,, v n ) Όπου R o πίνακας στον οποίο θα εισάγουμε δεδομένα και Α i τα πεδία του. (β) Αν θέλουμε να εισάγουμε δεδομένα από άλλο πίνακα γράφουμε μια ερώτηση επιλογής select που το αποτέλεσμα της εισάγεται στον R. insert into R(A 1,, A n ) select-from-where 2

Εισαγωγή Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού) Εισαγωγή τιμών (εισάγεται 1 γραμμή): insert into Ταινία values ( The Big Blue, 1988, 132, Έγχρωμη ) Αν αλλάξει η σειρά στο values, πρέπει να προσδιορίσουμε τη σειρά στο insert into, π.χ.,: insert into Ταινία (Τίτλος, Είδος, Διάρκεια, Έτος) values ( The Big Blue, Έγχρωμη, 132, 1988) 3

Εισαγωγή τιμών: Παράδειγμα Λογαριασμός Όνομα_Υποκαταστήματος Αριθμός_Λογαριασμού Ποσό Παράδειγμα για το (α) insert into Λογαριασμός values ('Ψηλά-Αλώνια', 'A--9732, 1200) Όταν με οποιαδήποτε σειρά, π.χ.,: insert into Λογαριασμός (Αριθμός_Λογαριασμού, Όνομα_Υποκαταστήματος, Ποσό) values ('A--9732', 'Ψηλά-Αλώνια', 1200) 4

εισαγωγή null τιμών Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Αν δε γνωρίζουμε την τιμή κάποιου γνωρίσματος (τη διάρκεια της ταινίας): insert into Ταινία values ( The Big Blue, 1988, null, Έγχρωμη ) Ή, ισοδύναμα: insert into Ταινία (Τίτλος, Έτος, Είδος) values ( The Big Blue, 1988, Έγχρωμη ) 5

Παράδειγμα Τράπεζα: Εισαγωγή Δάνειο Λογαριασμός Όνομα_Υποκαταστήματος Αριθμός_Δανείου Ποσό Όνομα_Υποκαταστήματος Αριθμός_Λογαριασμού Ποσό Παράδειγμα για το (β): Για κάθε πελάτη που έχει πάρει δάνειο από το υποκατάστημα Ψηλά Αλώνια προστίθεται ως δώρο ένας λογαριασμός των $200 insert into Λογαριασμός select Όνομα_Υποκαταστήματος, Αριθμός_Δανείου, 200 from Δάνειο where Όνομα_Υποκαταστήματος = 'Ψηλά Αλώνια' Πρέπει πρώτα να υπολογιστεί το select πλήρως και μετά να γίνει η εισαγωγή. 6

Διαγραφή Πλειάδων - DELETE Μπορούμε να σβήσουμε μόνο ολόκληρες πλειάδες και όχι συγκεκριμένα γνωρίσματα. delete from R where P Σβήνει όλες τις πλειάδες της R για τις οποίες ισχύει το P. Όταν λείπει το where σβήνονται όλες οι πλειάδες μιας σχέσης. 7

Διαγραφή (παραδείγματα) Παράδειγμα: διαγραφή της ταινίας 'The Big Blue' που γυρίστηκε το 1988 delete from Ταινία where Τίτλος = The Big Blue and Έτος = 1988 Το αποτέλεσμα εξαρτάται από το είδος περιορισμού αναφοράς που έχουμε ορίσει Αν δεν έχουμε ορίσει κάποια ειδική ενέργεια on delete πρέπει πρώτα να διαγράψουμε και τις εγγραφές του πίνακα Παίζει που σχετίζονται με την ταινία The Big Blue : delete from Παίζει where Τίτλος = The Big Blue and Έτος = 1988 8

Διαγραφή (παραδείγματα) Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού) Παραδείγματα (1) Διαγραφή του Ηθοποιού Buster Keaton delete from Ηθοποιός where Όνομα = Buster Keaton (2) Όλες τις ταινίες που έχουν γυριστεί πριν το 1950 delete from Ταινία where Έτος < 1950

Ταινία (Τίτλος, Παίζει(Όνομα, Τίτλος, Έτος) Έτος, Διάρκεια, Είδος) Διαγραφή Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού) Στο from μπαίνει μόνο ένας πίνακας (απ τον οποίο θέλουμε να διαγράψουμε εγγραφές), αλλά στη συνθήκη του where μπορεί να εμφανίζονται και άλλοι Σβήνονται «ολόκληρες» πλειάδες Αν υπάρχουν παραπάνω από μια πλειάδες που ικανοποιούν τη συνθήκη, δεν υπάρχει τρόπος να διακρίνουμε τις πλειάδες, δηλαδή να σβήσουμε κάποιες Πρώτα, υπολογίζεται η συνθήκη του where και μετά διαγράφονται οι πλειάδες που ικανοποιούν τη συνθήκη delete from Παίζει where Τίτλος, Έτος in (select Τίτλος, Έτος from Ταινία where Eίδος = 'Έγχρωμη') 10

Παραδείγματα Διαγραφή (παραδείγματα) Ταινία (Τίτλος, Έτος, Διάρκεια, Είδος) Παίζει(Όνομα, Τίτλος, Έτος) Ηθοποιός(Όνομα, Διεύθυνση, Έτος_Γέννησης, Σύζυγος_Ηθοποιού) Όλους τους ηθοποιούς που έχουν παίξει σε ασπρόμαυρες ταινίες delete from Ηθοποιός where Όνομα in (select Όνομα from Ταινία, Παίζει where Ταινία.Τίτλος = Παίζει.Τίτλος and Ταινία.Έτος = Παίζει.Έτος and Eίδος = 'ασπρόμαυρη') Σημειώνεται ότι η παραπάνω εντολή, αν εκτελεστεί μόνη της, παραβιάζει την αναφορική ακεραιότητα της βάσης. Για να μη γίνει αυτό, και να επιτραπεί η εντολή από το ΣΔΒΔ, θα γίνουν αυτόματα αλλαγές στον ενδιάμεσο πίνακα Παίζει. Οι σχετιζόμενες εγγραφές είτε θα διαγραφούν (αν έχει δηλωθεί για το ξένο κλειδί του (Όνομα) on delete cascade), είτε θα τεθούν στην τιμή null (δήλωση on delete set null)

Παράδειγμα Τράπεζα: Διαγραφή Λογαριασμός Υποκατάστημα Όνομα_Υποκαταστήματος Αριθμός_Λογαριασμού Ποσό Όνομα_Υποκαταστήματος Πόλη Σύνολο Όλους τους λογαριασμούς στα υποκαταστήματα της Πάτρας delete from Λογαριασμός where Όνομα-Υποκαταστήματος in (select Όνομα-Υποκαταστήματος from Υποκατάστημα where Πόλη = 'Πάτρα') 12

Παράδειγμα Τράπεζα: Διαγραφή Λογαριασμός Όνομα_Υποκαταστήματος Αριθμός_Λογαριασμού Ποσό Αν και μπορούμε να σβήσουμε πλειάδες μόνο από μία σχέση τη φορά μπορούμε να αναφερθούμε σε περισσότερες από μια σχέσεις στην υποερώτηση του where (3) Όλους τους λογαριασμούς μιας τράπεζας με ποσό μικρότερο από το μέσο ποσό στην τράπεζα. delete from Λογαριασμός where Ποσό < (select avg(ποσό) from Λογαριασμός) Πρώτα γίνεται ο έλεγχος σε όλες τις πλειάδες και μετά αυτές που ικανοποιούν τη συνθήκη διαγράφονται. 13

Ενημερώσεις - UPDATE Ενημέρωση = Αλλαγή τιμής σε ένα πεδίο (Εδώ στο πεδίο A του πίνακα R). Γίνεται σε όσες εγγραφές ικανοποιούν τη συνθήκη P update R set A = <νέα τιμή> where P Παράδειγμα: Αύξηση τις διάρκειας κάθε ταινίας κατά 10 λεπτά για όλες τις ταινίες με διάρκεια < 100 update Ταινία set Διάρκεια = Διάρκεια + 10 where Διάρκεια < 100 14

Ενημέρωση Όπως και για τη διαγραφή: Στο update μόνο μια σχέση, αλλά στη συνθήκη του where μπορεί να εμφανίζονται και άλλες Αν υπάρχουν παραπάνω από μια πλειάδες που ικανοποιούν τη συνθήκη, δεν υπάρχει τρόπος να διακρίνουμε τις πλειάδες, δηλαδή να ενημερώσουμε κάποιες Πρώτα, υπολογίζεται η συνθήκη του where και μετά διαγράφονται οι πλειάδες που ικανοποιούν τη συνθήκη δηλαδή, η συνθήκη υπολογίζεται στο τρέχον στιγμιότυπο όχι στο τροποποιημένο 15

Παράδειγμα Τράπεζα: Ενημέρωση Λογαριασμός Όνομα_Υποκαταστήματος Αριθμός_Λογαριασμού Ποσό Παράδειγμα 1: Αύξηση όλων των καταθέσεων που είναι μεγαλύτερες των 100 κατά 5% λόγω τοκισμού update Λογαριασμός set Ποσό = Ποσό * 1.05 where Ποσό > 100 Παράδειγμα 2: Αύξηση όλων των υπολοίπων που είναι μεγαλύτερα από τον μέσο όρο κατά 5% update Λογαριασμός set Υπόλοιπο = Υπόλοιπο * 1.05 where Υπόλοιπο > select avg(υπόλοιπο) from Λογαριασμός 16

Παράδειγμα Τράπεζα: Ενημέρωση Λογαριασμός Όνομα_Υποκαταστήματος Αριθμός_Λογαριασμού Ποσό Παράδειγμα: στους πελάτες που έχουν υπόλοιπο < 1.000.000 η τράπεζα δίνει 5% και στους πελάτες που έχουν υπόλοιπο > 1.000.000 δίνει 9%: update Λογαριασμός set Ποσό = Ποσό * 1.05 where Ποσό < 1.000.000 update Λογαριασμός set Ποσό = Ποσό * 1.09 where Ποσό > 1.000.000 Ποιο update πρέπει να τρέξουμε πρώτα; 17