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

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

Παράδειγμα Select Introduction Group By Join Aliases.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (3)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Το Μοντέλο των Οντοτήτων Συσχετίσεων Entity Relationship Model. Νικόλαος Ζ. Ζάχαρης

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

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

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

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

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

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

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

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

DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT

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

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]

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

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]

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

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

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

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

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

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

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


ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL

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

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

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

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

Ανοικτά Ακαδημαϊκά Μαθήματα

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

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

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

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

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

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


ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL

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

ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ MYSQL

ΔΟΜΕΣ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ

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

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

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

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

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

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

ΕΝΗΜΕΡΩΣΗ ΔΕΔΟΜΕΝΩΝ. UPDATE products SET prod_fpa=19 WHERE prod_fpa=23; SELECT prod_descr,purchase,purchase_date FROM products WHERE prod_fpa=9;

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

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

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

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL)

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 5: SQL

Βάσεις Δεδομένων. Ενότητα 7.1: Structured Query Language - 1 ο Μέρος. Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

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

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

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

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

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

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

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

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

GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP.

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

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

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

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

Επαναληπτικό Φροντιστήριο. Βάσεις Δεδομένων Ι


Transcript:

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

Παράδειγμα -ER

Παράδειγμα-Σχεσιακό

Παράδειγμα Δημιουργία Πινάκων CREATE TABLE student( name VARCHAR(25) DEFAULT 'unknown' NOT NULL, lastname VARCHAR(25) DEFAULT 'unknown' NOT NULL, AM INT(5) NOT NULL AUTO_INCREMENT, PRIMARY KEY(AM) )engine='innodb'; CREATE TABLE professor( pr_name VARCHAR(25) DEFAULT 'unknown' NOT NULL, pr_lastname VARCHAR(25) DEFAULT 'unknown' NOT NULL, email VARCHAR(255) NOT NULL, PRIMARY KEY(email) )engine='innodb';

Παράδειγμα Δημιουργία Πινάκων CREATE TABLE course( title VARCHAR(255) DEFAULT 'unknown' NOT NULL, material TEXT, course_id INT(4) NOT NULL AUTO_INCREMENT, supervisor VARCHAR(255) NOT NULL, PRIMARY KEY(course_id), UNIQUE(title), CONSTRAINT SUPERVISED FOREIGN KEY (supervisor) REFERENCES professor(email) ON DELETE CASCADE ON UPDATE CASCADE )engine='innodb'; CREATE TABLE books( title VARCHAR(128) DEFAULT 'Title' NOT NULL, course_book INT(4) NOT NULL, PRIMARY KEY(title,course_book), CONSTRAINT CRSBOOK FOREIGN KEY (course_book) REFERENCES course(course_id) ON DELETE CASCADE ON UPDATE CASCADE )engine='innodb';

Παράδειγμα Δημιουργία Πινάκων CREATE TABLE lecture( subject VARCHAR(128), num_lecture INT(2) NOT NULL, course_lecture INT(4) NOT NULL, PRIMARY KEY(num_lecture,course_lecture), CONSTRAINT CRSLECTURE FOREIGN KEY (course_lecture) REFERENCES course(course_id) ON DELETE CASCADE ON UPDATE CASCADE )engine='innodb'; CREATE TABLE registration( reg_date DATE NOT NULL, reg_student INT(5) NOT NULL, reg_course INT(4) NOT NULL, PRIMARY KEY(reg_student,reg_course) )engine='innodb'; ALTER TABLE registration ADD CONSTRAINT CRSREGISTRATION FOREIGN KEY (reg_course) REFERENCES course(course_id) ON DELETE CASCADE ON UPDATE CASCADE, ADD CONSTRAINT STDNTREGISTRATION FOREIGN KEY (reg_student) REFERENCES student(am) ON DELETE CASCADE ON UPDATE CASCADE;

