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

Σχετικά έγγραφα
Lecture 17: SQL DML IV

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

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

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


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

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

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

DELETE, UPDATE, INSERT

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

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

DELETE, UPDATE, INSERT.

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 12: SQL Data Definition Language. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

Lecture 21: Functional Dependencies and Normalization

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

Lecture 18: Internal DB Programming I

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Lecture 16: SQL DML III

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

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

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

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

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

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

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

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

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

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

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

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

Lecture 17: SQL DML IV

Lecture 14: SQL DML I

databases linux - terminal (linux / windows terminal)

Διδάσκων: Παναγιώτης Ανδρέου

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

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

Lecture 8: RM I + RA I

Κεφάλαιο 6. Περιορισμοί Ακεραιότητας Βάσεων Δεδομένων

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

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

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

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

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

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

Transcript:

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

Ενημέρωση Βάσης Δεδομένων 3 είδη ενημερώσεων: INSERT: Εισάγει καινούριες πλειάδες σε ένα πίνακα DELETE: Διαγράφει πλειάδες από ένα πίνακα UPDATE: Ενημερώνει υφιστάμενες πλειάδες σε ένα πίνακα Στην απλή τους μορφή, αλληλεπιδρούν με ένα πίνακα π.χ., DELETE FROM EMPLOYEES WHERE DNO=5 Μπορούν να χρησιμοποιηθούν με συνενώσεις για πιο περίπλοκες ενημερώσεις π.χ., UPDATE E SET E.DNAME = D.DNAME FROM EMPLOYEES E INNER JOIN DEPARTMENTS D ON E.DNO=D.DNO EPL342: Databases 2013 2

INSERT Εισαγωγή Δεδομένων Εισάγει πλειάδα(ες) σε ένα πίνακα Σύνταξη: INSERT INTO TABLE(<column 1>, <column 2>, <column 3>) VALUES (<value 1>, <value 2>, <value 3>) Παράδειγμα: INSERT INTO PERSON(PID, PNAME, GENDER) VALUES (5, Nikos, M ) PERSON (P) PID PNAME GENDER 1 Andreas M 2 Kostas M 3 Maria F 4 Eleni F PERSON (P) PID PNAME GENDER 1 Andreas M 2 Kostas M 3 Maria F 4 Eleni F 5 Nikos Μ EPL342: Databases 2013 3

INSERT (συν.) Επισημάνσεις Αν δηλωθεί INSERT INTO TABLE χωρίς στήλες τότε η SQL υποθέτει ότι στο VALUES θα δοθούν τιμές για όλες τις στήλες με τη σειρά που ορίστηκαν στον πίνακα Π.χ., INSERT INTO PERSON (PID, PNAME, GENDER) VALUES (5, Nikos, M ) Αν δεν δοθούν τιμές (π.χ., VALUES (5, Nikos ) ) τότε θα πάρουμε μήνυμα λάθους Μπορούμε να μην εισάγουμε τιμές σε μεμονωμένες στήλες του πίνακα Π.χ., INSERT INTO PERSON (PID, PNAME) VALUES (5, Nikos ) Αν παραβιάζεται κάποιος περιορισμός (π.χ., CONSTRAINT GENDER NOT NULL) τότε δεν θα επιτραπεί η εισαγωγή EPL342: Databases 2013 4

INSERT (συν.) Επισημάνσεις T SQL: ΔΕΝ μπορούμε να εισάγουμε τιμές σε πεδία τύπου IDENTITY, αφού η βάση δεδομένων τα θέτει αυτόματα Π.χ., INSERT INTO PERSON (PID, PNAME) ERROR PID IDENTITY Θα πρέπει να MHN χρησιμοποιήσουμε το πεδίο τύπου IDENTITY Δηλ., INSERT INTO PERSON (PNAME) VALUES ( Andreas ) Αν θέλουμε να απενεργοποιήσουμε προσωρινά το IDENTITY τότε μπορούμε να χρησιμοποιήσουμε την εντολή SET IDENTITY_INSERT [ON OFF] Π.χ., SET IDENTITY_INSERT PERSON ON INSERT INTO PERSON VALUES(1, Andreas, M ) SET IDENTITY_INSERT PERSON OFF EPL342: Databases 2013 5

