1 / 28

SŘBD MySQL

SŘBD MySQL. Nejen praktická část Delfín se jmenuje Sakila. Osnova. Motivace Vlastnosti Architektura a zpracovatel é Instalace a konfig. instance MySQL Způsoby práce s MySQL Datové typy Jazyk pro definici dat - JDD Jazyk pro modifikaci dat - JMD Import dat Administrace, Odkazy.

lucine
Télécharger la présentation

SŘBD MySQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SŘBD MySQL Nejen praktická část Delfín se jmenuje Sakila

  2. Osnova • Motivace • Vlastnosti • Architektura a zpracovatelé • Instalace a konfig. instance MySQL • Způsoby práce s MySQL • Datové typy • Jazyk pro definici dat - JDD • Jazyk pro modifikaci dat - JMD • Import dat • Administrace, Odkazy

  3. Motivace • Rychlý, spolehlivý a bezpečný, jednoduchý • Cena? • MySQL Enterprise basic €479 /Server/Year • Vývojové nástroje • Dobrá dokumentace • Množství uživatelů • Pokračující vývoj • Různé platformy- přenositelnost • Bezpečnost

  4. Vlastnosti • Je to relační SŘBD • Je otevřený (používat a modifikovat)- the GPL (GNU General Public License) • Multivláknový SQL server, který podporuje různé koncové zpracovatele, několik různých klientských programů, knihoven, administrativní nástroje, a hodně programových prostředí (APIs) • architektura client-server or embeded

  5. Vlastnosti 2 • APIs for C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and Tcl • Lokalizace – chybová hlášení, podporuje různé znakové sady – i pro třídění a po-rovnávání

  6. Vlastnosti 3 • Od verze 5.0 podporuje • Uložené procedury (stored procedures) • Pohledy (views) • Kurzory (cursor) • Transakce • Triggery (spouštěče) Zpracovatel Innodb - poskytuje kompletní ACID transakce (atomic, consistent, isolated, durable) s potvrzování transakcí, rollback, crash recovery ... referenční integrita

  7. Connectors: Native C API, JDBC, ODBC, .NET, PHP, Python, Perl, Ruby, VB MySQL Servers Connection pool Authentication, Thread Reuse, Connection Limits, Check Memory, Caches Management Services & Utilities Backup & Reco-very, Security, Replication, Cluster, Adminnistration, Configuration,Mig-ration & Meta-data SQL InterfaceDDL, DML, uložené proc., pohledy, triggery Parser Query translation, Object privilege Optimizer Access Paths, Statistics Caches&Buffers Storage Engines Memory, Index & Storage Management InnoDB Archive Federated Memory Merge Cluster BDB MyISAM File System NTFS - NFS, SAN - NAS Files & Logs

  8. Porovnání zpracovatelů • MyISAM: každá MyISAM tabulka je uložena ve 3 souborech .frm (table format), .MYD (data), .MYI (indexy), uloží 232 vět, max. 64 indexů v tabulce - index spotřebovává disk. prostor - (key_length+4)/0.67, spočteno za všechny indexy. Podporuje fultextové vyhledávání. • InnoDB: umožňuje transakce, definovat cizí klíče – vhodný pro velké databáze s velkým množstvím přístupů • Federated : pro zpracování dat na vzdálených serverech

  9. InstalaceMySQL • MySQL 5.1 je současná verze (Release Candidate release). • MySQL 5.0 je současná stabilní (stable production-quality - Generaly available) verze. • Při instalaci z bin. balíčku s instalátorem • vyberete typ instalace(Typical, Complete, Custom) a spustíte instalaci • instalátor nastaví registry • změní menu Start • vytoří adresář. strukturu MySQL v Program Files a nakopíruje soubory

  10. Konfigurace instance MySQL serveru • Vyberete typ konfigurace (detailní, standardní) • Vyberete typ serveru (pro vývoj (min.memo), server (medium), dedicated server (všechnu paměť pro mysql) • Zvolíte použití databáze (vícefunkční, transakční aplikace, bez transakcí) ...... • Nakonec zadáte heslo správce

  11. Způsoby práce s MySQL • MySQL Command Line Client (CLC) • Dávkové zpracování dat • Mysql Administrator • Query Browser • phpMyAdmin • Příkazy v hostitelském jazyce • ...

  12. 1/ MySQL Command Line Client příkazový řádek

  13. 2/ Dávkové zpracování dat Proč dávkovézpracování? • Opakované pravidelné jetí skriptů • Jednodušší úprava překlepu • Distribuce skriptů shell>mysql -h host -u user -p < script.sql Enter password: ******** Postupné prohlížení dlouhých výstupů shell> mysql < script.sql | more Uložení výstupu do souboru shell> mysql < script.sql > mysql.out -v -v -v … zobrazí i vykonávané příkazy ve výstupu -t … stejný formát výstupu jako u interaktivního módu

  14. 4/ MYSQL ADMINISTRATOR

  15. 5/ MySQL Query Browser

  16. 6/ PHPMYADMIN

  17. 7/ Příkazy MySQL v PHP Soubor.php ... <? $spo = mysql_pconnect("server","user","heslo"); if ( !$spo ){ echo "\n<b>Chyba: </b>Nepodařilo se připojení k databázovému serveru\n"; exit(); } $db = mysql_select_db("jméno_databaze"); if ( !$db ) { echo "\n<b>Chyba: </b>Nepodařilo se vybrat databázi\n"; exit(); } $rec = mysql_query("SELECT * FROM ucitel WHERE jmeno <> '' ORDER BY prijmeni"); if( !$rec ) { echo "\n<b>Chyba: </b>",MySQL_Error(),"\n"; exit(); } $n = mysql_num_rows($rec); if( $n == 0 ) { echo "<b>Nevybrala se zadna veta!</b>\n"; exit(); } ?> ...

  18. 7/ Příkazy MySQL v PHP 2 <table border=1>    <tr><th>Katedra</th> <th>Jméno</th>      <th>Telefon</th> <th>Místnost</th>   <th>Zrušení</th> <th>Opravení</th></tr> <? for($i = 0; $i < $n; $i++) {$r = mysql_fetch_object($man); ?>    <tr><td> <? echo $r->katedra ?></td>    <td><? echo "$r->prijmeni $r->jmeno";  ?></td> <td><? echo " $r->telefon \n"; </td> <td><? echo $r->mistnost ?></td> <td><ahref="javascript:do_delete('<? echo "$r->id', '$r->prijmeni"; ?>')">Zrušit</a></td><td><ahref="fdemo-pri.php3?DBid=<? echo $r->id ?>"> Opravit</a></td>   </tr><?   } /* konec cyklu for */ ?>   </table>

  19. Datové typy v MySQL BIT[(length)] TINYINT[(length)] SMALLINT[(length)] MEDIUMINT[(length)] INT[(length)] INTEGER[(length)] BIGINT[(length)] REAL[(length,decimals)] DOUBLE[(length,decimals)] FLOAT[(length,decimals)] DECIMAL(length,decimals) NUMERIC(length,decimals) DATE | TIME | TIMESTAMP DATETIME | YEAR CHAR(length) VARCHAR(length) BINARY(length) VARBINARY(length) TINYBLOB | BLOB MEDIUMBLOB LONGBLOB TINYTEXT | TEXT MEDIUMTEXT | LONGTEXT ENUM(value1,value2,value3,...) SET(value1,value2,value3,...)

  20. JDD – definice cizích klíčů CREATE TABLE test.pobocka ( ono char(1) NOT NULL PRIMARY KEY , addressvarchar(35), city varchar(15), ... ); INSERT INTO test.pobocka VALUES('A','Ostrava'); INSERT INTO test.pobocka VALUES('B','Brno'); CREATE TABLE test.zakaznik ( cnochar(5) NOT NULL PRIMARY KEY, companyvarchar(35), ... addressvarchar(30), ono char(1) REFERENCES pobocka, ... ); INSERT INTO test.zakaznik VALUES('A1234','VSB Ostrava','A'); INSERT INTO test.zakaznik VALUES('B1111','VSB Ostrava-Poruba','B'); INSERT INTO test.zakaznik VALUES('C2222','Ostravska Univerzita','C'); Funguje jako poznámka - nedělá nic !!!

  21. JDD definice cizích klíčů 2 mysql> show create table zakaznik\G // vypis definice tabulky *************************** 1. row *************************** Table: zakaznik Create Table: CREATE TABLE `zakaznik` ( `cno` char(5) NOT NULL, `company` varchar(35) default NULL, `ono` char(1) default NULL, PRIMARY KEY (`cno`), KEY `FK_pobocka` (`ono`), CONSTRAINT `FK_pobocka` FOREIGN KEY (`ono`) REFERENCES `pobocka` (`ono`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec) mysql> INSERT INTO test.zakaznik VALUES('A1234','VSB Ostrava','A'); Query OK, 1 row affected (0.05 sec) mysql> INSERT INTO test.zakaznik VALUES('B1111','VSB Ostrava-Poruba','B'); Query OK, 1 row affected (0.03 sec) mysql> INSERT INTO test.zakaznik VALUES('C2222','Ostravska Univerzita','C'); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test/zakaznik`, CONSTRAINT `FK_pobocka` FOREIGN KEY (`ono`) REFERENCES `pobocka` (`ono`) Zpracovatel Innodb

  22. Cizí klíče a InnoDB [CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...) REFERENCES tbl_name (index_col_name, ...) [ON DELETE {RESTRICT |CASCADE |SET NULL |NO ACTION}] [ON UPDATE {RESTRICT |CASCADE |SET NULL|NO ACTION}] • Tabulky musí existovat, • blob a text nelze definovat jako cizí klíče • Nedovolí vložit/aktualizovat větu s hodnotou, která není v hlavní tabulce • RESTRICT(NO ACTION)- nedovolí smazat/aktualizovat záznamy v hlavní tabulce, když existují závislé věty - default • CASCADE - automaticky smaže věty, či aktualizuje hodnoty klíče odpovídajících vět v závislé tabulce • SET NULL - smaže nebo aktualizuje větu v hlavní tabulce a hodnoty cizího klíče v závislé tabulce nastaví na null.

  23. JDD vytváření pohledů CREATE VIEW jm_pohledu(atr1, atr2,...) AS select ..... select nesmí obsahovat - poddotaz za FROM, odkaz na systémovou nebo uživ. proměnnou, odkaz na temporary tabulku apod. atr1, atr2-případné přejmenování sloupců SHOW CREATE VIEW SELECT * FROM jm_pohledu

  24. JDD - triggery 1) Create table lidi ( id int(10) not null primary key auto_increment, login varchar(8) not null, jmeno varchar(20) not null, prijmeni varchar(30) ); 2) drop trigger vyplog; DELIMITER | CREATE TRIGGER vyplog BEFORE INSERT ON lidi FOR EACH ROW BEGIN SET @prefix = SUBSTR(NEW.PRIJMENI, 1, 3); select max(substr(login, 4, 3)) into @postfix from lidi where substr(prijmeni, 1, 3) = @prefix ; set @postfix1 = ifnull(@postfix, 0)+1; set @postfix2 = LPAD(@postfix1, 3, '0'); SET NEW.LOGIN = Concat(lower(@prefix), @postfix2); END; | DELIMITER ; 3) INSERT INTO lidi VALUES(null,'a','Jarda','Novotny');

  25. JDD – uložené procedury -- příklad jednoduché procedury drop procedure simpleproc; delimiter // CREATE PROCEDURE simpleproc (OUT param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM zakaznik; END; // delimiter ; CALL simpleproc(@a); SELECT @a; +------+ | @a | +------+ | 2 | +------+

  26. Import dat do MySQL load.sql load data local infile 'C:\\MySQL-obchod\\faktury3.txt' into table fakturafields terminated by ',’ enclosed by '\"' lines terminated by '\r\n' ignore 1 lines; Faktury3.txt … ino,cno,idate,itotal,salesman 1054,"C8934",2004-03-15,1100.24,"647" 1055,"P8438",1990-05-07,604.91,"667" 1056,"M9916",1990-05-07,2615.58,"434" 1057,"Q7813",1990-05-07,35.09,"667" 1058,"T1401",1990-05-07,121.48,"281" 1059,"Z2361",1990-05-07,1673.21,"271"

  27. Administrace -- vytvoreni uzivatele a databaze stejneho jmena CREATE USER ‘user'@'%' IDENTIFIED BY ‘heslo' ; GRANT USAGE ON * . * TO ' user '@'%' IDENTIFIED BY ‘heslo‘WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; CREATE DATABASE IF NOT EXISTS `user` ; GRANT ALL PRIVILEGES ON `user` . * TO ‘user'@'%'; GRANT SELECT , INSERT , UPDATE , DELETE , CREATE , DROP , REFERENCES , INDEX , ALTER , CREATE TEMPORARY TABLES , CREATE VIEW , SHOW VIEW , CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON `test` . * TO ‘user'@'%';

  28. literatura www.mysql.com http://www.fsf.org/licenses/ www.linuxsoft.cz www.kosek.cz - stránky J. Koska www.supersvet.cz Instalace php, MySQL, Apache,... www.apachefriends.org www.easyphp.org vertrigoserv.sourceforge.net

More Related