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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DELETE, UPDATE, INSERT.

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

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

DELETE, UPDATE, INSERT

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Παράδειγμα Εμφιαλωτήριο. Διάγραμμα Οντοτήτων - Συσχετίσεων


SQL Data Manipulation Language

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

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

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

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

Transcript:

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

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

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

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

Παράδειγμα Δημιουργία Πινάκων 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); 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);

Παράδειγμα Δημιουργία Πινάκων CREATE TABLE lecture( subject VARCHAR(128), num_lectureint(2) NOT NULL, course_lectureint(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); CREATE TABLE registration( reg_datedate NOT NULL, reg_studentint(5) NOT NULL, reg_courseint(4) NOT NULL, PRIMARY KEY(reg_student,reg_course), CONSTRAINT CRSREGISTRATION FOREIGN KEY (reg_course) REFERENCES course(course_id) ON DELETE CASCADE ON UPDATE CASCADE, 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 Δεδομένων ΙΙ βάσεων Δεδομένων Βάσεις Δεδομένων Εισαγωγή σε σχεσιακές βάσεις δεδομένων 2 pap@ceid.gr student name lastname AM Βιβή Τζέκου 2191 unknown Λαζάρου 2192 Γιώργος Νικολάου 2193 Μαρία Αναστοπούλου 1845

Βάση Δεδομένων για τα παρδείγματα #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-παραδείγματα mysql> INSERT INTO professor(pr_name,pr_lastname,email) -> VALUES (DEFAULT,'Παπαδόπουλος','pap@ceid.gr') -> ; Query OK, 1 row affected (0.00 sec) Ή mysql> INSERT INTO professor -> VALUES(DEFAULT, 'Γεωργίου','geo@ceid.gr') -> ; Query OK, 1 row affected (0.00 sec)

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

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

Select-Limit LIMIT: καθορίζει τον αριθμό των εγγραφών που επιστρέφονται από την select. mysql> 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: Ομαδοποίηση εγγραφών σύμφωνα με το πεδίο που αναφέρεται. mysql> SELECT reg_student,count(*) FROM registration -> GROUP BY reg_student; Που επιστρέφει: reg_student count( * ) 1845 1 2191 2 2192 1 2193 1

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

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

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

Δεδομένα από πολλαπλούς πίνακες- Εμφωλευμένες select mysql> 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: Συνένωση πινάκων για το συνδυασμό πληροφοριών, κυρίως όταν έχουμε συσχέτιση. mysql> 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 κομμάτι. Η προηγούμενη join: mysql> select num_lecture,subject,title -> from lecture -> inner join course on course.course_id=lecture.course_lecture -> order by course.title; Είναι ισοδύναμη με: mysql> 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 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 μπορούμε να δώσουμε ένα ψευδώνυμο στους πίνακες που χρησιμοποιούμε (για λόγους ευχρηστίας, ευανάγνωστου κώδικα κλπ). mysql> 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_namevarchar(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); Με δεδομένα: 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 θα είναι: mysql> 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) Ή αν θέλουμε και αυτές που δεν έχουν γονική κατηγορία: mysql> 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 είναι ίδια με προηγουμένως.

Εντολή 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;