Você está na página 1de 45

Introduo ao Banco de Dados

MySQL
Fernando Lozano
www.lozano.eti.br
fernando@lozano.eti.br

Consultor Independente Prof. Faculdades UniABEU Prof. Universidade Estcio de S

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 1

Sobre o Autor

Red Hat Certified Engineer LPI Certified Professional Level I Sair GNU/Linux Certified Professional IBM Certified Network Engineer IBM Certified DB2 Administrator & Developer Microsoft Certified Systems Engineer Microsoft Certified Solutions Developer Conselheiro do LPI Brasil Webmaster da Free Software Foundation Autor do Livro "Java em GNU/Linux" ed. Alta Books, 2002,
Introduo ao Banco de Dados MySQL, Pag. 2

2003 Fernando Lozano, http://www.lozano.eti.br

Objetivos e Pr-requisitos

Demonstrar o bsico necessrio para utilizar o MySQL no desenvolvimento de um aplicativo Espera-se do aluno:

Conhecimento de alguma linguagem de programao Conhecimentos de SQL Conceitos de bancos de dados cliente/servidor

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 3

Agenda

Por que Bancos de Dados Livres Por que MySQL Histrico e Caractersticas do MySQL Quando no usar o MySQL Instalao do MySQL em Linux Administrao do MySQL Desenvolvendo para o MySQL em Linux Instalao do MySQL em Windows Desenvolvendo para o MySQL em Windows
Introduo ao Banco de Dados MySQL, Pag. 4

2003 Fernando Lozano, http://www.lozano.eti.br

Por que Bancos de Dados Livres?

"Bancos de dados se tornaram parte integrante da infraestrutura tecnolgica de qualquer empresa, por isso devem ser abertos" SAP AG, http://www.sapdb.org

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 5

Software Livre e a InfraEstrutura de TI

Softwares livres j so dominantes em diversos nichos e participantes importantes na maioria dos servios de rede, tais como:

Web servers, portais Firewall, Proxy caches, VPN Arquivos e Impresso E-mail, fax O IDC estima que em 2004 o Linux ser o NOS mais utilizado nas empresas

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 6

Bancos de Dados Livres

Ser que os bancos de dados so o prximo nicho a ser ocupado pelos bancos livres?

So to confiveis quanto os bancos proprietrios? So to rpidos quanto? H servios de suporte e consultoria? Funcionam com as ferramenas de desenvolvimento legadas (Visual Basic, Delphi, PowerBuilder) ou apenas com as ferramentas da era Web (Java, PHP, Perl) ? Sim, Sim, Sim e Sim!

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 7

Bancos Proprietrios e o Software Livre

Oracle em Linux 40% mais rpido do que em Windows, segundo a prpria Oracle DB2 vem com interface DBI para Perl Oracle AAS 9i baseado no Apache e no Jserv IBM Websphere baseado no Apache e no Tomcat Sybase, OpenIngres, Informix... todos os bancos importantes tem verses tier1 para Linux, com uma nica exceo (advinhem qual!)

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 8

Bancos Livres x Proprietrios

Os bancos livres em geral suportam:


Otimizao de consultas Histogramas sobre colunas Comandos SQL sofisticados Grants Campos binrios longos Grandes volume de dados, usurios e transaes (com ajuda de recursos de SMP, RAID e Journaling) Replicao

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 9

Bancos Livres x Proprietrios

Os bancos livres ainda no suportam:


Organizao fsica em Tablespaces Clustering (no com discos compartilhados para HA e failover, mas sim com heartbeat e replicao) Transaes distribudas Consultas paralelas Particionamento Views Materializadas Bancos Multidimensionais / Aplicaes OLAP

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 10

Por que MySQL

o banco de dados livres mais popular um projeto antigo e maduro Download relativamente pequeno, vivel para quem utiliza modem de 28.8Kbps No tem uma curva de aprendizado muito ngreme Amplo suporte de ferramentas livres:
PHP, Perl, Python, Glade / Gnome-DB, ...