INSERT με SELECT Το INSERT χρησιμοποιείται για την εισαγωγή μίας μίας πλειάδας Εξαίρεση: TSQL 2008 προσφέρει την δυνατότητα εισαγωγής πολλαπλών πλειάδων με μια εντολή INSERT, π.χ., INSERT INTO EMPLOYEE VALUES (1, Andreas', M ), (2, Eleni', F ), ; Για να εισάγουμε πολλαπλές πλειάδες με το INSERT, μπορούμε να κάνουμε χρήση του SELECT: Εισαγωγή δεδομένων από άλλο πίνακα (INSERT SELECT) Παράδειγμα: INSERT INTO PERSON SELECT EID, ENAME, GENDER FROM EMPLOYEE Εισαγωγή δεδομένων από διάφορες πηγές (INSERT SELECT UNION SELECT) Παράδειγμα: INSERT INTO PERSON SELECT 1, Andreas, M UNION SELECT 2, Eleni, F EPL342: Databases 2013 6

DELETE Διαγραφή Δεδομένων H εντολή DELETE διαγράφει πλειάδες από μια σχέση βάσει κάποιας ορισμένης συνθήκης: DELETE [FROM] <table name> [WHERE <condition>] Π.χ., DELETE FROM EMPLOYEE where Dno=5; Επισημάνσεις 1. Εάν δεν οριστεί ο όρος WHERE, τότε σβήνονται ΟΛA oλα τα δεδομένα (πλειάδες) μιας σχέσης. Π.χ., «DELETE FROM EMPLOYEE» (αντίστοιχο αποτέλεσμα με την TRUNCATE EMPLOYEE μόνο που θα καταγράφεται ένα log record για κάθε διαγραφή) Το DROP από την άλλη σβήνει τόσο τα δεδομένα όσο και το σχήμα της βάσης από τον κατάλογο του συστήματος. EPL342: Databases 2013 7

DELETE (συν.) Επισημάνσεις 2. Οι κανόνες αναφορικής ακεραιότητας επιβάλλονται από την βάση κατά την διαγραφή π.χ., το σύστημα απαγορεύει την διαγραφή ενός EMPLOYEE που αναφέρεται από την σχέση WORKS_ON. 3. Δεν υπάρχει η έννοια της διαγραφής από πολλαπλούς πίνακες. Κάθε διαγραφή αναφέρεται σε 1 πίνακα U4A: DELETE FROM WHERE EMPLOYEE LNAME='Brown Ωστόσο, εάν ορίζονται Εντολές Ενεργοποίησης Αναφοράς, τότε μια διαγραφή μπορεί να προκαλέσει μια ή περισσότερες αλυσιδωτές διαγραφές π.χ., εάν έχουμε ON DELETE CASCADE στην WORKS_ON(ssn) (με αναφορά στον EMPLOYEE(ssn)) τότε η διαγραφή ενός EMPLOYEE σβήνει και την αντίστοιχη πλειάδα από την WORKS_ON. EPL342: Databases 2013 8

UPDATE Ενημέρωση Δεδομένων H εντολή UPDATE χρησιμοποιείται για να ενημερώνει την τιμή προκαθορισμένων γνωρισμάτων μιας σχέσης βάσει κάποιας συνθήκης. UPDATE <table name> SET <column>=<value> [,<column>=<value>] [WHERE <condition>] Παράδειγμα: PERSON (P) PID PNAME GENDER 1 Andreas M 2 Kostas M 3 Maria Μ UPDATE PERSON SET GENDER= F WHERE PID=3 PERSON (P) PID PNAME GENDER 1 Andreas M 2 Kostas M 3 Maria F EPL342: Databases 2013 9

