Lecture 13: SQL DDL II

Σχετικά έγγραφα
Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 12: SQL DDL. SQL Data Definition Language

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

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

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

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

Βάσεις Δεδομέμωμ. Δξγαζηήξην Ι. Τκήκα Πιεξνθνξηθήο ΑΠΘ

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

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

Constructors and Destructors in C++

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

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

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

Lecture 12: SQL DDL I

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

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

Lecture 12: SQL DDL I

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

Case Study. Παξαθάηω παξνπζηάδνπκε βήκα - βήκα κε screenshots έλα παξάδεηγκα ππνβνιήο κηαο εξγαζίαο θαη ηελ παξαγωγή ηνπ Originality Report.

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

Α Ο Κ Η Α Μ Α Ζ Η Η Ρ Η ( S E A R C H )

Ενδεικτικά Θέματα Στατιστικής ΙΙ

ΣΕΙ ΙΟΝΙΩΝ ΝΗΩΝ ΣΜΗΜΑ: ΣΕΥΝΟΛΟΓΙΑ ΠΛΗΡΟΦΟΡΙΚΗ ΚΑΙ ΣΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΥΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ Ρέππα Μαξγαξίηα

(Ενδεικηικές Απανηήζεις) ΘΔΜΑ Α. Α1. Βιέπε απόδεημε Σει. 262, ζρνιηθνύ βηβιίνπ. Α2. Βιέπε νξηζκό Σει. 141, ζρνιηθνύ βηβιίνπ

x-1 x (x-1) x 5x 2. Να απινπνηεζνύλ ηα θιάζκαηα, έηζη ώζηε λα κελ ππάξρνπλ ξηδηθά ζηνπο 22, 55, 15, 42, 93, 10 5, 12

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γευηέρα 11 Ηουνίου 2018 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

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

Γ ΣΑΞΖ ΔΝΗΑΗΟΤ ΛΤΚΔΗΟΤ ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΘΔΣΗΚΩΝ ΚΑΗ ΟΗΚΟΝΟΜΗΚΩΝ ΠΟΤΓΩΝ ΤΝΑΡΣΖΔΗ ΟΡΗΑ ΤΝΔΥΔΗΑ (έως Θ.Bolzano) ΘΔΜΑ Α

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

Διαηιμήζεις για Αιολικά Πάρκα. Κώδικες 28, 78 και 84

Hellas online Προεπιλεγμένες ρσθμίσεις για FritzBox Fon WLAN 7140 (Annex B) FritzBox Fon WLAN Annex B ( )

ΒΗΜΑ 2. Εηζάγεηε ηνλ Κωδηθό Πξόζβαζεο πνπ ιακβάλεηε κε SMS & δειώλεηε επηζπκεηό Όλνκα Πξόζβαζεο (Username) θαη ην ζαο

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική ΑΔ

x x x x tan(2 x) x 2 2x x 1

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΗΛΕΚΤΡΟΛΟΓΙΑ/Γ ΛΥΚΕΙΟΥ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 08/09/2014

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

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙ ΜΟ

ΣΥΣΤΗΜΑΤΑ ΑΛΓΕΒΡΑ Α ΛΥΚΕΙΟΥ. 1. Να ιπζνύλ ηα ζπζηήκαηα. 1 0,3x 0,1y x 3 3x 4y 2 4x 2y ( x 1) 6( y 1) (i) (ii)

MySQL Εργαστήριο #5 Ενεργοποιητές (συνέχεια)

ΟΣΑ Επηρεηξεζηαθή Ννεκνζύλε. Ελόηεηα: Ad1.2.2 «Ση θξύβεηαη» πίζω από κηα Επηρεηξεζηαθή Αλαθνξά (report): XML & XSD γηα αξράξηνπο

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

ΚΔΦ. 2.4 ΡΗΕΔ ΠΡΑΓΜΑΣΗΚΩΝ ΑΡΗΘΜΩΝ

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΕΣΑΙΡΕΙΑ ΜΑΘΗΜΑΣΙΚΗ ΚΤΣΑΛΟΓΡΟΜΙΑ 2007 ΓΙΑ ΣΟ ΓΤΜΝΑΙΟ Παπασκευή 26 Ιανουαπίου 2007 Σάξη: Α Γυμνασίου ΥΟΛΕΙΟ..

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

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

A. Αιιάδνληαο ηε θνξά ηνπ ξεύκαηνο πνπ δηαξξέεη ηνλ αγωγό.

Μονοψϊνιο. Αγνξά κε ιίγνπο αγνξαζηέο. Δύναμη μονοψωνίος Η ηθαλόηεηα πνπ έρεη ν αγνξαζηήο λα επεξεάζεη ηελ ηηκή ηνπ αγαζνύ.

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

EL Eνωμένη στην πολυμορυία EL A8-0046/319. Τροπολογία

Δπηιέγνληαο ην «Πξνεπηινγή» θάζε θνξά πνπ ζα ζπλδέεζηε ζηελ εθαξκνγή ζα βξίζθεζηε ζηε λέα ρξήζε.

Η επιζκόπηζη ηης έμμιζθης ενηολής ζηην Αλλοδαπή. Καηεξίλα Γαιαλνπνύινπ, Intellectual Property Manager, Microsoft Ειιάο Α.Ε.

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

Ηλεκηπονικά Απσεία και Διεπαθέρ

Σηα παξαδείγκαηα πνπ αθνινπζνύλ ρξεζηκνπνηήζεθαλ ην JQUIZ, ην JCROSS θαη ην JMATCH, πνπ αλαιπηηθά πεξηγξάθνληαη παξαθάηω.

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

DOM. Γηδάζθνληεο: Π. Αγγειάηνο, Γ. Εήλδξνο Δπηκέιεηα δηαθαλεηώλ: Π. Αγγειάηνο. Σρνιή Ζιεθηξνιόγωλ Μεραληθώλ θαη Μεραληθώλ Υπνινγηζηώλ