Βάση Δεδομένων για τα παραδείγματα professor pr_name pr_lastname email nikos unknown nikos@ceid.upatras.gr unknown Παπαδόπουλος pap@ceid.gr unknown Γεωργίου geo@ceid.gr course title material course_id supervisor Βάσεις Προχωρηµένα θέµατα 3 geo@ceid.gr εδοµένων ΙΙ βάσεων εδοµένων Βάσεις εδοµένων Εισαγωγή σε σχεσιακές βάσεις δεδοµένων student name lastname AM Βιβή Τζέκου 2191 unknown Λαζάρου 2192 Γιώργος Νικολάου 2193 Μαρία Αναστοπούλου 1845 2 pap@ceid.gr

Βάση Δεδομένων για τα παρδείγματα #2 books title course_book Databases 1 2 Databases 1 2nd volume 2 Databases 2 3 lecture subject num_lecture course_lecture Εισαγωγή σε βάσεις 1 2 Ανάλυση απαιτήσεων 2 2 ER-Σχεσιακό 3 2 Κανονικοποίηση Βάσεων 1 3 Βελτιστοποίηση Βάσεων 2 3 registration reg_date reg_student reg_course 2005-09-25 1845 2 2005-10-02 2191 2 2004-02-17 2192 3 2004-02-13 2193 3 2004-10-24 2191 3

Εισαγωγή στοιχείων σε πίνακα Η εισαγωγή μιας εγγραφής σε πίνακα γίνεται με την εντολή insert. H εντολή insert συντάσσεται ως εξής: INSERT [INTO] όνοµα_πίνακα [(όνοµα_στήλης,...)] VALUES ((τιµή),...) Όταν συμπεριλαμβάνουμε τιμές για όλες τις στήλες δεν χρειάζεται να αναφέρουμε τη λίστα των τιμών (not recommended!). Σε όποια στήλη δεν θέλουμε να προσδιορίσουμε τιμή μπορούμε αντί για τιμή να βάλουμε NULL ή DEFAULT. Αν δωθεί η τιμή NULL σε ένα πεδίο με την ιδιότητα AUTO_INCREMENT, τότε η τιμή θα υπολογιστεί αυτόματα. Μπορούμε να εισάγουμε πολλαπλές εγγραφές με μια insert ως εξής: INSERT [INTO] table VALUES (value11,value12,, value1n), (value21,value22,, value2n), (valuen1,valuen2,, valuenn);

Insert-παραδείγματα INSERT INTO professor(pr_name,pr_lastname,email) VALUES (DEFAULT,'Παπαδόπουλος','pap@ceid.gr') ; Ή INSERT INTO professor VALUES(DEFAULT, 'Γεωργίου','geo@ceid.gr') ;

Ανάκτηση πληροφορίας από τη βάση Η ανάκτηση πληροφοριών από τη βάση γίνεται με την εντολή select. Απάντηση σε μία ερώτηση select είναι ένα σύνολο εγγραφών που πληρούν τις προϋποθέσεις. Η απλούστερη σύνταξή της είναι: SELECT <λίστα ονοµάτων στήλης> FROM <λίστα πινάκων> WHERE <συνθήκη> Σε πρίπτωση που θέλουμε να επιλέξουμε όλα τα γνωρίσματα, αντί της λίστας ονομάτων της στήλης βάζουμε *. Στην WHERE πρόταση οι τελεστές είναι =,<>,>,>=,<,<=,like (με % και _). Η σύγκριση με το NULL γίνεται με τους τελεστές is NULL και is not NULL.

Select-παραδείγματα SELECT * FROM professor WHERE pr_name='unknown ; SELECT pr_lastname,email FROM professor WHERE pr_name<>'unknown'; SELECT lastname FROM student where AM>2000; SELECT * FROM course WHERE material like '%Εισαγωγή% ; SELECT num_lecture FROM lecture WHERE subject like '%ER%' AND course_lecture=2 ;

Select-Order By ORDER BY: Ταξινόμηση σύμφωνα με το πεδίο που αναφέρεται. SELECT AM,lastname FROM student ORDER BY AM ASC; Οι τελεστές ASC και DESC σημαίνουν ταξινόμηση με αύξουσα και φθίνουσα σειρά αντίστοιχα. Επιστρέφει: AM lastname 1845 Αναστοπούλου 2191 Βιβή 2192 Λαζάρου 2193 Νικολάου