UPDATE (συν.) Επισημάνσεις: Το WHERE χρησιμοποιείται για να προσδιοριστεί το σύνολο εγγραφών που πρέπει να ενημερωθεί Μπορεί να συνδυασθεί με συνενώσεις για περίπλοκες ενημερώσεις με πολλαπλούς πίνακες Π.χ., UPDATE E SET E.DNAME = D.DNAME FROM EMPLOYEES E INNER JOIN DEPARTMENTS D ON E.DNO=D.DNO Το SET προσδιορίζει τα γνωρίσματα που πρέπει να ενημερωθούν και την νέα τους τιμή. Η ενημέρωση γίνεται μόνο σε ένα πίνακα Οι κανόνες ακεραιότητας επιβάλλονται αυτόματα EPL342: Databases 2013 10

Χρήσιμες Εντολές BULK INSERT Μια εξαιρετικά χρήσιμη εντολή είναι η BULK INSERT η οποία εισάγει μαζικά δεδομένα από αρχεία κειμένου (αντίστοιχα η ΒCP (windows command line utility) εξάγει μαζικά δεδομένα): Π.χ., bcp "SELECT FirstName, LastName FROM TABLE ORDER BY LastName" queryout Contacts.txt c T Στoν SQL Server: BULK INSERT OrdersBulk FROM 'c:\data.csv' WITH (FIRSTROW=2, FIELDTERMINATOR=',', ROWTERMINATOR='\n ) Υποθέστε ότι έχουν προηγηθεί τα ακόλουθα: CREATE TABLE OrdersBulk(CustomerID INT, CustomerName VARCHAR(32), OrderID INT, OrderDate SMALLDATETIME) Το data.csv θεωρήστε ότι έχει την ακόλουθη δομή: # CustomerID,CustomerName,OrderID,OrderDate 1,foo,5,20031101 3,blat,7,20031101 5,foobar,23,20031104 EPL342: Databases 2013 11

Χρήσιμες Εντολές OPENROWSET H OPENROWSET επιτρέπει να αντλήσουμε δεδομένα από μια άλλη πηγή (π.χ., txt αρχείο, άλλη OLE DB βάση δεδομένων, κτλ) Παράδειγμα join με πίνακα άλλης βάσης USE Northwind; GO SELECT c.*, o.* FROM Northwind.dbo.Customers AS c INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb';'admin';'', Orders) AS o ON c.customerid = o.customerid ; GO EPL342: Databases 2013 12

Γλώσσα Ορισμού Ελέγχων (DCL) GRANT: Δίνει πρόσβαση σε κάποιο αντικείμενο της βάσης δεδομένων σε κάποιους χρήστες ή ρόλους GRANT [INSERT UPDATE DELETE] ON [TABLE PROCEDURE <object> TO [USER ROLE]; DENY: Απαγορεύει πρόσβαση σε κάποιο αντικείμενο της βάσης δεδομένων σε κάποιους χρήστες ή ρόλους DENY [INSERT UPDATE DELETE] ON [TABLE PROCEDURE <object> TO [USER ROLE]; REVOKE: Αναστέλλει την τελευταία εντολή πρόσβασης ή απαγόρευσης EPL342: Databases Demetris Zeinalipour (University of Cyprus) 13

Γλώσσα Χειρισμού Εντολών (TCL) Ομαδοποίηση εντολών (COMMIT) και εκτέλεση τους σαν μία εντολή. Σε περίπτωση αποτυχίας, μπορούν να αναιρεθούν όλες οι εντολές (ROLLBACK). Παράδειγμα σε SQL TCL: BEGIN TRANSACTION INSERT INTO STUDENTS(ID, NAME) VALUES(13, Andreas) INSERT INTO STUDENT_INTERESTS(ID, INTEREST) VALUES(13, Football ) INSERT INTO STUDENT_INTERESTS(ID, INTEREST) VALUES(13, Rugby ) COMMIT TRANSACTION IF @@ERROR<>0 ROLLBACK TRANSACTION EPL342: Databases Demetris Zeinalipour (University of Cyprus) 14