MySQL Εργαστήριο #1 Εισαγωγή στο ΣΔΒΔ MySQL Νίθνο Γηαηξάθνο, Βαγγέιεο Καηζηθάξνο Δξγαζηήξην Πιεξνθνξηαθώλ Σπζηεκάησλ, Τκήκα Πιεξνθνξηθήο, Παλεπηζηήκην Πεηξαηά (http://infolab.cs.unipi.gr)
Περιεχόμενα Γεληθά Δηζαγσγή ζην ΣΓΒΓ MySQL Γλσξηκία κε ην πεξηβάιινλ ηεο MySQL Γεκηνπξγία ΒΓ 2
Περιεχόμενα Γεληθά Δηζαγσγή ζην ΣΓΒΓ MySQL Γλσξηκία κε ην πεξηβάιινλ ηεο MySQL Γεκηνπξγία ΒΓ 3
Διαδικασία Ανάπτυξης ΒΔ Δημιουργία ΒΔ Σπιινγή Απαηηήζεσλ Reality Οληόηεηεο Σπζρεηίζεηο Ε R Create database..., Create table.., Primary keys.., Foreign keys.. Απινί Πεξηνξηζκνί: -Check -Not null -Unique Σύλζεηνη Πεξηνξηζκνί: -Assertions -Triggers Table 1 RDBMS (MySQL) Table n
Διαδικασία Ανάπτυξης ΒΔ Διαχείριση Δεδομένων Απαηηήζεηο Δθαξκνγώλ.. Δηζαγσγή Γεδνκέλσλ: Insert into tbl values ( ) Αλάθηεζε Γεδνκέλσλ: Select A1, An From tbl1,.. tbln Where P1,,Pn Table 1 RDBMS (MySQL) Table n Τξνπνπνίεζε Γεδνκέλσλ: Delete from tbl where P1, Pn Update tbl set value=vl where P1,,Pn
Relational DataBase Management System Δμεηδηθεπκέλν ινγηζκηθό γηα ηε δεκηνπξγία θαη απνδνηηθή δηαρείξηζε κεγάινπ όγθνπ δεδνκέλσλ Μόληκε απνζήθεπζε θαη επεμεξγαζία δεδνκέλσλ γηα κεγάιν ρξνληθό δηάζηεκα, κε «αζθάιεηα» Αθαηξεηηθή απεηθόληζε θαη νξγάλσζε ησλ δεδνκέλσλ ππό ηε κνξθή ζρέζεσλ - πηλάθσλ Παξνρή πξνγξακκαηηζηηθήο δηεπαθήο κέζσ κηαο πςεινύ επηπέδνπ γιώζζαο (Structured Query Language - SQL) Απνδνηηθή νξγάλσζε θαη αλάθηεζε ησλ δεδνκέλσλ κέζσ επξεηεξίσλ, βειηηζηνπνίεζεο εξσηεκάησλ* Γηαρείξηζε Γνζνιεςηώλ* *(ζε επόκελν εμάκελν)
Μοντέλο Πελάτη - Εξυπηρετητή Δμππεξεηεηήο - Server Τν πξόγξακκα πνπ πξνζθέξεη κηα ππεξεζία Πεξηκέλεη αηηήζεηο γηα εμππεξέηεζε Γίλεη απαληήζεηο ζε απηόλ πνπ δήηεζε ηελ εμππεξέηεζε Πειάηεο Client Εεηά εμππεξέηεζε Λακβάλεη ηελ απάληεζε από ηελ εμππεξεηεηή
Μοντέλο Πελάτη - Εξυπηρετητή
Μοντέλο Πελάτη - Εξυπηρετητή localhost
Περιεχόμενα Γεληθά Δηζαγσγή ζην ΣΓΒΓ MySQL Γλσξηκία κε ην πεξηβάιινλ ηεο MySQL Γεκηνπξγία ΒΓ 10
MySQL RDBMS Web: http://www.mysql.com/ Αγνξάζηεθε από ηελ Sun (16 Ιαλ 2008) θαη ζηελ ζπλέρεηα ε Sun αγνξάζηεθε από ηελ Oracle (20 Απξ 2009). Open Source. Άδεηα GPL + Commercial Licence Έθδνζεηο: MySQL Enterprise MySQL GA (Generally Available): Community Server Έθδνζεηο Current Release: MySQL 5.1 Development: MySQL 5.4
MySQL - Documentation Documentation, άξζξα. πιεξνθνξίεο θηι. http://dev.mysql.com/doc/ MySQL Reference Manual : γηα ηελ έθδνζε 5.1: http://dev.mysql.com/doc/refman/5.1/en/index.html Forums, Mailing Lists Σην site ηεο MySQL Σην Internet Tutorials Σην manual ηεο MySQL Σην Internet
MySQL - Programs Server GUI Tools Client mysqld mysqld_safe mysql mysqladmin mysqldump mysql-proxy Web clients Δγθαηάζηαζε mysql_install_feb10.pdf mysql_user_nov07.pdf MySQL Workbench MySQL Administrator MySQL Query Browser Connectors/APIs ODBC, JDBC C, C++, PHP, Perl, Python phpmyadmin
MySQL Logging in Γηα λα θάλνπκε log in ζηνλ server ρξεηαδόκαζηε: Σηνηρεία ηνπ server γηα λα κπνξέζεη λα ηνλ βξεί ν client hostname ή IP port Σηνηρεία ρξήζηε γηα ηελ απζεληηθνπνίεζε ζηνλ server user name / dbuser γηα ην lab210 password / dbpassword γηα ην lab210 Τηκέο: localhost γηα ην pc καο / kittie γηα ην lab210 3306 (ε πξνεπηιεγκέλε ζύξα) root (ππεξρξήζηεο, έρεη όια ηα δηθαηώκαηα)
MySQL Logging in Σηνλ command line client shell> mysql --host=kittie --user=dbuser p Σηνλ Query Browser
Περιεχόμενα Γεληθά Δηζαγσγή ζην ΣΓΒΓ MySQL Γλσξηκία κε ην πεξηβάιινλ ηεο MySQL Γεκηνπξγία ΒΓ 16
Γνωριμία με το περιβάλλον Σην shell shell> mysql -help shell> mysql version ή mysql V Μεηά ην login mysql> help mysql> SELECT VERSION(), CURRENT_DATE; mysql> SELECT (4+1), SIN(PI()/4); 17
Γνωριμία με το περιβάλλον Αο ππνζέζνπκε πσο ζέινπκε λα δνύκε ηηο δηαζέζηκεο βάζεηο δεδνκέλσλ πνπ ππάξρνπλ ζην ζύζηεκα. Θα ρξεζηκνπνηήζνπκε ηελ εληνιή SHOW DATABASES Κάζε εληνιή πνπ εηζάγεηαη πξέπεη λα ηειεηώλεη κε semicolon (ειιεληθό εξσηεκαηηθό) ; SHOW DATABASES;
Γνωριμία με το περιβάλλον mysql> show databases; +--------------------+ Database +--------------------+ information_schema cms joomla mysql phpbb2 test +--------------------+ ( 0.00sec ) 6 rows in set mysql>
Γνωριμία με το περιβάλλον Γηάθξηζε κεηαμύ πεδώλ / θεθαιαίσλ; mysql> SHOW DATABASES; mysql> show DaTaBaSeS; Δληνιή ζε πνιιαπιέο γξακκέο mysql> show -> -> databases; Αθύξσζε εληνιήο mysql> show -> -> databases -> \c
Εισαγωγή Σχολίων Από ην ζύκβνιν κέρξη ην ηέινο ηεο γξακκήο: # -- Αλάκεζα ζηα ζύκβνια: /* */ Μεηαθεξζηκόηεηα: Αλάκεζα ζηα αθόινπζα ζύκβνια : /*! */ ηνπνζεηνύληαη εληνιέο πνπ απνηεινύλ επεθηάζεηο ηεο MySQL Γνθηκέο mysql> SHOW DATABASES # blah; mysql> SHOW DATABASES -- blah; mysql> SHOW DATABASES /* blah */; mysql> /* SHOW DATABASES */ ; mysql> /*! SHOW DATABASES */ ; 21
Δεσμευμένες Λέξεις Υπάξρνπλ ιέμεηο εθθξάζεηο πνπ ρξεζηκνπνηνύληαη από ην ζύζηεκα θαη ρξεηάδνληαη πξνζνρή όηαλ ρξεζηκνπνηνύληαη σο πξνζδηνξηζηέο πηλάθσλ ή ζηειώλ CREATE DROP DATABASE TABLE SELECT Ωζηόζν κπνξνύλ λα ρξεζηκνπνηεζνύλ εθόζνλ εκθαληζηνύλ εληόο backtick ` (πάλσ από ην πιήθηξν Tab) create database `database`; Πξνζνρή ζηε δηάθξηζε κεηαμύ backtick ` θαη single quote 22
Κυριολεκτικά Τα θπξηνιεθηηθά (literal values) πεξηιακβάλνπλ Αιθαξηζκεηηθά (Strings) Αξηζκνί (Numbers) Γεθαεμαδηθέο ηηκέο (Hexadecimal values) Λνγηθέο ηηκέο (Boolean) Απνπζία Γεδνκέλσλ (NULL ή \N[case senitive]) 23
Κυριολεκτικά Αλφαριθμητικά Έλα string είλαη κηα ζεηξά από bytes ή ραξαθηήξσλ θιεηζκέλα ζε κνλό εηζαγσγηθό ' ή δηπιό εηζαγσγηθό ". Π.ρ "example", example example Γνθηκή mysql> SELECT 'example'; mysql> SELECT "example"; Μέζα ζε έλα string θάπνηνη ραξαθηήξεο έρνπλ εηδηθό λόεκα. \' A single quote character. \" A double quote character. \n A newline (linefeed) character. \t A tab character. \\ A backslash character 24
Κυριολεκτικά Αριθμοί, Λογικές Τιμές Αθέξαηνη, δεθαδηθνί: mysql> SELECT 15, 0, -32, +50 ; mysql> SELECT 15.52, -5.7, +32.8, -32.68e+10; Γεθαεμαδηθέο ηηκέο Boolean mysql> SELECT x'4d'; mysql> SELECT x'4d7953514c'; mysql> SELECT 0x4D7953514C; mysql> SELECT HEX('MySQL'); mysql> SELECT TRUE, true, FALSE, false; 25
MySQL Storage Engines mysql> show engines; ή mysql> show engines \G Γηαθνξέο Storage Engines: Ταρύηεηα ιόγσ ηεο ύπαξμεο ή κε θάπνησλ ραξαθηεξηζηηθώλ πρ transactions Άιιεο Storage Engines έρνπλ ηελ δπλαηόηεηα κόλν λα γξάςνπλ θαη όρη λα ζβήζνπλ δεδνκέλα.
Περιεχόμενα Γεληθά Δηζαγσγή ζην ΣΓΒΓ MySQL Γλσξηκία κε ην πεξηβάιινλ ηεο MySQL Γεκηνπξγία ΒΓ 27
Δημιουργία μιας πρώτης ΒΔ CREATE {DATABASE SCHEMA} [IF NOT EXISTS] db_name [create_specification]... create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name Τη ζεκαίλνπλ: CAPITAL SQL keywords small: further analysis small substituted (for example database & table names) [ ] optional words or clauses { } necessarily pick one of the words of set separation of alternatives... repetition or omission 28
Δημιουργία μιας πρώτης ΒΔ CREATE {DATABASE SCHEMA} [IF NOT EXISTS] db_name [create_specification]... create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name Τη ζεκαίλνπλ: CAPITAL SQL keywords small: further analysis small substituted (for example database & table names) [ ] optional words or clauses { } necessarily pick one of the words of set separation of alternatives... repetition or omission 29
Δημιουργία μιας πρώτης ΒΔ CREATE {DATABASE SCHEMA} [IF NOT EXISTS] db_name [create_specification]... create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name Τη ζεκαίλνπλ: CAPITAL SQL keywords small: further analysis small substituted (for example database & table names) [ ] optional words or clauses { } necessarily pick one of the words of set separation of alternatives... repetition or omission 30
Δημιουργία μιας πρώτης ΒΔ CREATE {DATABASE SCHEMA} [IF NOT EXISTS] db_name [create_specification]... create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name Τη ζεκαίλνπλ: CAPITAL SQL keywords small: further analysis small substituted (for example database & table names) [ ] optional words or clauses { } necessarily pick one of the words of set separation of alternatives... repetition or omission 31
Δημιουργία μιας πρώτης ΒΔ CREATE {DATABASE SCHEMA} [IF NOT EXISTS] db_name [create_specification]... create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name Τη ζεκαίλνπλ: CAPITAL SQL keywords small: further analysis small substituted (for example database & table names) [ ] optional words or clauses { } necessarily pick one of the words of set separation of alternatives... repetition or omission 32
Δημιουργία μιας πρώτης ΒΔ CREATE {DATABASE SCHEMA} [IF NOT EXISTS] db_name [create_specification]... create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name Τη ζεκαίλνπλ: CAPITAL SQL keywords small: further analysis small substituted (for example database & table names) [ ] optional words or clauses { } necessarily pick one of the words of set separation of alternatives... repetition or omission 33
Δημιουργία μιας πρώτης ΒΔ CREATE {DATABASE SCHEMA} [IF NOT EXISTS] db_name [create_specification]... create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name Τη ζεκαίλνπλ: CAPITAL SQL keywords small: further analysis small substituted (for example database & table names) [ ] optional words or clauses { } necessarily pick one of the words of set separation of alternatives... repetition or omission 34
Δημιουργία μιας πρώτης ΒΔ CREATE {DATABASE SCHEMA} [IF NOT EXISTS] db_name [create_specification]... create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name Τη ζεκαίλνπλ: CAPITAL SQL keywords small: further analysis small substituted (for example database & table names) [ ] optional words or clauses { } necessarily pick one of the words of set separation of alternatives... repetition or omission 35
Δημιουργία μιας πρώτης ΒΔ Παξάδεηγκα mysql>create database if not exists your_sn -> character set=latin1; mysql> show databases; 36
Τροποποίηση ΒΔ ALTER {DATABASE SCHEMA} [db_name] alter_specification... alter_specification: [DEFAULT] CHARACTER SET [=] charset_name [DEFAULT] COLLATE [=] collation_name mysql> alter database your_sn -> character set=utf8; mysql> USE your_sn; 37
Παραδείγματα Δημιουργίας Πινάκων Παξάδεηγκα (εθηελέζηεξε κειέηε ζην επόκελν εξγαζηήξην) mysql > CREATE TABLE table1 > (col1 INT, > col2 INT, > col3 INT, > PRIMARY KEY(col1)) ENGINE=InnoDB; mysql > CREATE TABLE table2 > (col1 INT, > col2 varchar(50) NOT NULL, > col3 INT, > PRIMARY KEY(col1), > FOREIGN KEY (col3) REFERENCES table1(col1) ) > ENGINE=InnoDB; mysql> SHOW TABLES; mysql> DESCRIBE table1; 38
Διαγραφή ΒΔ αιιά πξηλ ηε δηαγξαθή, αο θξαηήζνπκε back up: shell> mysqldump hlocalhost -udbuser -p your_sn > back_up_filename DROP {DATABASE SCHEMA} [IF EXISTS] db_name mysql> Drop database if exists your_sn; mysql> exit; 39
Πηγές περαιτέρω μελέτης http://dev.mysql.com/doc/refman/5.1/en/programs-overview.html http://dev.mysql.com/tech-resources/articles/proxy-gettingstarted.html http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html http://dev.mysql.com/doc/refman/5.1/en/mysql-command-options.html http://dev.mysql.com/doc/refman/5.1/en/connecting-disconnecting.html http://dev.mysql.com/doc/refman/5.1/en/entering-queries.html http://dev.mysql.com/doc/refman/5.1/en/show-databases.html http://dev.mysql.com/doc/refman/5.1/en/create-database.html http://dev.mysql.com/doc/refman/5.1/en/drop-database.html http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html http://dev.mysql.com/doc/refman/5.1/en/create-table.html 40