Amplo suporte de ferramentas proprietrias

Kylix, Java, Delphi, Visual Basic, ColdFusion, ER-Win, ...

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 11

Sobre o MySQL

Surgiu partir de um formato de arquivos ISAM desenvolvido pela Datakonsult AB Implementava o mesmo protocolo de rede e APIs do mSQL (miniSQL), um banco de dados freeware A verso Windows era shareware H dois anos foi re-licenciado sob a GNU GPL A empresa mudou de nome para MySQL AB

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 12

Caractersticas do MySQL

Foco em facilidade de administrao e baixo consumo de recursos do hardware Se tornou popular graas Internet, pois os bancos tradicionais tinham tempos de conexo extremamente elevados, inadequados para aplicaes CGI Para atingir seus objetivos, no implementava funes de overhead elevado, como integridade referencial, commit, rollback e nveis de isolamento de transao

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 13

Caractersticas do MySQL

Servidor multithreaded: um nico processo mysqld atende a todos os clientes Tabelas e ndices correspondem arquivos fsicos e bancos de dados correspondem diretrios Distribuio de dados em mltiplos discos deve ser feita manualmente, por meio de links simblicos Segurana via SSL (4.x)

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 14

O MySQL Hoje e Amanh

Hoje (verses 3.23.x e 4.0.x):

Mecanismos de armazenamento (tipos de tabela) com suporte transaes Recursos SQL mais sofisticados, como agregados Ainda no implementa alguns recursos bsicos como views e foreign keys Full text search (4.x) Maior compatibilidade com o padro ANSI Views e procedimentos armazenados

Prximas verses (4.1, 4,2, ... 5.x, ...):


2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 15

Plataformas Suportadas pelo MySQL

Servidor

Sistemas Unix-Like: GNU/Linux, FreeBSD, Solaris, AIX, HP-UX, ... Win32: Windows 95/98/ME, Windows NT/2000/XP/NET OS/2 (Em desenvolvimento para BeOS e LynxOS) MacOS X e Netware Drivers ODBC (3.0) e dbExpress para Unix e Windows Vrias ofertas de drivers JDBC 2.0 100% Java

Cliente:

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 16

Quando Usar o MySQL

Back-end para gerao de contedo de web sites Aplicaes envolvendo basicamente consultas e insero de dados Sistemas altamente replicados, onde o custo de licenas de banco se torna proibitivo Sistemas com ampla variao de demanda, pois o MySQL (ao contrrio de outros bancos "light") foi validado para grandes volumes de dados ou de usurios

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 17

Quando No Usar o MySQL

Aplicaes com fortes demandas transacionais, especialmente se houverem muitas atualizaes concorrentes! Aplicaes que necessitem de recursos sofisticados do SQL, como agrupamentos e agregados para gerao de relatrios Aplicaes OLAP Empresas como o Yahoo Finance combinam o MySQL (aplicaes web) com um outro banco de dados (retaguarda financeira)
Introduo ao Banco de Dados MySQL, Pag. 18

2003 Fernando Lozano, http://www.lozano.eti.br

Instalao do MySQL em Linux

Trs formas de instalar o MySQL


partir dos fontes (no recomendado) partir dos binrios fornecidos em mysql.com partir dos pacotes RPM fornecidos em mysql.com

Os binrios e pacotes RPM esto prontos para execuo, sem necessidade de configurao prvia Recomenda-se criar um usurio "mysql" para o banco em vez de rodar como root

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 19

Pacotes RPM do MySQL

MySQL

Servidor bsico, sem transaes

MySQL-client

Utilitrios de cliente

MySQL-devel

Headers e bibliotecas estticas para linguagem C

MySQL-shared MySQL-max

bibliotecas dinmicas para aplicaes cliente

Servidor completo, com transaes


2003 Fernando Lozano, http://www.lozano.eti.br Introduo ao Banco de Dados MySQL, Pag. 20

Iniciando o MySQL