Select-Limit LIMIT: καθορίζει τον αριθμό των εγγραφών που επιστρέφονται από την select. SELECT * FROM lecture ORDER BY course_lecture LIMIT 2,3; Το πρώτο νούμερο καθορίζει τη θέση εκκίνησης (με αρίθμηση που ξεκινάει από το 0) και το δεύτερο ο αριθμός των εγγραφών που θα επιστρέψει. Επιστρέφει: subject num_lecture course_lecture ER-Σχεσιακό 3 2 Κανονικοποίηση Βάσεων 1 3 Βελτιστοποίηση Βάσεων 2 3

Select-Group By GROUP BY: Ομαδοποίηση εγγραφών σύμφωνα με το πεδίο που αναφέρεται. SELECT reg_student,count(*) FROM registration GROUP BY reg_student; Επιστρέφει: reg_student count( * ) 1845 1 2191 2 2192 1 2193 2

Ενσωματωμένες συναρτήσεις Χρησιμοποιούνται συνήθως με την group by: SUM: Άθροισμα COUNT: Μέτρηση Πλήθους ΜΑΧ: Μέγιστο MIN: Ελάχιστο AVG: Μέσος όρος

Select-Having HAVING: συνθήκη που εφαρμόζεται στην GROUP BY. SELECT reg_student,count(*) FROM registration GROUP BY reg_student HAVING count(*) >1; Επιστρέφει: reg_student count( * ) 2191 2 Ενώ για άλλη συνθήκη: SELECT reg_student,count(*) FROM registration WHERE reg_date > 2005-01-01 GROUP BY reg_student;