ΠΑΡΑΡΣΗΜΑ Δ. ΔΤΡΔΗ ΣΟΤ ΜΔΣΑΥΗΜΑΣΙΜΟΤ FOURIER ΓΙΑΦΟΡΩΝ ΗΜΑΣΩΝ

Κεθάιαην 20. Ελαχιστοποίηση του κόστους

ΘΔΜΑ 1 ο Μονάδες 5,10,10

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP

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

ΔΝΓΔΙΚΤΙΚΔΣ ΛΥΣΔΙΣ ΣΤΑ ΜΑΘΗΜΑΤΙΚΑ ΚΑΤΔΥΘΥΝΣΗΣ Γ ΛΥΚΔΙΟΥ ΓΔΥΤΔΡΑ 27 ΜΑΪΟΥ 2013

Η/Υ A ΤΑΞΕΩΣ ΑΕ Συστήματα Αρίθμησης. Υποπλοίαρχος Ν. Πετράκος ΠΝ

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

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ Γεσηέρα 10 Ηοσνίοσ 2019 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ. (Ενδεικηικές Απανηήζεις)

f '(x)g(x)h(x) g'(x)f (x)h(x) h'(x) f (x)g(x)

ΣΕΙ Δυτικήσ Μακεδονίασ, Παράρτημα Καςτοριάσ Τμήμα Πληροφορικήσ και Τεχνολογίασ Υπολογιςτών

ΦΥΣΙΚΗ ΤΩΝ ΡΕΥΣΤΩΝ. G. Mitsou

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

ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ ΚΑΗ ΔΠΑΛ ΣΔΣΑΡΣΖ 25 ΜΑΨΟΤ 2016 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΑΡΥΔ ΟΗΚΟΝΟΜΗΚΖ ΘΔΧΡΗΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ - ΔΠΗΛΟΓΖ

Βάζεις Δεδομένων ΤΛΟΠΟΙΗΗ ΜΙΑ ΑΠΛΗ ΒΑΗ ΜΔ ΑΤΣΟΜΑΣΑ ΔΡΓΑΛΔΙΑ. Υινπνίεζε Απιήο Βάζεο 1

ΚΤΠΡΙΑΚΗ ΜΑΘΗΜΑΣΙΚΗ ΔΣΑΙΡΔΙΑ ΠΑΓΚΤΠΡΙΟ ΓΙΑΓΩΝΙΜΟ Α ΛΤΚΔΙΟΤ. Ημεπομηνία: 10/12/11 Ώπα εξέτασηρ: 09:30-12:30 ΠΡΟΣΔΙΝΟΜΔΝΔ ΛΤΔΙ

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

ΓΙΑΙΡΔΣΟΣΗΣΑ. Οπιζμόρ 1: Έζηω d,n. Λέκε όηη ν d δηαηξεί ηνλ n (ζπκβνιηζκόο: dn) αλ. ππάξρεη c ηέηνην ώζηε n. Θεώπημα 2: Γηα d,n,m,α,b ηζρύνπλ:

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

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν

ΔΝΓΔΙΚΣΙΚΔ ΛΤΔΙ ΣΑ ΜΑΘΗΜΑΣΙΚΑ ΠΡΟΑΝΑΣΟΛΙΜΟΤ 2017

ΔΡΓΑΙΑ 1. Γιαδικησακά πληροθοριακά σζηήμαηα. Ομάδα Δργαζίας: Μεηαπηστιακοί Φοιηηηές. ηέθανος Κονηοβάς ΑΔΜ :283. Πάζτος Βαζίλειος ΑΔΜ :288

ΛΙΜΝΗ ΤΣΑΝΤ. Σρήκα 1. Σρήκα 2

Γοκή επαλάιευες Δληοιές Όζο & Μέτρης_όηοσ

ΘΔΚΑ ΡΖΠ ΑΛΑΓΛΩΟΗΠΖΠ

Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training. Dipl.Biol.cand.med. Stylianos Kalaitzis

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

Σήκαηα Β Α Γ Γ Δ Λ Η Σ Ο Ι Κ Ο Ν Ο Μ Ο Υ Γ Ι Α Λ Δ Ξ Η - ( 2 ) ΕΙΣΑΓΨΓΗ ΣΤΙΣ ΤΗΛΕΠΙΚΟΙΝΨΝΙΕΣ

Εγκατάσταση του πακέτου XAMPP. Β Τεχνική Σχολή Λεμεςοφ Σχολική χρονιά Άριςτοσ Παςιάσ

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

Image J Plugin particle tracker για παρακολούθηση της κίνησης σωματιδίων

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

Πολυεπίπεδα/Διασυμδεδεμέμα Δίκτυα

Εςθςή ζςζηήμαηα επισειπήζεων και αξιολόγηζη

ΜΗΧΑΝΟΛΟΓΙΚΟ ΣΧΔΓΙΟ ΙΙ

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

Transcript:

Department of Computer Science University of Cyprus EPL342 Databases Lecture 13: SQL DDL II SQL Data Definition Language (Chapter 8.2-8.3, Elmasri-Navathe 5ED) + ΤransactSQL Reference Guide http://msdn.microsoft.com/en-us/library/bb510741.aspx Demetris Zeinalipour http://www.cs.ucy.ac.cy/courses/epl342 13-1

Πεξηερόκελν Γηάιεμεο Κεθάιαην 8.2-8.3: SQL DDL II Εηζαγωγή ζηελ SQL Σύπνη Δεδνκέλωλ ηεο SQL 1999 Αξηζκνί, Σπκβνινζεηξέο, Γπαδηθέο Αθνινπζίεο, Λνγηθνί Τύπνη, Ηκεξνκελίεο & Ώξα, Φξνλόζεκα, θ.α. TSQL: Σπλαξηήζεηο Ηκεξνκελίαο, Απηόκαηε Αύμεζε Τηκήο, Υπνινγηδόκελα Γλωξίζκαηα, Δμεηδηθεπκέλνη Τύπνη Οξηζκόο Δεδνκέλωλ (CREATE/DROP/ALTER) Γεκηνπξγία, Γηαγξαθή θαη Τξνπνπνίεζε Πηλάθωλ Πεξηνξηζκνί (CONSTRAINTS) Οληόηεηαο, Αλαθνξηθήο Αθεξαηόηεηαο, Ολνκαζία, Δληνιέο Δλεξγνπνίεζεο Αλαθνξάο, Πξνζωξηλή Απελεξγνπνίεζε Πεξηνξηζκώλ, θ.α. 13-2