Basta invocar o comando mysqld ou ento utilizar o script instalado em /etc/rc.d/init.d No Red Hat: service mysqld start Incio automtico no boot do sistema: chkconfig on mysqld Testando a disponibilidade do servidor: mysqladmin version

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 21

Encerrando o MySQL

Trs opes

mysqladmin shutdown /etc/rc.d/init.d/mysqld stop service mysqld stop (Red Hat)

Ele ser desligado corretamente durante o shutdown do sistema se foi configurado para incio no boot com o comando chkconfig No utilize o comando kill para encerrar o MySQL, pois pode acarretar perda de dados!

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 22

Criao e Destruio de Bds

mysqladmin create nome-do-banco mysqladmin drop nome-do-banco mysqlshow lista os bancos existentes Tambm possvel copiar (ou remover) o diretrio do banco de um servidor para o outro, com o servidor inativo (/var/lib/mysql/nome-do-banco)

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 23

Acessando um Banco no MySQL

Utilize o utilitrio mysql, que similar ao isql do Sybase ou ao sqlplus do Oracle Encerre os comandos SQL com um ponto-e-vrgula ou \g Retorne ao prompt do shell com um [Ctrl+D] ou \q

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 24

Exemplo de Uso do MySQL

[root@laptop root]# mysql banco Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 to server version: 3.23.49 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> create table teste ( i integer primary key, s varchar (20) ); Query OK, 0 rows affected (0.00 sec) mysql> insert into teste values (1, 'primeiro'); Query OK, 1 row affected (0.00 sec) mysql> insert into teste values (2, 'segundo'); Query OK, 1 row affected (0.00 sec)

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 25

Exemplo de Uso do MySQL

mysql> select * from teste;


+---+----------+ | i | s | +---+----------+ | 1 | primeiro | | 2 | segundo | +---+----------+

2 rows in set (0.00 sec) mysql>\q Bye [root@laptop root]#

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 26

Mude a senha do root!

A instalao padro do MySQL inclui um usurio "root" sem senha, e um usurio annimo local (@localhost) tambm sem senha Qualquer usurio local pode especificar o nome de usurio "root" e criar ou remover bancos de dados set password for root@localhost = password ('senha');

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 27

Opes do Cliente MySQL

Os utilitrios de linha de comando do MySQL aceitam as seguintes opes

-u login -p

nome do usurio

pede a digitao da senha

-h host

especifica o servidor MySQL em outro computador (desde que o firewall no bloqueie o acesso)

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 28

Segurana no MySQL

Ao contrrio de outros bancos, onde so associados usurios (login) a senhas, no MySQL so associados tambm a um nome de host ou endereo IP Ou seja, o mesmo login do banco pode ter senhas diferentes, de acordo com o host de origem Tambm possvel especificar restries de acesso por banco, tabela e mesmo coluna

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 29

Criando um Usurio no MySQL

[root@laptop root]# mysql -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 12 to server version: 3.23.49 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> grant all on banco.* to teste@localhost identified by 'senha'; Query OK, 0 rows affected (0.05 sec)

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 30

Utilizando o Usurio RecmCriado

[lozano@laptop lozano]$ mysql -u teste -p banco Enter password: Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 15 to server version: 3.23.49 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> select * from teste;
+---+----------+ | i | s | +---+----------+ | 1 | primeiro | | 2 | segundo | +---+----------+

2 rows in set (0.00 sec)


2003 Fernando Lozano, http://www.lozano.eti.br Introduo ao Banco de Dados MySQL, Pag. 31

Acesso Remoto ao MySQL

Normalmente o MySQL acessado por aplicaes web, sendo que o web server est na mesma mquina. Assim sendo basta criar o usurio @localhost Aplicaes cliente/servidor tradicionais (ODBC, dbExpress, JDBC, DBI) iro acessar o banco em outra mquina. Pode ser definido um host mscara ou especificar o usurio host a host.

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 32

Criando um Usurio Remoto no MySQL