Δεδομένα από πολλαπλούς πίνακες- Εμφωλευμένες select SELECT name, lastname FROM student WHERE AM IN (SELECT reg_student FROM registration WHERE reg_date>'2005-01-01 ); Επιστρέφει τις εγγραφές του πίνακα student των οποίων το AM είναι μέσα στο υποσύνολο που επιστρέφεται από τη δεύτερη select. Επιστρέφει: name lastname Βιβή Τζέκου Μαρία Αναστοπούλου

Δεδομένα από πολλαπλούς πίνακες- Join JOIN: Συνένωση πινάκων για το συνδυασμό πληροφοριών, κυρίως όταν έχουμε συσχέτιση. select num_lecture,subject,title from lecture inner join course on course.course_id = lecture.course_lecture order by course.title; Επιστρέφει τις εγγραφές των διαλέξεων συνδυάζοντας τον πίνακα με τον πίνακα των μαθημάτων έτσι ώστε μέσω του ξένου κλειδιού course_lecture να αποκτήσει και το όνομα του μαθήματος: num_lecture subject title 1 Εισαγωγή σε βάσεις Βάσεις εδοµένων 2 Ανάλυση απαιτήσεων Βάσεις εδοµένων 3 ER-Σχεσιακό Βάσεις εδοµένων 1 Κανονικοποίηση Βάσεων Βάσεις εδοµένων ΙΙ 2 Βελτιστοποίηση Βάσεων Βάσεις εδοµένων ΙΙ

Δεδομένα απο πολλαπλούς πίνακεςπαράθεση πινάκων Υλοποίηση με παράθεση των πινάκων στο from κομμάτι και εξίσωση των ξένων κλειδιών με τα πρωτεύοντα στο where κομμάτι. SELECT num_lecture,subject,title FROM lecture inner join course on course.course_id=lecture.course_lecture ORDER BY course.title; Η προηγούμενη join: SELECT num_lecture,subject,title FROM lecture, course WHERE course.course_id=lecture.course_lecture ORDER BY course.title; Είναι ισοδύναμη με:

Είδη Join: INNER JOIN: μια εγγραφή συμπεριλαμβάνεται μόνο αν υπάρχει εγγραφή που της «ταιριάζει». LEFT JOIN: Οι εγγραφές του αριστερού πίνακα συμπεριλαμβάνονται πάντα, ανεξάρτητα από το αν υπάρχει εγγραφή στο δεξιό πίνακα που να τους ταιριάζει. RIGHT JOIN: Ομοίως για τον δεξιό πίνακα.

Ερώτηση σε Μ-Ν Με χρήση μόνο των JOIN: SELECT name, lastname,title FROM student INNER JOIN registration ON AM = reg_student INNER JOIN course ON course_id = reg_course; Αν χρησιμοποιούσαμε left join σε αυτή την περίπτωση κάθε φοιτητής θα συμπεριλαμβανόταν στο σύνολο ανεξάρτητα από το αν έχει εγγραφεί σε μάθημα ή όχι. name lastname title Βιβή Τζέκου Βάσεις εδοµένων Βιβή Τζέκου Βάσεις εδοµένων ΙΙ unknown Λαζάρου Βάσεις εδοµένων ΙΙ Γιώργος Νικολάου Βάσεις εδοµένων ΙΙ Μαρία Αναστοπούλου Βάσεις εδοµένων

Aliases Στην select μπορούμε να δώσουμε ένα ψευδώνυμο στους πίνακες που χρησιμοποιούμε (για λόγους ευχρηστίας, ευανάγνωστου κώδικα κλπ). Παράδειγμα: SELECT num_lecture,subject,title FROM lecture as a, course as b WHERE b.course_id=a.course_lecture ORDER BY b.title;

Χρήση aliases για join πίνακα με τον εαυτό του Χρησιμοποιείται συνήθως στις αναδρομικές σχέσεις. Για παράδειγμα αν έχουμε τον πίνακα CREATE TABLE category( cat_id INT NOT NULL AUTO_INCREMENT, cat_name VARCHAR(10) NOT NULL, cat_parent INT, PRIMARY KEY(cat_id), FOREIGN KEY (cat_parent) REFERENCES category(cat_id) ON DELETE SET NULL ON UPDATE CASCADE )engine='innodb'; Με δεδομένα: mysql> select * from category; +--------+------------+------------+ cat_id cat_name cat_parent +--------+------------+------------+ 1 sports NULL 2 football 1 3 basketball 1 4 art NULL 5 painting 4 6 dancing 4 +--------+------------+------------+ 6 rows in set (0.00 sec)

Χρήση aliases για join πίνακα με τον εαυτό του #2 Θέλουμε να επιλέξουμε όλες τις κατηγορίες και το όνομα των γονικών τους. Η select θα είναι: SELECT a.cat_name as Name, b.cat_name as Parent FROM category as a INNER JOIN category as b ON b.cat_id = a.cat_parent; Αποτέλεσμα: +------------+--------+ Name Parent +------------+--------+ football sports basketball sports painting art dancing art +------------+--------+ 4 rows in set (0.02 sec)

Χρήση aliases για join πίνακα με τον εαυτό του #2 Ή αν θέλουμε και αυτές που δεν έχουν γονική κατηγορία: SELECT a.cat_name as Name, b.cat_name as Parent FROM category as a LEFT JOIN category as b ON b.cat_id = a.cat_parent; Αποτέλεσμα: +------------+--------+ Name Parent +------------+--------+ sports NULL football sports basketball sports art NULL painting art dancing art +------------+--------+ 6 rows in set (0.00 sec) Σημειώστε πως aliases δίνονται και στις στήλες που επιστρέφονται!

Update UPDATE: Ανανέωση μιάς εγγραφής Σύνταξη: UPDATE όνοµα_πίνακα SET στήλη=τιµή,... WHERE συνθήκη Η σύνταξη της where είναι ίδια με προηγουμένως. Παράδειγμα: UPDATE Professor SET pr_name='νίκος', pr_lastname=' ασκαλάκης WHERE pr_lastname='unknown';

Εντολή Delete DELETE: Διαγραφή μιας εγγραφής Σύνταξη: DELETE FROM πίνακας [where συνθήκη] [LIMIT number]; Παραδείγματα // διαγράφει όλες τις εγγραφές DELETE FROM professor; // ιαγράφει του καθηγητές µε επίθετο που περιέχει τον όρο Γεωργίου DELETE FROM professor where pr_lastname like %Γεωργίου% ;

Εντολή ALTER Μας δίνει την δυνατότητα να αλλάζουμε την δομή ενός πίνακα. Σύνταξη ALTER TABLE όνομα-πινακα αλλαγή [,αλλαγή...]; Παραδείγματα: Alter table student modify name varchar(30) not null; Alter table professor drop pr_name, add address varchar(70) not null;