Τύπνη Γεδνκέλωλ ηεο SQL (πλαξηήζεηο Ηκεξνκελίαο θαη Ώξαο) Πέξα από ηνπο ηύπνπο γηα εκεξνκελίεο, όια ηα ζπζηήκαηα παξέρνπλ θαη ζπλαξηήζεηο: Eπεμεξγαζίαο ηεο ώξαο/εκεξνκελίαο Πξόζζεζε Ηκεξνκεληώλ / Ωξώλ, Δμαγωγή κήλα, εκέξαο, ή ρξνλνινγίαο από κηα εκεξνκελία, Εκθάληζε εκεξνκελίαο κε δηάθνξνπο ηξόπνπο, θηι. Απηέο ζα αμηνπνηεζνύλ αξγόηεξα από ηελ SQL-DML Παξαδείγκαηα πλαξηήζεωλ από ηνλ SQL Server: DATEDIFF ( datepart, startdate, enddate ) SELECT DATEDIFF(year, '2005-12-31' '2006-01-01'); Returns 1 DATEADD (datepart, number, date ) SELECT DATEADD(month, 1, '2006-08-30'); Returns 2006-09-30 DATEPART(datepart, date ) SELECT DATEPART(year, 0); Returns: 1900 ISDATE ( expression ) SELECT ISDATE('04/15/2008'); Returns 1 Datepart: year, month, dayofyear, day,week, weekday,hour,sec ond,millisecond 13-3

Τύπνη Γεδνκέλωλ ηεο SQL (Απηόκαηε Αύμεζε Σηκήο - Autoincrement ) Σε πνιιέο πεξηπηώζεηο είλαη ρξήζηκν λα δεκηνπξγνύληαη απηόκαηα θάπνηνη κνλαδηθνί αξηζκνί από ηελ βάζε δεδνκέλωλ (π.ρ., γηα λα ρξεζηκνπνηεζνύλ ωο πξωηεύωλ θιεηδηά) Π.ρ., Καηά ηελ εηζαγωγή πξνϊόληωλ (products) ζε κηα βάζε ζέινπκε λα παξάγεηαη απηόκαηα ην θιεηδί PID. Δάλ θαη ε SQL:99 δελ έρεη πξόλνηα γηα έλα ηέηνην ηύπν, όιεο νη βάζεηο ηνλ πινπνηνύλ κε θάπνην ηξόπν. Σπγθεθξηκέλα, ην Auto-increment πινπνηείηαη ωο εηδηθό ηύπν αθεξαίνπ ν νπνίνο απμάλεηαη απηόκαηα PostgreSQL: Serial: Από 1 κέρξη 2147483647 Auto-increment Bigserial: Από 1 κέρξη 9223372036854775807 Microsoft Access: Autonumber Oracle: CREATE SEQUENCE command SQL Server 2008: IDENTITY 13-4

Τύπνη Γεδνκέλωλ ηεο SQL (Απηόκαηε Αύμεζε Σηκήο - Autoincrement ) Σην SQL Server 2008, ε απηόκαηε αύμεζε γίλεηαη κέζω ηνπ IDENTITY, ην νπνίν δίλεηαη ωο γλώξηζκα ζηελ εληνιή CREATE TABLE, δει: IDENTITY [ ( seed, increment ) ] Seed: Αξρή Αξίζκεζεο, Increment: Αύμεζε Μεηξεηή Η εμ νξηζκνύ ηηκή είλαη (1,1) ή πξέπεη λα νξίδνληαη θαη ηα δπν. Παξάδεηγκα Υξήζεο CREATE TABLE Products ( PID int IDENTITY(1,1) PRIMARY KEY,.) Επηζεκάλζεηο: Τν IDENTITY ρξεζηκνπνηείηαη ζε ζπλδπαζκό κε θάπνηα αξηζκεηηθή ηηκή (tinyint, smallint, bigint, dec(p,0)) πξάμε κόλν κε int ή bigint. Δάλ θάλνπκε DROP ή TRUNCATE έλα πίλαθα ηόηε ν counter ηνπ IDENTITY κεδελίδεηαη (γηα απηό λα ρξεζηκνπνηείηαη ην DELETE) Δάλ ρξεζηκνπνηείηαη ωο PRIMARY KEY ρξεηάδεηαη πξνζνρή εηδηθά εάλ ηα δεδνκέλα πξόθεηηαη λα θνξηωζνύλ ζηε βάζε δεδνκέλωλ. Όκνηα, ν ηύπνο δεδνκέλωλ UniqueIdentifier (GUID) είλαη 16byte ζπκβνινζεηξά, π.ρ., '6F9619FF-8B86-D011-B42D-00C04FC964FF ε νπνία αλαηίζεηαη απηόκαηα κε DEFAULT NEWID() 13-5

Τύπνη Γεδνκέλωλ ηεο SQL (Τπνινγηδόκελα Γλωξίζκαηα - Computed Columns) Σε θάπνηεο πεξηπηώζεηο είλαη ρξήζηκν λα δεκηνπξγνύληαη απηόκαηα θάπνηα γλωξίζκαηα βάζεη άιιωλ γλωξηζκάηωλ Π.ρ., ListPrice = Price * 1.2; Οξηζκέλεο βάζεηο δεδνκέλωλ, όπωο ν SQL Server ππνζηεξίδνπλ ηελ έλλνηα ηωλ Τπνινγηδόκελωλ Γλωξηζκάηωλ (Computed Columns) ηα νπνία γλωξηζκαηα δελ ππάξρνπλ αιιά ππνινγίδνληαη θαηά ηελ αλαθνξά ηνπο. CREATE TABLE Grades ( Midterm float, Final float, Exercise float, FinalGrade AS 0.25*Midterm + 0.5*Final + 0.25*Exercises) Μεηνλεθηήκαηα Γελ είλαη ζπκβαηό κε ηελ SQL:99 νπόηαλ ππάξρνπλ πξνβιήκαηα κεηαθεξζηκόηεηαο (portability) ηνπ θώδηθα Σε αξθεηέο πεξηπηώζεηο, πνιιέο ιεηηνπξγίεο δελ ππνζηεξίδνληαη (π.ρ., επξεηήξηα, πεξηνξηζκνί, θηι.) 13-6