[root@laptop root]# mysql -p Enter password: ... mensagens suprimidas ... mysql> use mysql Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> grant all on banco.* to teste@'%' identified by 'remoto'; Query OK, 0 rows affected (0.05 sec)

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 33

Utilizando o Usurio Remoto

[lozano@laptop lozano]$ mysql -h servidor -u teste -p banco Enter password: ... mensagens suprimidas ... Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> select * from teste;
+---+----------+ | i | s | +---+----------+ | 1 | primeiro | | 2 | segundo | +---+----------+

2 rows in set (0.00 sec)

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 34

Scripts SQL

Em geral inserimos vrios comandos DDL (create table, create index) em um script SQL que pode ser executado diretamente pelo mysql redirecionando a entrada padro: mysql -u teste -p banco < cria_agenda.sql

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 35

Backup do MySQL

Pode ser feito de duas formas:

Cpia do diretrio do banco de dados, com o servidor desativado (apenas entre a mesma verso, na mesma plataforma) Utilitrio mysqldump, que gera um script SQL para recriao do banco ou das tabelas selecionadas

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 36

Desenvolvendo Para o MySQL em Linux

Distribuies binrias do PHP costumam vir prconfiguradas com um cliente MySQL Pode-se baixar e compilar o DBI e DBD-MySQL para Perl (ou usar os pacotes da sua distrbuio preferida do Linux) Em geral, aplicaes em C ou Pascal, alm dos drivers Perl e Python, exigem recomplicao para a verso do cliente MySQL instalada

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 37

A API de Cliente do MySQL

mysql_connect

Conecta a um servidor

mysql_selectdb mysql_query mysql_fetch

Seleciona um banco de dados no servidor

Executa um comando SQL qualquer

Retorna uma linha de resultado

mysql_freeresult / mysql_close

liberam os recursos ocupados pelo cliente


2003 Fernando Lozano, http://www.lozano.eti.br Introduo ao Banco de Dados MySQL, Pag. 38

Outras APIs

Quando existe uma API independente de banco, recomenda-se o uso desta API com o driver especfico, em vez da API de cliente do MySQL API do MySQL
PHP, C/C++, Pascal

API independente de banco

Java (JDBC), PHP (Pear), Perl (DBI), Python (PyDB), Kylix (dbExpress)

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 39

Exemplos

Agenda de Contatos

Verso em PHP (API do MySQL) Verso em PHP (PEAR) Verso em Pascal Verso em Java

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 40

Instalando o MySQL em Windows

Um nico arquivo auto-instalador (estilo InstallShield) fornece o servidor, cliente e bibliotecas para desenvolvimento fornecido um utilitrio grfico para incio e trmino do servidor Ou ento podemos utilizar a linha de comando do mesmo modo que no Linux (mysqld, mysqladmin, mysqlm, mysqldump)

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 41

Desenvolvendo para o MySQL em Windows

Linguagens como PHP, Perl, Java, C e Pascal funcionam da mesma forma nos dois ambientes Java no necessitam do cliente MySQL instalado; as demais exigem recompilao O Delphi fornece um driver dbExpress para o MySQL Pode ser baixado e instalado separadamente um driver ODBC para Visual Basic, Excel, etc

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 42

Exemplos

Agenda de Contatos

PHP, Java e Pascal (iguais aos exemplos no Linux) Access (tabelas vinculadas via ODBC) Open Office (via ODBC)

O uso do driver ODBC exige a definio de chaves primrias nas tabelas, caso contrrio os Datasets no sero atualizveis

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 43

Referncias

MySQL
www.mysql.com

Freshmeat

www.freshmeat.net

Sourceforge
www.sourceforge.net

Porque software livre? www.dwheeler.com/oss_fs_why.html

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 44

Perguntas

Dvidas: fernando@lozano.eti.br Palestra e atualizaes: www.lozano.eti.br

2003 Fernando Lozano, http://www.lozano.eti.br

Introduo ao Banco de Dados MySQL, Pag. 45

Você também pode gostar