ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #6 Διδάσκων: Γιάννης Θεοδωρίδης Συντάκτης Κειμένου: Βαγγέλης Κατσικάρος Φεβρουάριος 2008
Περιεχόμενα JOIN συνέχεια DELETE UPDATE DROP ALTER check assertion VIEWs
City( ID, Name, CountryCode, District, Population) Country( Code, Name, Continent, Region,...) JOINs SELECT t1.name, t2.name FROM (SELECT Name, Code FROM Country WHERE Continent ='Asia') AS t1 RIGHT OUTER JOIN (SELECT Name, CountryCode FROM City WHERE Population > 4000000) AS t2 ON t2.countrycode = t1.code; http://dev.mysql.com/doc/refman/5.0/en/join.html
City( ID, Name, CountryCode, District, Population) Country( Code, Name, Continent, Region,...) JOINs SELECT t1.name, t2.name FROM (SELECT Name, Code FROM Country WHERE Continent ='Asia') AS t1 LEFT OUTER JOIN (SELECT Name, CountryCode FROM City WHERE Population > 4000000) AS t2 ON t2.countrycode = t1.code;
Δεν υπάρχει στην MySQL 5.0 FULL OUTER JOIN JOINs Μπορεί όμως να εξομειωθεί με την χρήση UNION (το παρακάτω όμως δεν μας δίνει τις σειρές του INNER JOIN...) SELECT t1.name, t2.name FROM (SELECT Name, Code FROM Country WHERE Continent ='Asia') AS t1 RIGHT OUTER JOIN (SELECT Name, CountryCode FROM City WHERE Population > 4000000) AS t2 ON t2.countrycode = t1.code UNION SELECT t1.name, t2.name FROM (SELECT Name, Code FROM Country WHERE Continent ='Asia') AS t1 LEFT OUTER JOIN (SELECT Name, CountryCode FROM City WHERE Population > 4000000) AS t2 ON t2.countrycode = t1.code;
City( ID, Name, CountryCode, District, Population) CountryLanguage(CountryCode, Language, IsOfficial, Percentage ) JOINs SELECT t1.language, t2.name FROM (SELECT Language, CountryCode FROM CountryLanguage WHERE Percentage > 50) AS t1 NATURAL JOIN (SELECT Name, CountryCode FROM City WHERE Population > 4000000) AS t2 ;
Χρησιμοποιώντας το DELETE διαγράφονται γραμμές από τους πίνακες. DELETE DELETE [LOW_PRIORITY][QUICK][IGNORE] FROM tbl_name [WHERE where_condition] [ORDER BY...] [LIMIT row_count] http://dev.mysql.com/doc/refman/5.0/en/delete.html
Διαγραφή όλων των γραμμών ενός πίνακα DELETE DELETE FROM tbl_name; Διαγραφή ορισμένων γραμμών ενός πίνακα DELETE FROM City WHERE Population = 150; 1) Πως θα διαγράψω τις πόλεις που ξεκινούν από W; 2) Πως θα διαγράψω την πόλη με τον μικρότερο πληθυσμό;
Χρησιμοποιώντας το UPDATE αλλάζουμε το περιεχόμενο των γραμμών ενός πίνακα. UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2]... [WHERE where_condition] [ORDER BY...] [LIMIT row_count] UPDATE http://dev.mysql.com/doc/refman/5.0/en/update.html
Διαγραφή όλων των γραμμών ενός πίνακα UPDATE SELECT * FROM City WHERE Name LIKE 'Yaren'; UPDATE City SET Population = 600 WHERE Name LIKE 'Yaren'; SELECT * FROM City WHERE Name LIKE 'Yaren'; UPDATE City SET Population = Population + 10 WHERE Name LIKE 'Yaren'; SELECT * FROM City WHERE Name LIKE 'Yaren'; 1) Πως θα αυξήσω κατά 50 τον πληθυσμό των πόλεων που αρχίζουν από Z; 2) Πως θα αλλάξω το όνομα της πόλης Bantam σε Bantamm ;
Χρησιμοποιώντας το DROP σβήνουμε στοιχεία (βάσεις, πίνακες, στήλες κτλ) από τις ΒΔ. DROP DROP {DATABASE SCHEMA} [IF EXISTS] db_name DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name]... [RESTRICT CASCADE] DROP INDEX index_name ON tbl_name 1) Δημιουργείστε μία ΒΔ με το όνομα example1 και τον πίνακα t(col1). Διαγράψτε πρώτα τον πίνακα και μετά την βάση. http://dev.mysql.com/doc/refman/5.0/en/data-definition.html
ALTER Χρησιμοποιώντας το ALTER αλλάζουμε στοιχεία μίας βάσης ή ενός πίνακα. ALTER {DATABASE SCHEMA} [db_name] alter_specification... alter_specification: [DEFAULT] CHARACTER SET [=] charset_name [DEFAULT] COLLATE [=] collation_name ALTER [IGNORE] TABLE tbl_name alter_specification [, alter_specification]... alter_specification: table_option... ADD DROP... http://dev.mysql.com/doc/refman/5.0/en/data-definition.html
ALTER 1) Δημιουργείστε μία ΒΔ με το όνομα example1 και τον πίνακα t(col1). Μετά προσθέστε ένα PK που να περιλαμβάνει την στήλη col1. Μετά διαγράψτε το PK.
http://dev.mysql.com/doc/refman/5.0/en/create-table.html check The CHECK clause is parsed but ignored by all storage engines.
VIEWs CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED MERGE TEMPTABLE}] [DEFINER = { user CURRENT_USER }] [SQL SECURITY { DEFINER INVOKER }] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED LOCAL] CHECK OPTION] πχ CREATE VIEW test.v AS SELECT * FROM t; http://dev.mysql.com/doc/refman/5.0/en/create-view.html
1) Δημιουργείστε μία ΒΔ με το όνομα example1 και τον πίνακα t(quantity, price). Εισάγετε μια γραμμή ενδεικτικά πχ (50, 3) VIEWs Δημιουργείστε ένα VIEW που εμφανίζει όες τις γραμμές του πίνακα (όλες τις στήλες). Δημιουργείστε ένα δεύτερο VIEW που εμφανίζει την τιμή, την ποσότητα και την συνολική αξία της ποσότητας που είναι καταχωρημένη.