Τύπνη Γεδνκέλωλ ηεο SQL (Γεκηνπξγία Εμεηδηθεπκέλωλ Σύπωλ Γεδνκέλωλ) Η SQL:99 παξέρεη ηελ δπλαηόηεηα δεκηνπξγίαο εμεηδηθεπκέλωλ ηύπωλ δεδνκέλωλ κέζω ηεο εληνιήο CREATE DOMAIN. Η αληίζηνηρε εληνιή ζηελ TSQL είλαη ε CREATE TYPE Παξαδείγκαηα ζε SQL:99: CREATE DOMAIN name_dom AS CHAR(20); CREATE DOMAIN sectno_dom AS SMALLINT; CREATE DOMAIN section_dom VARCHAR(20) DEFAULT 'none'; CREATE DOMAIN address_dom CHAR(50) DEFAULT NULL; CREATE DOMAIN qpa_dom DECIMAL (3,2) DEFAULT 0.00; Παξαδείγκαηα ζε ΣSQL: CREATE TYPE SSN FROM varchar(11) NOT NULL ; http://msdn.microsoft.com/en-us/library/ms175007.aspx 13-7

Τύπνη Γεδνκέλωλ ηεο SQL (Γεκηνπξγία Εμεηδηθεπκέλωλ Σύπωλ Γεδνκέλωλ) Δάλ θαη ζα δνύκε ηελ έλλνηα ηωλ πεξηνξηζκώλ αξγόηεξα, αλαθέξνπκε όηη ε SQL99 ππνζηεξίδεη πεξηνξηζκνύο CHECK θαη θαηά ηελ δεκηνπξγία εμεηδηθεπκέλωλ ηύπωλ. Παξαδείγκαηα ζε SQL:99 CREATE DOMAIN gender_dom AS CHAR(1) CHECK (VALUE IN ( 'F', 'f', 'M', 'm' )); CREATE DOMAIN gender_dom AS CHAR(1) CHECK (VALUE IN ( 'F', 'f', 'M', 'm' ) OR (VALUE IS NULL)); CREATE DOMAIN ssn_dom CHAR(11) CHECK ((VALUE BETWEEN '000-00-0000' AND '999-99-9999')); CREATE DOMAIN hour_dom AS INTEGER DEFAULT 0 CHECK (VALUE >= 0); 13-8

Οξηζκόο Γεδνκέλωλ ζηελ SQL (Γεκηνπξγία Σρήκαηνο) Σε λεόηεξεο εθδόζεηο ηνπ SQL Server κπνξνύκε λα αλαζέζνπκε επί κέξνπο αληηθείκελα ηεο βάζεο ζε επί κέξνπο Οκάδεο (δηαθνξεηηθά Σρήκαηα Βαζεο), π.ρ., Command: CREATE SCHEMA Person SQL Server 2008 Schema => Container of Objects Τν παξάδεηγκα ζηα δεμηά δείρλεη δπν νκάδεο Person θαη HumanResources. Η default νκάδα είλαη ν dbo (database owner) Σπλεπώο κηα αλαθνξά ζε έλα αληηθείκελν ρξεζηκνπνηεί ηελ έμεο ζεκεηνγξαθία: [ServerName.[DatabaseName.[SchemaName.]]].ObjectName 13-9

Οξηζκόο Γεδνκέλωλ ζηελ SQL (Γεκηνπξγία Σρήκαηνο) Γηαθνξεηηθ ά Σρήκαηα 13-10

Οξηζκόο Γεδνκέλωλ ζηελ SQL (Data Definition Language - DDL) Μηα Γλώζζα Οριζμού Δεδομένων (Data Definition Language, SQL-DDL) καο επηηξέπεη λα δεκηνπξγήζνπκε θαη λα δηαρεηξηζηνύκε ηηο δνκέο κηαο βάζεο δεδνκέλωλ. Απηό επηηπγράλεηαη κέζω θάπνηωλ εληνιώλ ηεο SQL, π.ρ.,: CREATE δεκηνπξγεί έλα αληηθείκελν βάζεο π.ρ., ζρήκα βάζεο, πίλαθα, επξεηήξην, ζθαλδάιε, ηύπν δεδ., θηι. DELETE/DROP/TRUNCATE DELETE δηαγξάθεη ζηνηρεία από ην αληηθείκελν βάζεη ζπλζήθεο (ρωξίο λα απνδεζκεύεηαη ν ρώξνο). ΣRUNCATE/DROP: δηαγξάθεη ην αληηθείκελν / δηαγξάθεη ην αληηθείκελν θαη ηελ πεξηγξαθή ηνπ απνδεζκεύνληαο θαη ηνλ ρώξν. ALTER κεηαβάιεη ηελ δνκή ελόο αληηθεηκέλνπ Π.ρ., πξνζζήθε ζηήιεο, επηπιένλ πεξηνξηζκνύ, θηι. 13-11

