Académique Documents
Professionnel Documents
Culture Documents
com
Manual de MySQL
Autores do manual Este manual foi criado pelos seguintes colaboradores de Criarweb.com: Miguel Angel Alvarez Carlos Cuenca Daz Vincius Delgado Consultoria Informtica http://www.basemax.com.br Traduo de JML
(5 captulos) (12 captulos) (1 captulo)
Eber M. Duarte
http://www.devmedia.com.br (4 captulos)
Damaris Fanderuff
http://www.devmedia.com.br (1 captulo)
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
texto no qual separamos por tabulaes todos os campos de um mesmo registro Sair de MySQL
Para evitarmos ter de editar as nossas tabelas directamente sobre os ficheiros de texto, pode ser muito prtico usar qualquer outra base de dados com um editor e exportar a seguir a tabela num ficheiro de texto configurado para deixar tabulaes entre cada campo. Isto possvel em Access, por exemplo, clicando com o boto direito sobre a tabela que queremos converter e escolhendo a opo exportar. Uma janela de dialogo aparecer na qual escolheremos guardar o ficheiro em tipo texto. O passo seguinte ser escolher um formato delimitado por tabulaes sem qualificador de texto. Outra possibilidade que pode ser muito prtica e que nos evita trabalhar continuamente com comandos do estilo aos do tempo da carochinha servir-se de programas em PHP ou Perl j existentes e que se podem obter na rede. O mais popular sem duvida o phpMyAdmin. Estes tipos de scripts so executados desde um navegador e podem, por tanto, albergados no nosso servidor ou empregues em local para, a partir deles, administrar MySQL de uma forma menos difcil. Do mesmo modo, dentro do directrio bin de MySQL, podemos encontrar uma pequena aplicao chamada MySqlManager. Trata-se de uma interfaz windows, mais agradvel a vista e ao uso do que a que obtemos executando o ficheiro mysql. Neste caso, as sentenas SQL devem realizar-se sem o ponto e vrgula final. Artigo por Miguel Angel Alvarez - Traduo de JML
SmallInt: nmero inteiro com ou sem signo. Com signo a margem de valores vlidos desde -32768 at 32767. Sem signo, a margem de valores de 0 at 65535. MediumInt: nmero inteiro com ou sem signo. Com signo a margem de valores vlidos desde -8.388.608 at 8.388.607. Sem signo, a margem de valores de 0 at 16777215. Integer, Int: nmero inteiro com ou sem signo. Com signo a margem de valores vlidos desde -2147483648 at 2147483647. Sem signo, a margem de valores de 0 at 429.496.295 BigInt: nmero inteiro com ou sem signo. Com signo a margem de valores vlidos desde -9.223.372.036.854.775.808 at 9.223.372.036.854.775.807. Sem signo, a margem de valores de 0 at 18.446.744.073.709.551.615. Float: nmero pequeno em vrgula flutuante de preciso simples. Os valores vlidos vo desde -3.402823466E+38 at -1.175494351E-38,0 et desde 175494351E-38 at 3.402823466E+38. xReal, Double: nmero em vrgula flutuante de dupla preciso. Os valores permitidos vo desde -1.7976931348623157E+308 at -2.2250738585072014E-308, 0 e desde 2.2250738585072014E-308 at 1.7976931348623157E+308 Decimal, Dec, Numeric: Nmero em vrgula flutuante desempacotado. O nmero armazenase como uma cadeia. Tipo de Campo TINYINT SMALLINT MEDIUMINT INT INTEGER BIGINT FLOAT(X) FLOAT DOUBLE DOUBLE PRECISION REAL DECIMAL(M,D) NUMERIC(M,D) 2 Tipos data: Na hora de armazenar datas, h que ter em conta que MySQL no verifica de uma maneira estricta se uma data vlida ou no. Simplesmente comprova que o ms est compreendido Tamanho de Armazenamento 1 byte 2 bytes 3 bytes 4 bytes 4 bytes 8 bytes 4 ou 8 bytes 4 bytes 8 bytes 8 bytes 8 bytes M+2 bytes se D > 0, M+1 bytes se D = 0 M+2 bytes se D > 0, M+1 bytes se D = 0
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
entre 0 e 12 e que o dia est compreendido entre 0 e 31. Date: tipo data, armazena uma data. A margem de valores vai desde o 1 de Janeiro de 1001 ao 31 de dezembro de 9999. O formato de armazenamento de ano-mes-dia. DateTime: Combinao de data e hora. A margem de valores vai desde o 1 ed Janeiro de 1001 s 0 horas, 0 minutos e 0 segundos ao 31 de Dezembro de 9999 s 23 horas, 59 minutos e 59 segundos. O formato de armazenamento de ano-mes-dia horas:minutos:segundos TimeStamp: Combinao de data e hora. A margem vai desde o 1 de Janeiro de 1970 ao ano 2037. O formato de armazenamento depende do tamanho do campo: Tamanho 14 12 8 6 4 2 Formato AnoMesDiaHoraMinutoSegundo aaaammddhhmmss AnoMesDiaHoraMinutoSegundo aammddhhmmss AnoMesDia aaaammdd AnoMesDia aammdd AnoMes aamm Ano aa
Time: armazena uma hora. A margem de horas vai desde -838 horas, 59 minutos e 59 segundos. O formato de armazenamento 'HH:MM:SS'. Year: armazena um ano. A margem de valores permitidos vai desde o ano 1901 ao ano 2155. O campo pode ter tamanho dois ou tamanho 4 dependendo de se queremos armazenar o ano com dois ou quatro algarismos. Tipo de Campo DATE DATETIME TIMESTAMP TIME YEAR 3 Tipos de cadeia: Char(n): armazena uma cadeia de longitude fixa. A cadeia poder conter desde 0 at 255 caracteres. VarChar(n): armazena uma cadeia de longitude varivel. A cadeia poder conter desde 0 at 255 caracteres. Dentro dos tipos de cadeia pode-se distinguir dois subtipos, os tipo Test e os tipo Blob (Binary Large Object) A diferena entre um tipo e outro o tratamento que recebem na hora de orden-los e compar-los. No tipo test ordena-se sem ter importncia as maisculas e as minsculas e no tipo blob ordena-se tendo em conta as maisculas e minsculas. Os tipos blob utilizam-se para armazenar dados binrios como podem ser ficheiros.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 5
TinyText e TinyBlob: Coluna com uma longitude mxima de 255 caracteres. Blob e Text: um texto com um mximo de 65535 caracteres. MediumBlob e MediumText: um texto com um mximo de 16.777.215 caracteres. LongBlob e LongText: um texto com um mximo de caracteres 4.294.967.295. H que ter em conta que devido aos protocolos de comunicao os pacotes podem ter um mximo de 16 Mb. Enum: campo que pode ter um nico valor de uma lista que se especifica. O tipo Enum aceita at 65535 valores diferentes. Set: um campo que pode conter nenhum, um ou vrios valores de uma lista. A lista pode ter um mximo de 64 valores. Tipo de campo CHAR(n) VARCHAR(n) TINYBLOB, TINYTEXT BLOB, TEXT MEDIUMBLOB, MEDIUMTEXT LONGBLOB, LONGTEXT ENUM('value1','value2',...) SET('value1','value2',...) Tamanho de Armazenamento n bytes n +1 bytes Longitude+1 bytes Longitude +2 bytes Longitude +3 bytes Longitude +4 bytes 1 dos bytes dependendo do nmero de valores 1, 2, 3, 4 8 bytes, dependendo do nmero de valores
Diferena de armazenamento entre os tipos Char e VarChar Valor '' 'ab' 'abcd' 'abcdefgh' CHAR(4) Armazenamento '' 'ab ' 'abcd' 'abcd' 4 bytes 4 bytes 4 bytes 4 bytes VARCHAR(4 Armazenamento ) " 'ab' 'abcd' 'abcd' 5 bytes 1 byte 3 bytes
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
Para utiliza-lo, primeiro ters que fazer download de MySQL.com. Existem actualmente verses disponveis para Linux e para Windows. Para poder trabalhar com um servidor de MySQL, primeiro ters de o dar de alta atravs do cone de Registrar servidor. Aparece uma caixa de dilogo na qual se podem configurar todos os parmetros de acesso ao servidor, como o nome do servidor, nome do usurio, password, porto etc. Uma vez conectado ao servidor poder-se aceder s tarefas de administrao dos usurios de MySQL, administrador do gestor, e administrao das tabelas. Administrador de Usurios A partir dele pode-se acrescentar, apagar, modificar as propriedades dos usurios de MySQL. Ao fazer click sobre um usurio aparece a janela de configurao do usurio.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
Nela podem-se configurar o nome de usurio e a password. Em relao s permisses, permite estabelecer um sistema de permisses geral ou individualizado para cada uma das tabelas. Para alm disso permite dar-lhe permisso ao usurio para ceder a outros (GRANT OPTION). Um dos pontos fortes em relao a segurana que ao definir um usurio, temos de especificar o servidor desde o qual vai aceder, limitando de esta forma, os riscos de acesso no autorizado. Administrao do servidor A janela de Administrao do servidor consta de trs opes nas quais se pode aceder lista de processos, s variveis de estado do servidor e s variveis de configurao.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
Desde esta janela para alm de poder fazer um Ping ao servidor, para-lo, ou guardar o contedo das variveis de estado. Desde a opo de processos pode-se ver o estado de cada um dos processos ativos, vendo as suas propriedades e com a opo de para-los atravs de um Kill. Desde a opo de estado, pode-se ver o contedo de cada uma das variveis de estado, e pode-se personalizar para mostrar as que interessem. Desde a opo de variveis pode-se aceder ao valor de cada uma das variveis de configurao do servidor MySQL. Janela de Base de Dados Ao seleccionar uma base de dados dentro de uma seleco de bases de dados, aparece a janela de base de dados, onde podemos ver informao relacionada com a base de dados, como por exemplo o nmero de tabelas, o nmero de consultas por segundo, o tempo de funcionamento, etc. Ao seleccionar uma base de dados, pode-se ver os nomes das tabelas e o nmero de registos que contem. As tabelas podem-se eliminar, vaziar e renomear. Quando se selecciona uma tabela, podem-se ver os nomes dos campos, os tipos de dados e os parmetros opcionais de cada um deles.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
Esta janela permite criar novos campos, elimina-los ou modificar as suas propriedades. Mediante o cone de ferramentas, pode-se analisar a tabela, optimiza-la e repara-la. Ao fazer duplo click sobre uma tabela mostra-se na janela os dados que contem. Fazendo click sobre qualquer um dos campos, acede-se a estrutura. Para cada campo pode-se escolher o tipo de dados, o tamanho, e se chave ou no e o valor pr-determinado.
Dentro da tabela, existe uma opo para configurar os ndices que tem.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
10
Desde essa janela podemos seleccionar os campos que contem, e tambm o tipo de ndice que se deseja criar. Desde a opo de propriedades da tabela acede-se aos atributos, como por exemplo o tipo de tabela, o modo de escritura, o tamanho mximo de cada fila, etc.
Em fim, como podes ver esta a consola de acesso ao servidor MySQL de que estvamos a espera. O produto distribui-se como software livre, por tanto, tanto o download como a sua utilizao ilimitada gratuita. Est disponvel as ltimas verses Linux e Windows para alm de muitssima informao no seguinte endereo: www.mysql.com/products/mysqlcc/. Artigo por Carlos Cuenca Daz
MySQL Administrator
MySQL Administrador o novo software de administrao de servidores de Bancos de Dados de MySQL que MySQL AB criou. Trata-se de um software multi-plataforma, que por enquanto encontra-se disponvel para Linux e Microsoft Windows e que conta com um ambiente grfico de usurio muito intuitivo. Este novo produto supre as carncias que tem MySQL Control Center na rea de Administrao de servidores. MySQL Control Center atualmente est depreciado, tornou-se obsoleto e no continua se desenvolvendo. Foi substitudo pelo conjunto de programas MySQL Administrator e MySQL Query Browser. MySQL Administrador uma ferramenta que permite realizar tarefas administrativas sobre servidores de MySQL incluindo: a configurao das opes de incio dos servidores inicio e deteno de servidores monitoramento de conexes ao servidor administrao de usurios monitoramento do estado do servidor, incluindo estatsticas de uso visualizao dos logs de servidor gerenciamento de cpias de segurana e recuperaes visualizao de catlogos de dados.
Instalao e configurao: O download do programa se faz atravs da pgina web de MySQL, em http://dev.mysql.com/downloads/administrator, Tambm na pgina de MySQL existem uma
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
11
srie de FAQs que ajudam na instalao em caso de duvidas, embora a mesma seja bastante simples, em http://www.mysql.com/products/administrator/.
Uma vez instalado necessrio configurar uma primeira conexo contra um servidor de MySQL para poder acessar administrao do mesmo. Na tela de configurao se devero especificar os dados do servidor, nome de usurio, senha e porto, do banco de dados ao qual se deseja conectar. Uma vez introduzidos de forma correta, aparece a tela principal do programa:
Atravs da tela principal pode-se ver a informao relativa ao servidor de banco de dados qo qual se conectou, assim como as caractersticas da mquina na que se est executando o programa. Na barra de menu atravs de Tools, se tem acesso a um console de sistema (Windows ou Linux dependendo do caso), um cliente de conexo a MySQL sob linha de comandos e a MySQL Query Browser. Por este mesmo menu, se acessa as opes de configurao do administrador e das conexes que existem configuradas:
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
12
Na seo de conexes se encontram armazenadas todas as conexes a servidores que existem configuradas. Algumas utilidades acessveis desde a janela principal do programa so: Service control: Incio e deteno de servidores (s acessvel se se conectou com um servidor MySQL na mquina local). Startup variables: Configurao do servidor e as variveis de incio (s acessvel se se conectou com um servidor MySQL na mquina local). User Administration: Para a gesto de usurios e permisses. Server conections: Visualiza e gerencia as conexes abertas com o servidor de bancos de dados. Health: Informao sobre o carregamento do servidor Server Logs: O histrico de logs do servidor. Replication Status: Com informao dos sistemas replicados. Backup: Para fazer uma cpia de segurana dos bancos de dados. Restore: Para restaurar as cpias de segurana. Catalogs: Para mostrar os bancos de dados, visualizar, criar e editar as tabelas. Concluso Faltava uma ferramenta como MySQL Administrator ao banco de dados. No cabe dvida que se trata de um programa extremamente til e imprescindvel para administrar visualmente servidores MySQL. Muitas das opes de configurao do banco de dados so muito simples de entender e de utilizar, pelo menos todas as opes mais bsicas. Em conjunto com MySQL Query Browse, nos permite gerenciar qualquer aspecto de um banco de dados MySQL. Artigo por Carlos Cuenca Daz
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
13
phpMyAdmin
phpMyAdmin um programa de distribuio livre em PHP, criado por uma comunidade sem animo de lucro, que s trabalha no projecto por amor a arte. uma ferramenta muito completa que permite aceder a todas as funes tpicas da base de dados MySQL atravs de uma interface web muito intuitiva.
A aplicao em si no mais do que um conjunto de ficheiros escritos em PHP, os quais podemos copiar no nosso servidor web, de modo que, quando acedemos a esses ficheiros vemos umas pginas onde podemos encontrar as bases de dados s que temos acesso no nosso servidor de bases de dados e todas as suas tabelas. A ferramenta permite-nos criar tabelas, inserir dados nas tabelas existentes, navegar pelos registos das tabelas, edit-los e apag-los, apagar tabelas e um grande etc, inclusive executar sentenas SQL e fazer um backup da base de dados. Pgina de phpMyAdmin A pgina de inicio do projecto http://www.phpmyadmin.net/. Da podemos fazer download dos ficheiros da ltima verso da aplicao, que posteriormente devemos colocar no nosso servidor web. Tambm podemos encontrar o phpMyAdmin na rede, como por exemplo Sourceforge.net, que um site que tem montes de projectos "Open Source". H vrias verses disponveis, mas recomendvel escolher a que nos aconselhem como a ltima verso estvel (The last stable version). Na hora de escrever este artigo era a 2.2.6. De modo que, se o nosso sistema +e Windows, optaremos pelo ficheiro phpMyAdmin-2.2.6php.zip. Este ficheiro para a verso 4 de PHP, mas tambm temos a possibilidade de obter os ficheiros que tem compatibilidade com a verso 3 de PHP, para aqueles que no tem o motor de PHP mais potente. A pgina de inicio do programa tambm nos oferece a possibilidade de ver uma demo online, ainda que avisam que o servidor onde se encontra pode estar cado. http://www.phpmyadmin.net/phpMyAdmin/
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 14
A instalar phpMyAdmin Uma vez obtida a ltima verso temos de a descomprimir, para obter os ficheiros PHP (a ferramenta) e coloca-los dentro do directrio ed publicao do nosso servidor web.
Nota: recordamos que phpMyAdmin um projecto escrito em PHP, por conseguinte necessitaremos colocar os ficheiros num servidor web que permita programao de pginas PHP. Deveremos aceder ferramenta atravs do endereo do servidor web, seguido do directrio no que temos os ficheiros. Por exemplo, se o nosso servidor o PWS e colocmos os ficheiros dentro do directrio de publicao (Normalmente C:\Inetpub\wwwroot), no subdirectorio phpMyAdmin, devemos escrever algo similar a http://localhost/phpMyAdmin Se tivssemos instalado um servidor Apache os colocaramos na pasta que tivssemos indicado como "documentRoot", que costuma ser htdocs.
O primeiro que podemos ler o ficheiro da documentao, que encontramos junto aos ficheiros de phpMyAdmin. Explica dados gerais do programa, como os seus requerimentos, instrues de instalao, configurao, perguntas frequntes, etc. Posteriormente, tal e como explica a documentao, temos de editar o ficheiro config.inc.php para mudar os valores de host da base de dados (maquina que tem instalado o MySQL) e o usurio e password com o qual nos vamos conectar. Podemos configurar muitos aspecto na ferramenta, ainda que agora s vou comentar os que acho que so essenciais para fazer que funcione. Na documentao temos um ponto dedicado por completo a especificar o sentido de cada varivel. $cfgPmaAbsoluteUri Devemos atribu-lo ao path completo necessrio para aceder a phpMyAdmin. Por exemplo: http://localhost/phpMyAdmin ou http://www.meudominio.com/phpMyAdmin $cfgServers[$i]['host'] string O nome do host da base de dados. Por exemplo localhost, se o computador onde est instalada a base de dados e onde estamos a instalar phpMyAdmin o mesmo. Tambm poderia ser o endereo IP do computador ao que nos ligamos.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
15
$cfgServers[$i]['user'] string $cfgServers[$i]['password'] string O par usurio/password que deve utilizar phpMyAdmin para conectar-se com o servidor MySQL. Com isto, j podemos aceder a phpMyAdmin e trabalhar com a nossa base de dados mais facilmente, que se torna muito de agradecer tendo em conta que, no cada de no ter esta ferramenta ou outra parecido, a outra opo seria utilizar a linguagem SQL, e no caso de que a base de dados esteja alojada em remoto na internet, no o poderamos fazer, a no ser com acesso por TELNET ao servidor da base de dados. Artigo por Carlos Cuenca Daz
Instalar o driver ODBC para conectar com uma base de dados MySQL
Instalar este driver serve para que desde um sistema Microsoft Windows possamos aceder a uma base de dados MySQL. As aplicaes so vrias, por exemplo podemos utiliza-lo para criar um DSN associado a uma base de dados MySQL, de modo que as nossas pginas ASP poderiam aceder base de dados. Outra aplicao aceder desde Access a base de dados MySQL e exportar ou importar dados (migrar os dados desde Access a MySQL e desde MySQL a Access), inclusive para criar um back-end da nossa base de dados MySQL em interface Access. O primeiro que temos de fazer no computador que tem o sistema Windows XX e Access actualizar a verso 6 de Microsoft jet: http://support.microsoft.com/default.aspx?scid=KB;ENUS;Q239114& A seguir, temos de fazer download da ltima verso de Myodbc da pgina de MySQL: http://www.mysql.com/downloads/api-myodbc-2.50.html Com tudo isto feito, instalamos a actualizao de Microsoft jet, e instalamos os drivers OBDC de MySQL. Quando pergunta no ecr de "Data Sources" faz click em "Close" para terminar. Com o driver ODBC instalado, acede ao painel de controlo de OBDC de 32 bits (Inicio>Configurao->Painel de Controlo->Fontes de dados ODBC 32 bits). Neste momento, ters de escolher se queres utilizar o driver para um usurio (DSN de usurio), ou para qualquer usurio do computador (DSN de Sistema). Uma vez escolhida uma opo, faz click no boto "Add" para acrescentar uma nova fonte de dados e a seguir, selecciona o driver de MySQL. Veremos o seguinte ecr:.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
16
Ters de preencher os seguintes campos: Windows DSN name: Nome da fonte de dados que estar disponvel desde Windows. Mysql host (name or IP): Nome ou endereo IP do computador onde se encontra instalado o servidor MySQL Mysql Database Name: Nome da base de dados com a que se trabalhar desde a fonte de dados. User: Nome de usurio com o que se aceder ao servidor de bases de dados. Password: palavra-chave do usurio. Port: Serve para especificar o porto no que se encontra o servidor MySQL, h que pr um valor no caso de que no se esteja a utilizar o pr-definido, que o 3306. Uma vez que estejam estas opes configuradas, fazemos click em "OK" para fechar as janelas e finalizar o processo.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 17
Para importar uma tabela de MySQL a Microsoft Access, desde Access, e com a base de dados na que desejamos importar os dados aberta, seleccionar o menu Ficheiro->Obter dados Externos->Importar. No ecr de importar dados, na opo tipo do ficheiro seleccionar ODBC databases().
Seleccionar origem de dados, e dentro de esta, o nome da fonte de dados que crimos anteriormente. Uma vez seleccionada, e fizeste click em "Aceitar", aparecer um ecr de configurao do driver e podes configurar algumas opes de configurao que aparecem no driver ODBC, se no desejas marcar nenhuma, click sobre "OK".
Nota: possvel que, em algum caso, os dados da base nos sistemas MySQL e Access no sejam totalmente compatveis e se produza alguma anomalia ao exporta-los. Realmente s uma hiptese que pensamos, ainda que nas provas que realizmos no vimos nenhum tipo de problema. Claro que os
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
18
Aparecer uma janela onde pergunta que tabela de MySQL queremos exportar a Access:
Para exportar uma tabela a MySQL, h que abrir a base de dados e seleccionar a tabela. Depois, fazer click sobre Ficheiro->Exportar. Na janela de exportar, na opo de guardar como tipo, seleccionar ODBC databases(). Feito isto, aparece uma janela que nos pergunta o nome que lhe queremos dar a tabela MySQL, pr-definidamente aparece o mesmo.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
19
Faz click sobre "Aceitar", e aparecer uma janela na que se pede que selecciones a origem de dados ODBC:
Nota: possvel que, em algum caso, os dados da base nos sistemas MySQL e Access no sejam totalmente compatveis e se produza alguma anomalia ao exporta-los. Realmente s uma hiptese que pensamos, ainda que nas provas que realizmos no vimos nenhum tipo de problema. Claro que os campos com os que trabalhmos no eram estranhos.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
20
Seleccionar origem de dados, e dentro, o nome da fonte de dados que crimos anteriormente. Uma vez seleccionado, fazer click em "Aceitar", aparece um ecr de configurao do driver que nos permitir, se queremos, configurar algumas opes sobre o driver. Se no queremos configurar nada, faz click sobre "OK" e os dados comearo a exportar-se.
Nota: se estamos a exportar dados a um servidor de bases de dados alojado nalgum provedor de hosting, temos d ter em conta que estes no sempre incluem acesso remoto ao servidor da base de dados, ou requer um aviso explicito por parte do cliente para a sua configurao.
Referncia: se desejamos uma migrao de dados no sentido oposto, isto , desde MySQL a Access, foi tratado noutro artigo em CriarWeb que explica o processo minuciosamente: Exportar dados de MySQL a Microsoft Access.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
21
Formulrio de Access que acede a uma base de dados MySQL Nota: Duas imagens que se diferenciam um mundo. Com as duas pode-se administrar uma base de dados MySQL, uma corresponde a consola MySQL (a ferramenta mais bsica) e a outra a um formulrio com Access, que sem dvida oferece uma interface muito mais agradvel.
Ainda por cima, para a gerao de formulrios e informas pode-se utilizar os assistentes... tudo uma poupana de tempo!!!
Referncia: Para realizar esta tarefa necessrio que tenhamos obtido o driver ODBC e o tenhamos instalado no nosso sistema Windows. Esta tarefa pode-se conhecer num artigo de CriarWeb.com: Instalar o driver ODBC para MySQL.
Agora, uma vez instalado o driver MyODBC, o primeiro que h que fazer criar uma base de dados em branco desde a qual se iro vincular as tabelas. Uma vez criada, faz-se click sobre a opo de criar nova tabela. Aparecer a seguinte janela na que se seleccionar criar nova tabela vinculada:
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
22
Aparece a janela de vincular uma tabela de uma base da dados, e na parte inferior seleccionamos o tipo de ficheiro: ODBC Databases().
Ao fazer click sobre vincular, aparece uma janela para seleccionar uma origem de dados, seleccionamos a fonte de dados que crimos na primeira parte do artigo:
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
23
A seguir, depois de fazer click em "Aceitar", aparece a janela de configurao da fonte de dados ODBC de MySQL. Como j est configurada, fazemos click em "OK", e aparecer a janela na que se podem escolher entre as tabelas que contem a base de dados para a qual configuramos a fonte de dados ODBC. Seleccionamos uma tabela, e a seguir aparecer uma janela onde devemos especificar, at um mximo de dez, os campos que formam parte da chave.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
24
Seleccionamos os campos, e fazemos click en "Aceitar". Aparecer uma nova tabela dentro da base de dados de Access. Esta tabela, no existe fisicamente dentro do ficheiro de Access, por tanto, todas as modificaes que se realizam sobre a mesma, enviam-se atravs de ODBC ao ficheiro MySQL.
A partir de agora, podero-se criar formulrios, consultas e informes sobre esta tabela tal e como se faz normalmente desde Access.
Nota: Alguns provedores de hosting no incluem no seu pack bsico o acesso remoto ao servidor de base de dados, ou requer de um aviso explicito por parte do cliente para a sua configurao.
Connector/J
Mysql Connector um driver criado por Mysql AB que te permitir trabalhar com Mysql desde programas escritos em Java. A diferena em relao a outros drivers, que este de livre distribuio, e tem um bom rendimento. MySQL Connector/J um driver nativo de Java que converte as chamadas geradas por JDBC no protocolo de rede que utiliza a base de dados Mysql. Permite trabalhar com a linguajem de programao Java e desta forma construir programas que interactuam com Mysql. O MySQL Connector/J um driver JDBC tipo IV e contem todas as caractersticas de JDBC para utilizar Mysql. No desenvolvimento das ltimas verses incrementou-se bastante a velocidade do driver, ganhando tanto em rapidez como em eficcia. O driver suporta resultados de dados "streaming" o que permite ao usurio recolher um grande nmero de filas sem a necessidade de utilizar um buffer de memria. O driver implementa um protocolo de packs grandes que permitem enviar filas e campos BLOBs de at 2 GigaBytes. Na verso de desenvolvimento do mesmo implementam-se as novas caractersticas acrescentadas no API 3.0 de JDBC. O driver foi testado para trabalhar com as seguintes ferramentas de bases de dados e servidores de aplicaes: Apache Jboss BEA Weblogic IBM VisualAge for Java IBM WebSphere Application Server 4.0 Forte for Java Oracle SQL/J
25
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
TableGen
Download Para instalar o driver h que fazer download da pgina de Mysql Connector/J Artigo por Carlos Cuenca Daz
Backup dos dados Este comando permite-nos fazer uma cpia dos ficheiros das tabelas das quais queremos fazer um backup, actualmente s funcionam com tabelas do tipo MyIsam, e copia tanto os ficheiros .frm que contm a definio da tabela, como os ficheiros .myd, que contm os dados. Antes de executar-se, guarda todas as alteraes que possam existir em memria da tabela, de forma que fique de uma maneira consistente. Do mesmo modo, durante a execuo do comando, bloqueia a tabela sobre a que se est a fazer a cpia de segurana para que os dados sejam consistentes na tabela. H que ter em conta que este comando bloqueia uma das tabelas, consoante vai fazendo a cpia de segurana. Isto poderia provocar uma inconsistncia de dados a nvel de base de dados, se necessrio fazer um backup de todas as tabelas num instante, sendo ento necessrio a utilizao do comando "lock tables" para bloquear todas as tabelas antes de comear a cpia de segurana. Ao finalizar o comando retorna uma tabela, que contem os dados: Coluna Table Op Msg_ty pe Msg_te xt Valores Nome da tabela Sempre pe "backup" Pode conter status, error, info ou warning. Mensagem descritivo do resultado da operao
Para realizar uma cpia de uma tabela chamada pedidos, pasta Backups:
BACKUP TABLE pedidos TO `/backups/`
Recuperao de dados Para complementar a sentena "Backup table", Mysql dispem da sentena "Restore table", que permite restaurar uma tabela a partir de uma cpia de segurana que se realizou com o comando "Backup Table". Esta opo s se pode utilizar se a tabela que se pretende restaurar no se encontra na base de dados, pois em caso afirmativo mostrar uma mensagem de erro. Igual que o comando de Backup, esta opo s est disponvel para as tabelas de tipo MyIsam, e a partir da verso 3.23.25. Como o comando de backup no copia os ficheiros de ndices, o comando para recuperar os dados, volta a indexar todos os campos que contem ndices, criando os ficheiros correspondentes. Ao igual que o comando para fazer cpias de segurana, invocar o comando "restore table" retorna uma tabela, com um registo por cada tabela sobre a que se fez a base de dados, e que contem a seguinte informao: Coluna Table Op Valores Nome da tabela Sempre pe "restore"
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
27
Msg_typ Pode conter status, error, info ou warning. e Msg_text Mensagem descritivo do resultado da operao Para restaurar uma tabela chamada pedidos da pasta Backups base de dados:
RESTORE TABLE pedidos FROM `/backups/`
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
28
-c, --complete-insert Utiliza inserts incluindo os nomes de coluna em cada sentena (incrementa bastante o tamanho do ficheiro) -C, --compress Comprime a informao entre o cliente e o servidor, se ambos suportam compresso. -B, --databases Para copiar vrias bases de dados. Neste caso, no se especificam tabelas. O nome dos argumentos refere-se aos nomes das bases de dados. Incluir-se USE db_name na sada antes de cada base de dados. --delayed Insere as filas com o comando INSERT DELAYED. -e, --extended-insert Utiliza a sintaxe de INSERT multilinha. (proporciona sentenas de insert mais compactas e rpidas) -#, --debug[=option_string] Utilizao do modo de depurao. --help Mostra mensagem de ajuda e termina. --fields-terminated-by=... --fields-enclosed-by=... --fields-optionally-enclosed-by=... --fields-escaped-by=... --lines-terminated-by=... Estas opes utilizam-se com a opo -T e tm o mesmo significado que a correspondente clusula LOAD DATA INFILE. -F, --flush-logs Escreve em disco todos os logs antes de comear com a cpia. -f, --force, Continua ainda que se produza um erro de SQL durante a cpia. -h, --host=.. Copia os dados do servidor de MySQL especificado. O servidor pr-definido localhost. -l, --lock-tables. Bloqueia todas as tabelas antes de comear com a cpia. As tabelas bloqueiam-se com READ LOCAL para permitir inserts simultneos em caso das tabelas MyISAM. Quando se realiza a cpia de mltiplas bases de dados. As tabelas em diferentes bases de dados copiaro-se em estados completamente diferentes. -K, --disable-keys Incluir-se na sada /*!40000 ALTER TABLE tb_name DISABLE KEYS */;e /*!40000 ALTER TABLE tb_name ENABLE KEYS */; Isto far que o carregamento de dados num servidor MySQL 4.0 se realize mais rpido devido a que os ndices se criaro depois de que todos os dados
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
29
tenham sido restaurados. -n, --no-create-db No se incluir na sada CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name; Esta linha inclui-se se a opo --databases ou --all-databases foi seleccionada. -t, --no-create-info No incluir a informao de criao da tabela (sentena CREATE TABLE). -d, --no-data No incluir nenhuma informao sobre os registos da tabela. Esta opo serve para criar uma cpia s da estrutura da base de dados. --opt O mesmo que --quick --add-drop-table --add-locks --extended-insert --lock-tables. Esta opo deveria permitir realizar a cpia de segurana da base de dados da forma mais rpida e efetiva. -pyour_pass, --password[=your_pass] Password utilizada quando se conecta com o servidor. Se no se especifica `=your_pass', mysqldump preguntar a password. -P, --port=... Porto utilizado pelas ligaes TCP/IP. --protocol=(TCP | SOCKET | PIPE | MEMORY) Especifica o protocolo de conexo que se utilizar. -q, --quick No armazena no buffer a sentena, copia-a diretamente na sada. Utiliza mysql_use_result() para realiza-lo. -Q, --quote-names Pe entre aspas as tabelas e nomes de coluna. -r, --result-file=... Redireciona a sada ao ficheiro especificado. Esta opo deveria utilizar-se em MSDOS, porque previne a converso de nova linha '\n' em nova linha e return '\n\r'. --single-transaction Utiliza o comando BEGIN antes de realizar a cpia desde o servidor. muito til com as tables InnoDB e o nvel de transao READ_COMMITTED, porque deste modo realizar-se a copia de segurana de um estado consistente sem a necessidade de bloquear as aplicaes. Consultar o manual para mais detalhes. -S /path/to/socket, --socket=/path/to/socket O ficheiro de sockets que se especifica ao conectar ao localhost (que o host pr-definido). --tables sobrescreve a opo --databases (-B). -T, --tab=path-to-some-directory
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
30
Cria um ficheiro table_name.sql, que contem a sentena de criao de SQL, e um ficheiro table_name.txt, que contem os dados de cada tabela. O formato do ficheiro '.txt' realiza-se com as opes --fields-xxx y --lines--xxx options.
Nota: Esta opo s funciona se o comando mysqldump se executa na mesma mquina que o demnio (daemon) mysqld, o usurio dever ter licena para criar e escrever o ficheiro no path especificado.
-u nombre_usuario, --user=nombre_usuario O nome de usurio que se utilizar quando se conecte com o servidor, o valor pr-definido o do usurio actual. -v, --verbose Vai mostrando informao sobre as aces que se vo realizando (mais lento) -w, --where='clusula where' Serve para realizar a cpia de determinados registos. -X, --xml Realiza a cpia de segurana num documento XML. -x, --first-slave Bloqueia todas as tabelas de todas as bases de dados. Exemplo: Para realizar a cpia de segurana da base de dados minhabase ao ficheiro copia_seguranca.sql
mysqldump --opt minhabase > copia_seguranca.sql
obviamente, queremos que esteja disponvel essa informao em remoto. 3. A base de dados est completa (como no caso anterior), mas no uma base de dados MySQL. Neste caso estaramos a fazer uma migrao da base de dados de um sistema gestor a outro. Veremos os trs casos por separado mais frente, mas antes disso, vamos mostras umas ferramentas que nos sero muito teis para a administrao de qualquer base de dados remota. As ferramentas em concreto so as seguintes: PhpMyAdmin. Uma aplicao criada em PHP que podemos instalar no nosso espao de alojamento para administrar a base de dados. Mysql Control Center (a partir de agora MyCC). Uma aplicao Windows que permite conectar-se a diversas bases de dados MySQL, que se estejam em local ou em remoto. Access. Tambm permite administrar uma base de dados MySQL conectada em local ou em remoto. Neste caso utiliza-se uma interface que muitos j conhecem, como a do Access, para administrar uma base de dados que nada tem a ver com o mencionado programa.
Nos trs casos o que nos permite realizar o software de administrao so tarefas, sobre as bases de dados, de todo tipo, como podem ser criar tabelas, modific-las, inserir dados, apag-los, edit-los. Modificar ou apagar tabelas ou campos das mesmas, etc. A eleio de uma ferramenta ou de outra passa pelos recursos que nos permitam utilizar no nosso provedor. Basicamente, o que nos pode levar a escolher uma opo ou outra se nos permitem ou no conectar de maneira remota base de dados MySQL. Conheo alojamentos onde se permite essa conexo e alojamentos onde no. Se no permidito conectar-nos remotamente escolheramos o PhpMyAdmin, pois uma aplicao PHP que se conecta em local e ao que se pode aceder atravs de uma pgina web, e isso est permitido pelos provedores, inclusive h muitos que j tm instalado esse software para administrar as bases de dados. No caso de que efetivamente possmos conectar-nos remotamente com a base de dados, a nossa escolha ser MyCC ou Access, que so aplicaes Windows muito mais potentes e rpidas que as que utilizam interface web, como o PhpMyAdmin. prefervel usar MyCC porque est especialmente feito para conectar-se e operar com bases de dados MySQL. Artigo por Miguel Angel Alvarez - Traduo de JML
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
32
A opo mais interessante podia ser criar outra vez as tabelas que temos em local na base de dados remota. Para o fazer temos duas hipteses. a) Se temos poucas tabelas e bastante simples Podemos cria-las em remoto com alguma ferramenta como PhpMyAdmin ou MyCC b) Se temos muitas tabelas e/ou so muito complicadas Neste caso recomendamos fazer um backup da estrutura em local e restaura-la em remoto. Isto evitar-nos ter que voltar a criar todas as tabelas e definir todos os seus campos e tipos. Pode ser um pouco mais complicado mas sem duvida poupar-nos tempo. Para fazer backup da estrutura em local podemos utilizar alguma ferramenta como PhpMyAdmin, ou utilizar o comando mysqldump desde a linha de comandos de MS-DOS.
Ferramenta de backup de PhpMyAdmin. Est marcada a opo de extrair s a estrutura das tabelas. Se marcamos tambm a opo "Send", o nosso navegador criar um ficheiro de texto. Se no o fizermos s se visualizar.
O que temos de fazer neste caso um backup da estrutura da base de dados, isto , os "create tables" ou sentenas SQL para criar as tabelas. Seriam bastantes sentenas deste gnero. # -------------------------------------------------------# # Table structure for table 'comentario' #
CREATE TABLE comentario ( id_comentario int(5) unsigned NOT NULL auto_increment, id_artigo int(4) DEFAULT '0' NOT NULL, comentario text NOT NULL, data int(14) unsigned DEFAULT '0' NOT NULL, revisado tinyint(1) DEFAULT '0' NOT NULL, nome_comentario varchar(100) DEFAULT 'Nome no especificado' NOT NULL, email_comentario varchar(100) DEFAULT 'Email sem especificar' NOT NULL, tipo tinyint(1) unsigned DEFAULT '1' NOT NULL, PRIMARY KEY (id_comentario) );
Para restaurar estas sentenas temos opes tanto dentro de PhpMyAdmin como de MyCC. Em ambos casos o que temos de fazer executar estas sentenas no servidor MySQL remoto. Em
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 33
PhpMyAdmin temos um campo para introduzir sentenas SQL e outro para seleccionar um ficheiro de texto com todas as sentenas SQL, para executa-las uma detrs da outra. No MyCC temos um boto que nos permite abrir uma consola onde introduzir uma ou vrias sentenas SQL e executa-las.
Recordamos que isto s nos servir para subir a estrutura da base de dados e no os dados que contenham. Se desejamos subir tambm a informao da base de dados temos de utilizar outras estratgias que relataremos proximamente. Artigo por Miguel Angel Alvarez - Traduo de JML
Neste caso o processo seria muito parecido ao de subir uma base de dados vazia, relatado anteriormente, excepto que agora temos de extrair no s a estrutura da base de dados, mas tambm os registos que contm.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
34
Para fazer isto podemos utilizar mysqldump ou PhpMyAdmin, seleccionando a opo que indica que o backup contem a estrutura e os dados (Structure and data). A estrutura e os dados vem num ficheiro de texto com uma serie de sentenas SQL para criar as tabelas e os insert necessrios para introduzir cada um dos dados. Para restaurar a base de dados, vamos seguir os mesmos passos como para o caso em que a base de dados est vazia, com a ajuda de uma instalao de PhpMyAdmin em remoto ou MyCC, que se conecte a base de dados contratada no servidor de Internet. Se temos problemas para subir o ficheiro de backup da base de dados possvel que o nosso provedor de alojamento nos possa ajudar a subir o ficheiro e restaura-lo. Como o provedor dispe dos servios nas suas prprias instalaes, tem muitas mais possibilidades para trabalhar com as bases de dados do que ns, sem temor a que as lentas comunicaes pela internet nos dem erros na restaurao dos dados. Se o nosso provedor no pode ajudar-nos, de certeza que dispem ou nos pode indicar algum mecanismo para realizar a tarefa sem erros. Pode acontecer que algum provedor nos diga que se encarrega de tudo mas que nos exige um pagamento pelas horas de trabalho da pessoa que vai restaurar o backup da base de dados. Se no dispe de facilidades nem sequer nisto, provavelmente seja melhor ir pedindo-lhe o dinheiro de volta porque o seu servio quase de certeza no vai ser de qualidade. Artigo por Miguel Angel Alvarez - Traduo de JML
servidor de bases de dados vamos ter que mudar de estratgia. A idia neste ltimo caso instalar MySQL em local e realizar a migrao desde Access em local a MySQL em local e depois ,fazer um backup da base de dados local e subi-la a remoto, tal e qual como se relatou antes. Recomendaes para migrar desde SQL Server a MySQL A verdade que nunca passei por este problema, mas Access tambm nos pode ajudar neste caso. Access permite seleccionar uma base de dados SQL Server e trabalhar desde a prpria interfaz de Access. A idia que Access tambm permite trabalhar com MySQL e possivelmente fazendo uma pontes entre estes dois sistemas gestores podemos exportar dados desde SQL Server a MySQL. O certo que utilizando o prprio Access de ponte poderamos realizar o trabalho. Primeiro exportando de SQL Server a Access e depois de Access a MySQL. Outras bases de dados e outras tcnicas Se a base de dados origem dispem de um driver ODBC no haver (em teoria) nenhum problema para conecta-la com Access, de maneira similar a como se conecta com MySQL. Poderamos utilizar Access para exportar os dados, porque desde ali poderia-se aceder aos dois sistemas gestores de bases de dados Se no temos Access, ou a base de dados original no tem driver ODBC, ou ainda se no funciona correctamente o processo e no sabemos como resolver o problema, outra possibilidade exportar os dados a ficheiros de texto, separados por vrgulas ou algo parecido. Muitas bases de dados tm ferramentas para exportar os dados das tabelas a ficheiros de texto, os quais podem ser introduzidos no nosso sistema gestor destino (MySQL) com a ajuda de alguma ferramenta tal como PhpMyAdmin. Para isso, na pgina de propriedades da tabela encontraremos uma opo para fazer o backup da tabela e para introduzir ficheiros de texto dentro de uma tabela (Insert textfiles into table)
Acedendo a este link poderemos ver um formulrio onde introduzir as caractersticas do ficheiro de texto, como o carcter utilizado como separador de campos, ou o terminador de linhas, etc, junto com o prprio ficheiro com os dados, e PhpMyAdmin encarregar-se- de todo esse trabalho de incluir eses dados na tabela.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
36
Obviamente, necessrio ter a tabela criada em remoto para que se possa introduzir os dados do ficheiro de texto. Mudana de um formato de dados a outro Toda migrao tem de ter em conta muito especialmente, como j se disse, as formas que tenham cada base de dados de guardar a informao. Temos que contar sempre com a possibilidade de transformar alguns dados como podem ser os campos boleanos, datas, campos memo (texto com longitude indeterminada), etc, que podem armazenar-se de maneira diferente em cada um dos sistemas gestores, origem e destino. Nalguns casos possivelmente tenhamos de realizar algum script que realize as mudanas necessrias nos dados. Por exemplo para localizar os valores boleanos guardados como true/false e muda-los a valores inteiros 0 / 1, que como se guarda em MySQL. As datas tambm podem sofrer alteraes de formato, por exemplo, em Access aparece com o formato (dd/mm/aaaa), e em MySQL o formato (aaaa-mm-dd). PHP pode Ajudar-nos na tarefa de fazer este script mas tambm Visual Basic Script para Access pode fazer estas tarefas complexas e a prpria linguagem SQL, base de sentenas dirigidas contra a base de dados. Artigo por Miguel Angel Alvarez - Traduo de JML
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
37
O comando bsico para se alterar colunas o ALTER TABLE, seguido do nome da tabela. Ento, qualquer query de alterao da nossa tabela clientes comear da seguinte forma:
ALTER TABLE clientes
1. Adicionando colunas: Para adicionar colunas a uma tabela MySQL use o comando ADD, seguido do nome e dos atributos da coluna que ser adicionada, e da sua posio dentro da tabela, com o auxlio do parmetro AFTER. Considerando que adicionaremos a coluna email tabela clientes, nosso cdigo fica assim:
ALTER TABLE clientes ADD email char(80) not null AFTER fone;
Para ver o resultado das alteraes, d o comando DESCRIBE clientes. 2. Eliminando colunas: O comando bsico para se eliminar colunas de uma tabela DROP, seguido do nome da coluna. Use este comando com cuidado, pois todas as informaes contidas dentro da coluna sero perdidas. Assim, para eliminar nossa recm criada coluna email, usaremos a seguinte query:
ALTER TABLE clientes DROP email;
Testaram? Simples e legal. 3. Alterando colunas: O comando bsico para alterao de atributos e nome de colunas CHANGE, seguida da denominao da coluna a ser alterada e dos novos atributos. Para mudar os atributos da coluna fone, utilizaremos a seguinte query:
ALTER TABLE clientes CHANGE fone fone char(30) not null;
Vocs devem ter percebido que a palavra 'fone' foi utilizada duas vezes. Isso ocorre porque se indica primeiro a coluna e depois seus novos atributos, e o nome da coluna um de seus atributos.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 38
Supomos que queiramos agora somente mudar o nome da coluna, e manter seus demais atributos:
ALTER TABLE clientes CHANGE fone telefone char(30) not null;
Veja as alteraes com DESCRIBE clientes; Muito cuidado ao se alterar atributos de colunas, especialmente datatypes, pois todas as informaes que no podem ser interpretadas como caractersticas do novo datatype sero perdidas. Boa sorte em seus trabalhos e at a prxima. Artigo por Vincius Delgado
- EXTENDED: Verifica toda a rvore de ndices, as ligaes dos ndices com os dados e o dado propriamente dito. Observe que medida que caminhamos nas opes aumentamos a complexidade da verificao, aumentando a capacidade de deteco de problemas. Por outro lado, quanto maior o nvel de verificao, maior ser o tempo de execuo da tarefa. De um modo geral, os problemas com tabelas esto associados aos seus ndices, e neste caso, o modo padro de verificao suficiente na maioria dos casos. A seguir est ilustrada a execuo de uma verificao de 3 tabelas:
No exemplo vemos que a tabela Cidade est OK, isto , no h nenhuma anomalia. A segunda tabela (Pais) retornou a mensagem "Table is already up to date" o que significa dizer que havia algum problema na tabela, mas o mesmo j foi corrigido pelo prprio comando de verificao. E por ltimo, percebemos que a tabela Lingua est corrompida, portanto teremos que corrigila. O mesmo procedimento pode ser executado atravs do utilitrio myisamchk, caso a tabela seja do tipo MyISAM. O myisamchk apresenta vrios parmetros de execuo e pode ser utilizado para verificao, correo e otimizao de tabelas. O detalhe em relao a este utilitrio que ele no se comunica com o servidor fazendo um acesso direto aos arquivos da tabela a ser verificada. Por isto, pode ocorrer problemas de concorrncia no dado, que deve ser eliminada atravs da utilizao de um LOCK de leitura na tabela a ser verificada: mysql>LOCK TABLES Cidade READ, Pais READ, Lingua READ; .... mysql>UNLOCK TABLES; A execuo do myisamchk para o mesmo problema ilustrada a seguir, sendo que a opo -C utilizada significa CHANGED. Para obter a lista completa de parmetros utilize a opo --help. shell> cd DATADIR shell>myisamchk -C Cidade, Pais, Lingua Uma vez detectado o problema na tabela, como o caso da tabela Lingua do exemplo anterior, necessrio corrigir a estrutura desta tabela. Para a correo de tabelas utilizamos o comando REPAIR TABLE, que pode ser executado em dois modos: - QUICK Tenta corrigir apenas a rvore de ndices, no manipula os dados da tabela;
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
40
- EXTENDED Sero recriados todos os ndices da tabela linha a linha, refazendo os apontamentos destes ndices para os dados. O myisamchk pode ser utilizado para a correo de tabelas ao utilizar-se as opes -r ou -o. A seguir vamos fazer a correo da tabela Lingua atravs do REPAIR TABLE e do myisamchk:
shell>cd DATADIR shell>myisamchk -r Lingua No exemplo, vimos que a tabela Lingua foi corrigida com sucesso pelo comando REPAIR TABLE, como mostra o comando CHECK TABLE EXTENDED executado na tabela. Portanto, procure verificar as suas tabelas periodicamente, como exemplo, poderamos criar um script e agendlo para fazer a verificao de todas as tabelas do sistema uma vez por semana. Isto poderia ser feito via cron, no caso do Linux ou qualquer agendador de tarefas do SO. Assim, voc reduz as possibilidades de a sua aplicao parar por causa de problemas em tabelas. Abraos e at breve! Artigo por Eber M. Duarte
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
41
parmetros relativos ao InnoDB, que o tipo de tabela transacional do MySQL (veremos os tipos de tabelas em breve). Por exemplo, possvel definir a partir desta ferramenta os arquivos que compem o tablespace e logs de transao do InnoDB, apontando os seus tamanhos e localizao dentro do sistema de arquivos. Alm desta ferramenta para a administrao, foi anunciado na MySQL Users Conference em abril/2004, o MySQL Query Browser que tem como objetivo fornecer aos usurios do banco de dados mecanismos simplificados e visuais para uma fcil construo de consultas SQL. Esta ferramenta possui recursos avanados de edio de comandos SQL, e estar disponvel para download no site www.mysql.com, dentro de algumas semanas. Com isto, a ferramenta grfica disponvel atualmente para o MySQL, o MySQLCC, ser substituda completamente por estes dois novos aplicativos. Espero que apreciem estas ferramentas. Abraos e at a prxima! Artigo por Eber M. Duarte
dados (inclusive de diferentes verses) Oracle. Ao criar um database link possvel utilizar e referenciar tabelas e vises do outro banco de dados, acrescentando ao final do nome destes objetos @nome_do_dblink. Com o dblink e os privilgios necessrios possvel utilizar comandos SELECT, INSERT, UPDATE, DELETE ou LOCK TABLE sobre os objetos desejados do banco de dados remoto, sabendo que uma transao do banco de dados ir incluir os comandos DML (linguagem de manipulao de dados) direcionados a dblinks, tornando as operaes de COMMIT e ROLLBACK sobre tais bases, transparente.
Para a criao de um database link alguns pr-requisitos devem ser observados: O usurio que ir criar o database link precisa ter o privilgio de sistema CREATE DATABASE LINK (para database links privados) ou CREATE PUBLIC DATABASE LINK (para database links pblicos), alm do privilgio de sistema CREATE SESSION no banco de dados Oracle remoto. A ferramenta Oracle Net precisa estar instalada tanto para o banco de dados local quanto para o remoto. O valor da varivel GLOBAL_NAMES na instncia onde o database link ser criado, se configurada no arquivo de inicializao ou na sesso corrente (ALTER SESSION SET) do banco de dados como TRUE o nome global do banco de dados remoto deve ser utilizado (composto pelo nome_do_banco.domnio, ou seja, os parmetros db_name.db_domain do arquivo de inicializao: initSID.ora). O nome global do banco de dados tambm pode ser descoberto atravs da execuo do seguinte comando SELECT no banco remoto: select GLOBAL_NAME from GLOBAL_NAME; A criao, propriamente dita de um database link realizada conectando-se no banco de dados local com um usurio que possua os privilgios necessrios e executando o seguinte comando: CREATE DATABASE LINK nome_do_dblink CONNECT TO usurio_banco_remoto IDENTIFIED BY senha USING 'connect_string';
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
44
Exemplo: CREATE DATABASE LINK PRODUC CONNECT TO scott IDENTIFIED BY tiger USING 'PRODUC'; Com o comando especificado acima, o usurio atualmente conectado pode conectar-se ao banco de dados remoto PRODUC com se fosse o usurio Scott/tiger deste banco de dados remoto. Vale lembrar que o usurio especificado na criao do dblink deve existir no banco de dados remoto e caso a senha do usurio de conexo neste banco seja alterada necessrio destruir (DROP DATABASE LINK) e recriar o dblink com a identificao da nova senha do usurio de conexo, caso contrrio o dblink deixar de funcionar. Quando o usurio especificado, juntamente com sua senha, na clusula CONNECT TO, tem-se um database link especificado, caso contrrio, tem-se um database link annimo (ou conectado). No caso de database links annimos o usurio da sesso corrente ser utilizado como padro. Por exemplo: CREATE DATABASE LINK PRODUC USING 'PRODUC'; O valor especificado na clusula USING conhecido como connect_string (ou net_connect_string a partir do Oracle8i). A connect string precisa estar definida no Net8, no arquivo de configuraes de nome TNSNAMES.ORA. Por exemplo: PRODUC = (DESCRIPTION = (ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = meteoro) (Port = 1521)) (CONNECT_DATA = (SID = PRODUC) (GLOBAL_NAME = PRODUC.com.br) (SERVER = DEDICATED))) Para testar se o dblink foi criado com sucesso pode-se utilizar o seguinte comendo SELECT: SELECT * FROM emp@PRODUC; Para manter-se a transparncia no acesso a objetos de outros bancos de dados pode-se criar sinnimos pblicos para os objetos acessados atravs do dblink. Por exemplo: CREATE PUBLIC SYNONYM emp FOR scott.emp@PRODUC Pode-se tambm criar um dbkink como PUBLIC, que permite a todos os usurios do banco de dados local acessar os objetos do banco de dados remoto. Em geral, a opo de databases links pblicos so criados apenas quando se utiliza a clusula de autenticao, garantindo o aspecto de segurana no acesso a dados. Esta opo de database link est disponvel apenas em configurao de servidores multi-thread.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
45
Exemplo: CREATE SHARED PUBLIC DATABASE LINK PUBLIC CONNECT TO scott IDENTIFIED BY tiger AUTHENTICATED BY admin IDENTIFIED BY adm123 USING 'PRODUC'; A clusula AUTHENTICATED especifica o usurio e senha, neste exemplo ADMIN/ADM123 na instncia remota, permitindo autenticar o usurio para o servidor remoto, potencializando o aspecto de segurana. Para identificar quais os database links disponveis ao usurio atual e para onde os mesmos apontam o seguinte comando SELECT pode ser utilizado para acessar a view de DBA, dba_db_links: select OWNER, DB_LINK, USERNAME, HOST, to_char(CREATED,'MM/DD/YYYY HH24:MI:SS') Criao from dba_db_links order by OWNER, DB_LINK; Onde: Owner Nome do usurio criou o dblink; DBLink Nome do dblink; Username Nome do usurio para log no banco remoto; Host SQL*Net de conexo (encontrada no arquivo TNSNAMES.ORA); Created Data e hora de criao do dblink. Restries: As seguintes operaes no podem ser desenvolvidas utilizando-se database links: Conceder privilgios em objetos remotos; Executar operaes de DESCRIBE em alguns objetos remotos, com exceo de tabelas, views, procedures e functions; Realizar operaes de ANALYZE objetos remotos; Definir integridade referencial; Conceder roles usurios em a banco de dados remoto; Obter roles alm dos padres do usurio de conexo no banco de dados remoto e Executar consultas com hash joins.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
46
O MySQL possui um mecanismo que permite limitar o acesso de um usurio a apenas um banco, tabela ou coluna, alm de poder controlar o acesso de acordo com o host a partir de onde est sendo feita a conexo com o servidor. Pode-se ainda, conceder privilgios diferentes para cada host de onde o usurio possa estabelecer a conexo. Assim, possvel que determinados comandos possam ser executados somente quando o usurio estiver em um host especfico, por exemplo o mesmo host do servidor MySQL (localhost). O MySQL armazena as informaes dos seus usurios em 4 tabelas que esto localizadas no banco de dados mysql. Estas tabelas so a user, db, tables_priv e columns_priv. A tabela user armazena as informaes de todos os usurios do banco e os privilgios globais deste usurio. A tabela db armazena os privilgios dos usurios especficos de um banco de dados. Finalmente, as tabelas tables_priv e columns_priv armazenam os privilgios associados a tabelas e colunas, respectivamente. Como estas tabelas possuem as informaes dos usurios, bem como os seus privilgios, recomenda-se que apenas o administrador do banco de dados tenha acesso ao banco mysql (usurio root). Para criar usurios e conceder privilgios no MySQL, utiliza-se o comando GRANT. Ao executar um comando GRANT para um usurio que no existe, o mesmo ser criado. Um GRANT para um usurio j existente adicionar os novos privilgios aos j concedidos anteriormente. A sintxe resumida do comando GRANT exibida a seguir: GRANT priv [(colunas)] [, priv [(colunas)]] ... ON {*.* | db.* | db.tabela} TO usuario [IDENTIFIED BY 'senha'] [, usuario [IDENTIFIED BY 'senha']] ... [WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR contador | MAX_UPDATES_PER_HOUR contador | MAX_CONNECTIONS_PER_HOUR contador]] No comando acima os [ ] indicam que o comando opcional. O primeiro item a ser informado (so) o(s) privilgio(s) a ser(em) concedido(s) ao(s) usurio(s). A lista de privilgios existentes no MySQL descrita abaixo: Privilgio Descrio ALL [PRIVILEGE Todos os privilgios exceto GRANT OPTION S] ALTER CREATE Permite executar ALTER TABLE Permite executar CREATE TABLE
CREATE TEMPORARY Permite executar CREATE TEMPORARY TABLE TABLES DELETE DROP EXECUTE FILE INDEX Permite executar DELETE Permite executar DROP TABLE Permite executar stored procedures (MySQL 5.0) Permite executar SELECT ... INTO OUTFILE e LOAD DATA INFILE Permite executar CREATE INDEX e DROP INDEX
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
47
Permite executar INSERT Permite executar LOCK TABLES em tabelas que voc tenha o privilgio SELECT Permite executar SHOW FULL PROCESSLIST
REFERENCE Ainda no est implementado S RELOAD Permite executar FLUSH REPLICATIO Permite ao usurio obter a localizao do Master ou Slave N CLIENT REPLICATIO Necessrio para a replicao Slave (leitura dos eventos do log binrio do N SLAVE Master) SELECT Permite executar SELECT SHOW exibe todos os bancos de dadosE DATABASES SHUTDOWN Permite executar mysqladmin shutdownE SUPER UPDATE USAGE GRANT OPTION INSERT Permite executar CHANGE MASTER, KILL , PURGE MASTER LOGS e SET GLOBAL. Permite conectar-se ao servidor uma vez, mesmo que o max_connections tenha sido atingido Permite executar UPDATE Sinnimo para "no privileges'' Permite ao usurio repassar os seus privilgios Permite executar INSERT
Uma vez informados os privilgios do usurio, voc dever indicar o nvel ao qual o privilgio se aplica, sendo possvel especificar trs nveis: *.* db.* db.tb Privilgio global Qualquer tabela do banco db Apenas a tabela tb do banco de dados db. Para especificar apenas algumas colunas de uma determinada tabela, estas devero ser listadas ao lado do privilgio (priv (colunas))
Depois do nvel voc dever indicar o usurio, ou a lista de usurios, para os quais os privilgios se aplicam. No MySQL o usurio constitudo de um nome mais o host de onde ele poder acessar o servidor (user@host). Caso voc no informe o host para o usurio, o MySQL assumir "%", isto , todos os hosts. A senha do usurio opcional, mas recomendado sempre inform-la no momento de criao do usurio, por questes de segurana. Para adicionar privilgios a um usurio existente o IDENTIFIED BY poder ser omitido. No exemplo a seguir criado um usurio com o nome teste que pode se conectar somente do host onde o servidor est em execuo (localhost), o usurio s poder fazer SELECT nas colunas nome e idade da tabela pessoa, que se encontra no banco de dados rh. A senha do usurio 12345.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
48
mysql>GRANT SELECT (nome, idade) ON rh.pessoa TO teste@localhost IDENTIFIED BY "12345"; Para listar os privilgios deste usurio utilize o comando: mysql>SHOW GRANTS FOR teste@localhost; Voc pode especificar um conjunto de hosts utilizando o caracter "%", neste caso possvel dar acesso a um usurio dentro de uma faixa de IPs ou DNS. Usurios annimos tambm podem ser criados informando um nome com o caracter espao (" "). No exemplo a seguir, o usurio remoto poder executar UPDATE e INSERT em qualquer tabela do banco de dados rh, sendo possvel a conexo ao servidor a partir de qualquer mquina no domnio mysqlbrasil.com.br: mysql>GRANT UPDATE, INSERT ON rh.* TO remoto@"%.mysqlbrasil.com.br" IDENTIFIED BY "remoto"; Ou utilizando IP: mysql>GRANT UPDATE, INSERT ON rh.* TO remoto@"200.236.13.%" IDENTIFIED BY "remoto"; Um usurio annimo com os mesmos privilgios do usurio remoto seria criado da seguinte forma: mysql>GRANT UPDATE, INSERT ON rh.* TO " "@"%mysqlbrasil.com.br" IDENTIFIED BY "anonimo"; Finalmente, a opo GRANT OPTION utilizada para que o usurio possa conceder os seus privilgios para outros usurios do banco. Alm disto, voc poder limitar os recursos do usurio com as opes MAX_QUERIES_PER_HOUR, MAX_UPDATES_PER_HOUR ou MAX_CONNECTIONS_PER_HOUR. Para remover um privilgio do usurio utilize o comando REVOKE mostrado abaixo: REVOKE priv [(colunas)] [, priv [(colunas)]] ... ON {*.* | db.* | db.tabela} FROM usuario [, usuario] ... Lembre-se de que a parte ON do REVOKE dever coincidir com a parte ON do GRANT que voc deseja remover, caso isto no se verifique o comando REVOKE no ter efeito algum. Alm disto, o comando REVOKE remove apenas os privilgios do usurio, mas o usurio continuar existindo. A remoo do usurio dever ser feita com um DELETE explcito na tabela de usurios do MySQL, aps terem sido Removidos todos os seus privilgios com o comando REVOKE. Observe que para remover o usurio voc dever ter privilgio para executar DELETE na tabela user do mysql. Geralmente, esta tarefa executada pelo administrador do banco (root). mysql>DELETE FROM mysql.user WHERE user="teste" AND host="localhost"; Feito isto, voc ter que executar um comando FLUSH PRIVILEGES para que o MySQL possa atualizar os privilgios que esto em memria. mysql>FLUSH PRIVILEGES;
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
49
Aqui estamos descrevendo os comandos para a manipulao de usurios, sendo que esta a maneira de entendermos como funciona a criao de usurios no MySQL. Uma forma mais intuitiva para executar esta tarefa pode ser encontrada no MySQL Administrator, que foi apresentado no ltimo artigo. Problemas para a conexo com o MySQL a partir do localhost: Ao instalar o MySQL so criados o usurio root com todos os privilgios (administrador), podendo se conectar somente do host local sem senha, e o usurio annimo com privilgios apenas no banco de dados test, que pode se conectar apenas do host local sem senha. Para autentiticar um usurio durante a conexo com o servidor, o MySQL armazena em memria a listas de todos usurios, hosts e senhas cadastrados no banco e as ordena do host mais especfico para o menos especfico. Caso existam dois hosts iguais, os usurios mais especficos viro antes do usurio annimo. Feito isto, a cada conexo ser pesquisada nesta lista a primeira ocorrncia que coincida o host, usurio e senha informados no momento da tentativa de conexo. Tomemos o caso em que aps a instalao do MySQL, criamos um usurio que possa se conectar a partir de qualquer host dentro do domnio onde se encontra o servidor MySQL: mysql>GRANT ALL ON rh.* TO user@"192.168.0.%" IDENTIFIED BY "12345"; Neste caso, o MySQL cria em memria a lista dos usurios da seguinte forma: Usurio Senha root@localhost " "@localhost user@"192.168.0.%" 12345 Este usurio ser capaz de se conectar ao servidor MySQL a partir de qualquer mquina no domnio, exceto o host local, pois neste caso, ao pesquisar na lista pelo user@localhost, a primeira ocorrncia encontrada a do usurio annimo, j que qualquer usurio pode ser considerado annimo pelo MySQL. O detalhe que as senhas destes usurios no coincidem, o que gera um erro de "Acesso Negado". Para evitar a situao acima voc dever excluir o usurio annimo ou adicionar o mesmo usurio para se conectar remoto e a partir do host local, da seguinte forma: mysql>GRANT ALL ON rh.* TO user@"192.168.0.%" IDENTIFIED BY "12345", user@localhost IDENTIFIED BY "12345"; Assim a ordenao ficaria: Usurio Senha root@localhost user@localhost 12345 " "@localhost user@"192.168.0.%" 12345 Desta forma, o primeiro registro encontrado no mais o usurio annimo e sim o user@localhost, portanto a conexo ser estabelecida com sucesso. Para evitar este tipo de transtorno melhor remover o usurio annimo aps a instalao do servidor, eliminando tambm eventuais problemas de segurana.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
50
Assim, todas as vezes que h uma escrita na tabela, o MySQL precisa travar a tabela como um todo, o que bloqueia por um instante o acesso esta tabela, mesmo para processos que tentem acessar registros que esto sendo modificados. Assim, gerada uma fila de espera at que o lock seja liberado e os outros processos possam ser executados. Por outro lado, estas tabelas so extremamente rpidas, devido sua arquitetura simplificada. 2. HEAP: Tabelas HEAP so armazenadas em memria e por isto so extramente rpidas, por outro lado o seu contedo voltil, uma vez que no so gravadas em disco. Caso haja uma queda do SGBD os dados destas tabelas sero perdidos. Alm disto, necessrio um processo para dar a carga inicial nos dados quando o servidor de banco iniciar e sua execuo. A principal aplicao das tabelas HEAP seria para tabelas que so consultadas com muita frequncia, mas que no sofrem muitas alteraes (lookup tables). 3. MERGE: As tabelas MERGE so colees de tabelas MyISAM idnticas. Este recurso permite a diviso de uma tabela grande em vrias partes menores, e ainda assim permite acesso ao contedo de todas elas como se fossem uma nica tabela. O exemplo a seguir ilustra a criao de uma tabela MERGE: CREATE TABLE t1 ( a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, message CHAR(20) ); CREATE TABLE t2 ( a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, message CHAR(20) ); INSERT INTO t1 (message) VALUES ('Testing'),('table'),('t1'); INSERT INTO t2 (message) VALUES ('Testing'),('table'),('t2'); CREATE TABLE total ( a INT NOT NULL AUTO_INCREMENT, message CHAR(20), INDEX(a) )TYPE=MERGE UNION=(t1,t2); SELECT * FROM total; a 1 2 3 1 2 3 message Testing table t1 Testing table t2
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
52
Percebam que as tabelas t1, t2 e total so idnticas e as duas primeiras so tabelas MyISAM (foi omitido o TYPE no comando CREATE TABLE). Ao se submeter um SELECT na tabela total, voc tem acesso ao contedo das tabelas t1 e t2, simultaneamente. A principal vantagem da tabela MERGE permitir a diviso de tabelas grandes em tabelas pequenas, mais facilmente gerenciadas. Tambm permite superar as limitaes do sistema operacional em relao ao tamanho de arquivos, uma vez que a tabela seria dividida em vrias partes, onde cada parte poderia atingir o tamanho mximo de arquivo. A desvantagem que podemos fazer apenas MERGE de tabelas MyISAM idnticas. 4. BDB: O tipo de tabela BDB vem de BerkeleyDB, e desenvolvido pela Sleepycat (http://www.sleepycat.com). O BDB prov ao MySQL um manipulador de tabelas com controle de transao, isto , voc poder utilizar os comandos COMMIT e ROLLBACK, alm de fornecer a recuperao automtica de dados em caso de queda do sistema. O BDB apresenta um mecanismo de lock em nvel de pgina, onde apenas os dados de uma mesma pgina ficaro bloqueados durante um perdo de lock. alm disto, voc poder ter vrios locks ativos numa nica tabela BDB, uma vez que a tabela poder ser constituda de vrias pginas. 5. InnoDB: O InnoDB um tipo de tabela transacional, desenvolvido pela InnoDBase Oy. A partir da verso 4.0 do MySQL ele passa a ser parte integrada das distribuies do MySQL. O InnoDB apresenta, alm da capacidade transacional, outros recursos importantes: Integridade referencial, com implementao dos constraints SET NULL, SET DEFAULT, RESTRICT e CASCADE; Ferramenta de backup on-line (ferramenta comercial, no GPL); Lock de registro, como Oracle, DB2, etc; Nveis de isolamento; Armazenamentos de dados em tablespace. Por se tratar de um tipo de tabela com recursos mais avanados, requer mais espao em memria e disco, alm de se apresentar, em determinadas situaes, um pouco mais lento que MyISAM. Apesar disto, o InnoDB tem se mostrado extremamente rpido se comparado com outros SGBDs transacionais. A vantagem da utilizao de tipos de tabela que voc poder optar por utilizar um determinado tipo ou outro dependendo dos requisitos exigidos pela sua aplicao. Por exemplo, se a sua aplicao apenas de consulta voc pode optar pelo tipo MyISAM em vez do InnoDB, com isto voc evita o overhead da transao, obtendo um maior desempenho. importante lembrar que voc poder utilizar vrios tipos de tabelas em um mesmo banco de dados. Neste caso, deve-se tomar cuidado com a utilizao de determinados recursos, por exemplo, se voc tiver uma transao envolvendo tabelas InnoDB e MyISAM e voc submeter um comando ROLLBACK, apenas os comandos executados no InnoDB sero desfeitos, enquanto que os comandos executados no MyISAM persistiro. A utilizao do tipo de tabela correto um fator chave para determinar o desempenho da sua aplicao. Abraos e at a prxima! Artigo por Eber M. Duarte
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
53
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.
54