Οξηζκόο Γεδνκέλωλ ζηελ SQL (CREATE TABLE) Από ηελ SQL2, κπνξνύκε κε ηελ ρξήζε ηεο εληνιήο CREATE TABLE λα νξίζνπκε θαη ηνπο αθόινπζνπο πεξηνξηζκνύο: Γλωξίζκαηα Οξίδεηαη ν ηύπνο δεδνκέλωλ θάζε γλωξίζκαηνο, π.ρ., age int, Πξωηεύνληα θιεηδηά (PRIMARY KEY) Οξίδεηαη ην Κιεηδί θάζε Σρέζεο Γελ κπνξεί λα είλαη NULL Γελ είλαη απαξαίηεην λα ππάξρεη εάλ θαη ζπλίζηαηαη λα ππάξρεη Δεπηεξεύνληα θιεηδηά (UNIQUE) Οξίδνληαη ηα κνλαδηθά γλωξίζκαηα κηαο Σρέζεο (π.ρ., Dname ζην Department) Μπνξεί λα είλαη NULL (βαζηθή δηαθνξά από ηα Primary Keys) Καλόλεο Αλαθνξηθήο Αθεξαηόηεηαο (FOREIGN KEY). Γηα έλα μέλν θιεηδί, αλαθέξεη ζε πνην πξωηεύωλ θιεηδί αλαθέξεηαη θαζώο θαη εληνιήο ελεξγνπνίεζεο αλαθνξάο. (πξάμεηο αληηδξάζεηο ζε δηαγξαθέο θαη ελεκεξώζεηο) 13-12

Οξηζκόο Γεδνκέλωλ ζηελ SQL (CREATE TABLE) Παξάδεηγκα δεκηνπξγίαο πίλαθα κε βαζηθνύο πεξηνξηζκνύο θαη ρωξίο δξάζεηο αληίδξαζεο ζε δηαγξαθέο θαη ελεκεξώζεηο CREATE TABLE DEPT ( DNAME VARCHAR(10) NOT NULL [UNIQUE], DNUMBER INTEGER NOT NULL [PRIMARY KEY] ); MGRSSN CHAR(9) [REFERENCES EMP], MGRSTARTDATE CHAR(9), PRIMARY KEY (DNUMBER), UNIQUE (DNAME), FOREIGN KEY (MGRSSN) REFERENCES EMP To γλώξηζκα ΔΕΝ κπνξεί λα είλαη NULL. Default: NULL (δειαδή επηηξέπεηαη λα είλαη NULL) Γηα ζύλζεηα θιεηδηά επηβάιιεηαη λα νξίδεηαη ζην ηέινο θαη όρη δίπια από ηνλ νξηζκό ηνπ γλωξίζκαηνο. 13-13

Οξηζκόο Γεδνκέλωλ ζηελ SQL (CREATE TABLE - Παξάδεηγκα) Σεκεηώζηε όηη αθόκε δελ νξίζακε ηελ αληίδξαζε ζε δηαγξαθέο θαη ελεκεξώζεηο) Μπορούζαν να οριζηούν δίπλα από ηο γνωρίζμαηα Σύνθεηα κλειδιά ορίζονηαι πάνηα ζηο ηέλος 13-14

Οξηζκόο Γεδνκέλωλ ζηελ SQL (CREATE TABLE - Παξάδεηγκα) 13-15

Οξηζκόο Γεδνκέλωλ ζηελ SQL (CREATE TABLE Constraint Ordering) Οη αλαθνξηθνί πεξηνξηζκνί κπνξνύλ λα νξίδνληαη ζε επίπεδν i) γλωξίζκαηνο, ii) ζρέζεο ή iii) κε κεηαβνιή ζρήκαηνο (κε ALTER TABLE πνπ ζα δνύκε ζε ιίγν) Ο βνιηθόηεξνο ηξόπνο είλαη κε κεηαβνιή ζρήκαηνο εθόζνλ κπνξεί λα ππάξρνπλ πξνβιήκαηα πξνηεξαηόηεηαο όπωο ην πην θάηω θαη λα κελ κπνξνύκε λα πξνρωξήζνπκε. Πξόβιεκα Πξνζέγγηζεο (i) θαη (ii) CREATE TABLE EMPLOYEE( SSN INTEGER PRIMARY KEY, DNO INTEGER NOT NULL, FOREIGN KEY (DNO) REFERENCES CREATE TABLE DEPARTMENT( DEPARTMENT(DNO)); DNO INTEGER NOT NULL PRIMARY KEY, Μήλπκα Λάζνπο Foreign key 'FK EMPLOYEE DNO 4CA06362' references invalid table 'DEPARTMENT'. MGRSSN INTEGER NOT NULL, FOREIGN KEY (MGRSSN) REFERENCES EMPLOYEE(SSN)); 13-16

Οξηζκόο Γεδνκέλωλ ζηελ SQL (CREATE TABLE Constraint Ordering) Δπίιπζε κε κεηαβνιή ζρήκαηνο θάλνληαο ρξήζε ηνπ ALTER TABLE /* Δεκηνπξγία Πηλάθωλ ρωξίο αλαθνξηθνύο πεξηνξηζκνύο */ CREATE TABLE EMPLOYEE( SSN INTEGER PRIMARY KEY, DNO INTEGER NOT NULL); CREATE TABLE DEPARTMENT( DNO INTEGER NOT NULL PRIMARY KEY, MGRSSN INTEGER NOT NULL); H ALTER ζα κειεηεζεί εθηελεζηέξα ζε ιίγν /* Δεκηνπξγία Αλαθνξηθώλ Πεξηνξηζκώλ κε ALTER TABLE */ ALTER TABLE EMPLOYEE ADD CONSTRAINT FOREIGN KEY (DNO) REFERENCES DEPARTMENT(DNO)); ALTER TABLE DEPARTMENT ADD CONSTRAINT FOREIGN KEY (MGRSSN) REFERENCES EMPLOYEE(SSN)); 13-17

Γηαγξαθή Γεδνκέλωλ ζηελ SQL (DROP TABLE) H Drop ρξεζηκνπνηείηαη γηα λα αθαηξέζεη κηα ζρέζε θαη ηνλ νξηζκό ηεο (ζρήκα) από ηνλ θαηάινγν ηεο βάζεο: Π.ρ., DROP TABLE EMPLOYEE, DEPARTMENT,,n; A. Γελ επηηξέπεηαη λα θάλνπκε DROP πίλαθα πνπ αλαθέξεηαη από θάπνην άιιν πίλαθα (πξώηα DROP ηα constraint ) ALTER TABLE dbo.employee DROP CONSTRAINT fk_dno B. Μπνξνύκε λα θάλνπκε DROP πνιιαπινύο πίλαθεο δεδνκέλνπ ηνπ όηη ηνπο θάλνπκε drop κε αθνινπζία πνπ δελ επεξεάδεη ην ζεκείν Α DELETE δηαγξάθεη εγγξαθέο βάζεη ζπλζήθεο θαη θαηαγξάθνληαο ηηο αιιαγέο ζε έλα θαηάζηηρν (LOG) Π.ρ., DELETE [*] FROM DEPENDENT [WHERE condition]; ΣRUNCATE: δηαγξάθεη ΟΛΔΣ ηηο εγγξαθέο κηαο ζρέζεο θαη δελ θαηαγξάθεη ηηο αιιαγέο ζε θαηάζηηρν (LOG) Π.ρ., TRUNCATE TABLE DEPENDENT; 13-18

Δμέιημε Σρήκαηνο Πηλάθωλ (Η εληνιή ALTER) H εληνιή ALTER καο επηηξέπεη ηελ κεηεμέιημε ηνπ ζρήκαηνο κηαο βάζεο (π.ρ., πξνζζήθε ή αιιαγή πεδίνπ, πεξηνξηζκώλ, θηι.) Αο δνύκε θάπνηα παξαδείγκαηα (δείηε θαη ηα παξαδείγκαηα ηνπ εξγαζηεξίνπ) A) Προζθήκη Γνωρίζμαηος ALTER TABLE Company.Employee ADD COLUMN LastRaise date; Παραηηρήζεις Η ζηήλη δημιοσργείηαι αλλά θέρει ηην ηιμή NULL. Μπορούμε να κάνοσμε ηα ακόλοσθα: Πξνζζήθε ηαζεξήο Σηκήο ADD COLUMN LastRaise date NOT NULL DEFAULT 2009-01-01 Πξνζζήθε Μεηαβαιιόκελεο Σηκήο (κέζω ζπλάξηεζεο TSQL) ADD COLUMN LastRaise date NOT NULL DEFAULT GETDATE() Σν DEFAULT ζα κειεηεζεί εθηελεζηέξα ζηε ζπλέρεηα 13-19

Δμέιημε Σρήκαηνο Πηλάθωλ (Η εληνιή ALTER) Β) Διαγραθή Γνωρίζμαηος ALTER TABLE Company.Employee DROP COLUMN LastRaise; Παραηηρήζεις Eαλ ε ζηήιε ππό δηαγξαθή αλαθέξεηαη από θάπνηα άιιε ζρέζε ηόηε δελ είλαη εθηθηή ε δηαγξαθή (εθόζνλ παξαβηάδεηαη ν θαλόλαο αλαθνξηθήο αθεξαηόηεηαο). Σηελ SQL:99 (όρη ΤSQL) ππάξρεη ε έλλνηα ηνπ CASCADE ALTER TABLE tname DROP COLUMN cname CASCADE; ην νπνίν αθπξώλεη νπνηεζδήπνηε αλαθνξέο ζην column_name (constraints, views, θηι) πξνηνύ γίλεη ε δηαγξαθή. Η ALTER έτει πολλές επιλογές, π.τ.,: ALTER TABLE tname ALTER COLUMN cname DROP DEFAULT; ALTER TABLE tname ALTER COLUMN cname SET DEFAULT 1; Γηα ηελ πιήξε ζύληαμε ηεο ALTER ζε TSQL http://msdn.microsoft.com/en-us/library/ms190273.aspx 13-20

Δπηπιένλ Πεξηνξηζκνί ζηελ SQL Σε απηή ηελ ελόηεηα ζα κειεηήζνπκε ηνπο πεξηνξηζκνύο πνπ κπνξνύκε λα δηαηππώζνπκε κε ηελ SQL-DDL. Θα θάλνπκε ηδηαίηεξε αλαθνξά ζηνπο πεξηνξηζκνύο ζηα πιαίζηα ηεο TSQL-DDL (SQL Server 2008). Πέξα από ηνπο πεξηνξηζκνύο πνπ είδακε ήδε NULL/NOT NULL, PRIMARY KEY, UNIQUE θαη FOREIGN KEY ζα κειεηήζνπκε θαη ηα αθόινπζα: Ολνκαζία Πεξηνξηζκώλ (Naming) Πεξηνξηζκνί DEFAULT Πεξηνξηζκνί CHECK Εληνιέο Ελεξγνπνίεζεο Αλαθνξάο ON DELETE ON UPDATE { NO ACTION CASCADE SET NULL SET DEFAULT } Πξνζωξηλή Απελεξγνπνίεζε Πεξηνξηζκώλ WITH CHECK / WITH NO CHECK 13-21

Πεξηνξηζκνί ζηελ SQL (Ολνκαζία Πεξηνξηζκώλ) Σηα πξνεγνύκελα παξαδείγκαηα δελ δώζακε θάπνηα νλόκαηα ζηνπο πεξηνξηζκνύο,π.ρ., Απηό πνπ γίλεηαη είλαη όηη ε DBMS θηηάρλεη ηα δηθά ηεο νλόκαηα (π.ρ., PK_Department_22AE2995) γηα λα αλαπαξαζηαζεί ην PRIMARY KEY(Dnumber). To όλνκα ζα ρξεηαζηεί εάλ ζέινπκε λα αιιάμνπκε έλα πεξηνξηζκό αξγόηεξα κε ηελ ρξήζε ηεο εληνιήο ALTER. CREATE TABLE DEPARTMENT ( Dnumber INT NOT NULL,. CONSTRAINT PKDnumber PRIMARY KEY(Dnumber) ) 13-22

Πεξηνξηζκνί ζηελ SQL (Πεξηνξηζκόο DEFAULT) DEFAULT <value>: Οξίδεη έλα value γηα έλα γλώξηζκα δεδνκέλνπ όηη απηό δελ νξίδεηαη ξεηά θαηά ηελ εηζαγωγή κηαο πιεηάδαο ζε κηα ζρέζε. Παξάδεηγκα: CREATE TABLE LIBRARIAN /* or Micro_db.LIBRARIAN */ ( Name nvarchar(50) NOT NULL, SSN int NOT NULL PRIMARY KEY, startdate DATE NOT NULL DEFAULT GETDATE(), Salary DEC(8,2) DEFAULT 0.0 ); Πιεξνθνξίεο γηα TSQL To value κπνξεί λα είλαη NULL ή String ή scalar value Τν DEFAULT δελ εθαξκόδεηαη πάλω ζε IDENTITY, TIMESTAMP 13-23

Πεξηνξηζκνί ζηελ SQL (Πεξηνξηζκόο CHECK) CHECK (logical expression): Πεξηνξηζκόο πνπ επηβάιεη ηελ αθεξαηόηεηα νληόηεηαο πεξηνξίδνληαο ηηο δπλαηέο ηηκέο ελόο γλωξίζκαηνο βάζεη ινγηθήο ζπλζήθεο. Η ζπλζήθε εθαξκόδεηαη ζε θάζε αιιαγή (insert, update) ΓΔΝ επηηξέπεηαη αλαθνξά ζε άιιν πίλαθα κέζω ηεο CHECK Παξάδεηγκα: CREATE TABLE LIBRARIAN ( /* or Micro_db.LIBRARIAN */ Name nvarchar(50) NOT NULL, SSN int NOT NULL PRIMARY KEY, Salary DEC(8,2) DEFAULT 0.0 CHECK(Salary >= 0) ); Πιεξνθνξίεο γηα TSQL Γελ κπνξεί λα νξηζηεί γηα text, ntext, or image. Σεκεηώζηε όηη απηνί νη ηύπνη είλαη επίζεο deprecated. Γηα απηό κπνξεί λα νξηζηνύλ ωο varchar(max), nvarchar(max) θαη varbinary(max) αληίζηνηρα. 13-24

Πεξηνξηζκνί ζηελ SQL (Πεξηνξηζκόο CHECK) Παξαδείγκαηα Λεηηνπξγηώλ ηεο CHECK ζε TSQL Λεηηνπξγία Σύληαμε ζε TSQL Εμεηδίθεπζε Πεδίνπ Οξηζκνύ Month BETWEEN 1 and 12 Εμεηδίθεπζε Πεδίνπ Οξηζκνύ Shippers IN ( Ups, Fed Ex, USPS ) ύγθξηζε Πεδίνπ κε ηαζεξά Price >= 0 ύγθξηζε Πεδίωλ DeliveryDate >= OrderDate ύγθξηζε Πεδίνπ κε πλάξηεζε StartDate <= GETDATE ( ) Έιεγρνο Μνξθήο (e.g., 111-11-1111) [ ] : Οποιοζδήποηε ταρακηήρας μέζα ζε προζδιοριζμένο εύρος (π.τ. [a-f]) ή ζύνολο ([abcdef]). Έιεγρνο Μνξθήο % : 0 ή περιζζόηεροι ταρακηήρες _ : 1 οποιοζδήποηε ταρακηήρας. SSN LIKE [0-9] [0-9] [0-9] -[0-9] [0-9] [0-9] [0-9] [0-9] [0-9] email LIKE %@cs.ucy.ac.cy %@%.cy * To LIKE ζα κειεηεζεί εθηελεζηέξα ζηα πιαίζηα ηεο SQL-DML 13-25

Πεξηνξηζκνί ζηελ SQL (Εληνιέο Ελεξγνπνίεζεο Αλαθνξάο) Οη CHECK, NOT NULL, DEFAULT είλαη πεξηνξηζκνί πνπ ρξεζηκνπνηνύληαη ζην επίπεδν ελόο γλωξίζκαηνο ή κηαο ζρέζεο. Η FOREIGN KEY από ηελ άιιε αλαθέξεηαη ζε πεξηνξηζκνύο κεηαμύ δπν ζρέζεωλ. π.ρ., Π.ρ., FOREIGN KEY (MGRSSN) REFERENCES EMP(SSN) Δάλ παξαβηαζηεί ν αλαθνξηθόο πεξηνξηζκόο ηόηε ε βάζε απνξξίπηεη ηελ πξάμε (REJECT) Π.ρ., δελ κπνξνύκε λα ζβήζνπκε ηνλ Manager θάπνηνπ ππαιιήινπ ζηελ βάζε. Γηα λα εμεηδηθεύζνπκε ηελ αληίδξαζε ηεο βάζεο ζε ηέηνηεο ηξνπνπνηήζεηο ρξεζηκνπνηνύληαη θάπνηεο επηπιένλ εληνιέο ζηελ δήιωζε ελόο πίλαθα. Γεο επόκελε δηαθάλεηα 13-26

Πεξηνξηζκνί ζηελ SQL (Εληνιέο Ελεξγνπνίεζεο Αλαθνξάο) Οη Εληνιέο Ελεξγνπνίεζεο Αλαθνξάο δειώλνπλ ηι θα γίνει ζηο FK (Foreign Key) μιας ζτέζης από αλλαγή ζηο PK (Primary Key) αναθερόμενης ζτέζης. Δλεξγνπνηνύληαη αλ παξαβηαζηεί έλαο αλαθνξηθόο πεξηνξηζκόο θαηά ην ON DELETE ή ON UPDATE Employee(Ssn, Ename, Dno) Department(Dno, Dname) Λεηηνπξγίεο: FK PK NO ΑCTION: Απαγνξεύεη ηελ Αιιαγή (Default). Γηαηί λα νξίδεηαη; Γηα λα μεθαζαξίζεη ηελ πξόζεζε ηνπ ζρεδηαζηή SET NULL: Θέηεη ην FK=NULL. Πξνϋπνζέηεη όηη ε ζηήιε FK κπνξεί λα είλαη NULLABLE. SET DEFAULT: Θέηεη ην FK=DEFAULT. Πξνϋπνζέηεη όηη ην Default έρεη νξηζηεί γηα ην FK. CASCADE: Δηάδνζε Αιιαγήο ON DELETE CASCADE: Γηαγξάθεη ηελ πιεηάδα ηνπ FK ON EPL342: UPDATE Databases CASCADE: - Demetris Zeinalipour Δλεκεξώλεη (University ην FK of Cyprus) κε ην λέν PK 13-27

Πεξηνξηζκνί ζηελ SQL (Εληνιέο Ελεξγνπνίεζεο Αλαθνξάο) Δάλ ζβεζηεί ν Supervisor ηνπ ππαιιεινπ Φ ηόηε Φ.Super_ssn=NULL Δάλ αιιάμεη SSN ν Supervisor ηνπ ππαιιεινπ Φ ηόηε Φ.Super_ssn=NewSSN 13-28

Πεξηνξηζκνί ζηελ SQL (Εληνιέο Ελεξγνπνίεζεο Αλαθνξάο) Οη Δληνιέο Δλεξγνπνίεζεο Αλαθνξάο, εηδηθόηεξα ην ON DELETE CASCADE, ρξεηάδνληαη κεγάιε πξνζνρή δηόηη ε ελέξγεηα δύλαηαη λα πξνθαιέζεη αιπζίδωηεο αιιαγέο (Chaining) πνπ κπνξεί λα ζβήζεη νιόθιεξν πίλαθα! Π.ρ., Θεωξήζηε ηελ δήιωζε CREATE TABLE Employee ( SSN int NOT NULL PRIMARY KEY, PK FK Employee(Ssn, MgrSSN) MgrSSN int, FOREIGN KEY(MgrSSN) REFERENCES Employee(SSN) ON DELETE CASCADE) Καη ην ζηηγκηόηππν Εmployee = {(1,1), (2,1), (3,2), (4,3)} Σβήλνληαο ηνλ Employee.SSN=1 ζα πξνθαινύζε δηαγξαθή όιωλ ηωλ εγγξαθώλ ηνπ πίλαθα! Γηα απηό ν SQL Server δελ επηηξέπεη ηελ πην πάλω εληνιή CREATE TABLE επηζηξέθνληαο ην κήλπκα ιάζνπο Introducing FOREIGN KEY constraint 'FK Employee SSN 1CF15040' on table 'Employee' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. 13-29

Πεξηνξηζκνί ζηελ SQL (Πξνζωξηλή Απελεξγνπνίεζε Πεξηνξηζκώλ) Γλωξίδνπκε όηη ε βάζε δεδνκέλωλ είλαη ζπλερώο ζε κηα ζπλεπή (consistent) θαηάζηαζε. Γειαδή όινη νη πεξηνξηζκνί (θιεηδηνύ, αλαθνξηθήο αθεξαηόηεηαο, θηι) ηεξνύληαη κε αθξίβεηα. Κάπνηε επηζπκνύκε λα απελεξγνπνηήζνπκε πξνζωξηλά θάπνηνπο πεξηνξηζκνύο, π.ρ., εηξά Εηζαγωγήο Δεδνκέλωλ: εάλ θνξηώζνπκε πξώηα ηνπο Employee κεηά ηα Departments δελ ζέινπκε λα καο δίλεη κελύκαηα ιάζνπο (ιόγω foreign key constraint) Εηζαγωγή Παιηώλ Δεδνκέλωλ, ζέινπκε λα θνξηώζνπκε θάπνηα ΠΑΛΙΑ δεδνκέλα πνπ δελ αθνινπζνύλ θάπνην πεξηνξηζκό (π.ρ., κνξθνπνίεζε). Μπνξνύκε λα ηα θνξηώζνπκε θαη κεηά λα ελεξγνπνηήζνπκε ηνλ πεξηνξηζκό γηα ηα λέα δεδνκέλα. ΔΕΝ ΤΝΙΣΑΣΑΙ ΣΟ ΕΝΑΡΙΟ 2 ΩΣΟΟ (ΑΤΝΕΠΕΙΑ) 13-30

Πεξηνξηζκνί ζηελ SQL (Πξνζωξηλή Απελεξγνπνίεζε Πεξηνξηζκώλ) WITH CHECK WITH NOCHECK: Γειώλεη θαηά πόζν ηα δεδνκέλα ελόο πίλαθα ζα επηθπξωζνύλ (validated) ή όρη έλαληη θάπνηνπ πεξηνξηζκνύ (π.ρ., πεξηνξηζκό FOREIGN KEY ή CHECK) Επηζεκάλζεηο Οη πεξηνξηζκνί πξέπεη λα απελεξγνπνηνύληαη ΠΡΟΩΡΙΝΑ. Δελ κπνξνύκε λα απελεξγνπνηήζνπκε ην PRIMARY KEY θαη UNIQUE Ελεξγνπνίεζε/Απελεξγνπνίεζε ζα γίλεη κε ρξήζε ηεο εληνιήο ALTER. Παξαδείγκαηα Ελεξγ./Απελεξγ. Τθηζηάκελνπ Πεξηνξηζκνύ: ALTER TABLE Employee CHECK ΝΟCHECK CONSTRAINT fk_something Εηζαγωγή Νένπ Πεξηνξηζκνύ FK (ρωξίο έιεγρν παιηώλ data): : ALTER TABLE Employee WITH NOCHECK ADD CONSTRAINT FK_Employee FOREIGN KEY(SSN) REFERENCES Employee(SSN) Εηζαγωγή Νένπ Πεξηνξηζκνύ CHECK (ρωξίο έιεγρν παιηώλ data): ALTER TABLE Employee WITH NOCHECK WITH CHECK είλαη default γηα λένπο πεξηνξηζκνύο ADD CONSTRAINT CN_SSNFormat CHECK (SSN LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9] ) 13-31