Você está na página 1de 54

Manuais e recursos para desenvolvimento web www.criarweb.

com

Manual de MySQL

Autores do manual Este manual foi criado pelos seguintes colaboradores de Criarweb.com: Miguel Angel Alvarez Carlos Cuenca Díaz Vinícius Delgado Consultoria Informática http://www.basemax.com.br Tradução de JML
(5 capítulos) (12 capítulos) (1 capítulo)

Eber M. Duarte

http://www.devmedia.com.br (4 capítulos)

Damaris Fanderuff

http://www.devmedia.com.br (1 capítulo)

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

1

Manuais e recursos para desenvolvimento web www.criarweb.com

Instalação de MySQL em Windows
Um dos pontos mais fortes das páginas em PHP é a possibilidade de usar bases de dados mediante funções de destacada simplicidade e potência. Estas bases de dados podem servir ao nosso site para armazenar conteúdos de uma forma sistemática que nos permita classificá-los, procurá-los e editá-los rápida e facilmente. Uma base de dados é um conjunto de tabelas nas quais armazenamos diferentes registos (artigos de uma loja virtual, provedores ou clientes de uma empresa, filmes em exibição de um cinema...). Estes registos são catalogados numa função de diferentes parâmetros que os caracterizam e que tem uma utilidade a hora de classifica-los. Assim, por exemplo, os artigos de uma loja virtual poderiam catalogar-se a partir de diferentes campos como pode ser o número de referência, nome do artigo, descrição, preço, provedor... A base de dados mais difundida com o sistema UNIX-Apache é sem duvida MySQL. Tal e como acontece com o Apache, está disponível uma versão para Windows e pode ser obtida gratuitamente. Pô-lo a funcionar não tem muita dificuldade. Uma vez instalado o programa podemos executar as nossas ordens em modo MS-DOS. Para isso, abrimos uma janela MS-DOS e colocamo-nos no directório bin de mysql. Neste directório encontram-se os ficheiros executáveis. Aqui teremos de encontrar um ficheiro chamado mysqld. No caso da versão mais actual durante a redacção deste artigo, este ficheiro chama-se mysqld-shareware. Uma vez executado este ficheiro podemos executar o seguinte: mysql Uma vez chegados a este ponto veremos como uma mensagem de bem-vinda aparece no nosso ecrã. Neste momento encontramo-nos dentro da base de dados. A partir de ai podemos realizar todo tipo de operações por comandos SQL. Não vamos entrar numa explicação pormenorizada do funcionamento dessa base de dados pois isso dava-nos para um manual inteiro. Como resumo, aqui propomos as operações mais básicas: Instrucción Show databases; Use nome_da_base Create Database nome_da_base; Drop Database nome_da_base; Show tables; Describe nome_da_tabela; Load Data Local Infile Descripción Mostra o conjunto da base de dados presente no servidor Determina a base de dados sobre a qual vamos trabalhar Cria uma nova bd com o nome especificado Elimina a base de dados com o nome especificado Mostra as tabelas presentes na base de dados actual Descreve os campos que compõem a tabela Cria os registos da tabela a partir de um ficheiro de

Drop Table nome_da_tabela; Apaga a tabela da base de dados

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização.

2

Manuais e recursos para desenvolvimento web www.criarweb.com

"ficheiro.txt" Into Table nome_da_tabela; Quit

texto no qual separamos por tabulações 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 prático usar qualquer outra base de dados com um editor e exportar a seguir a tabela num ficheiro de texto configurado para deixar tabulações entre cada campo. Isto é possível em Access, por exemplo, clicando com o botão direito sobre a tabela que queremos converter e escolhendo a opção exportar. Uma janela de dialogo aparecerá na qual escolheremos guardar o ficheiro em tipo texto. O passo seguinte será escolher um formato delimitado por tabulações sem qualificador de texto. Outra possibilidade que pode ser muito prática 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 são 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 difícil. Do mesmo modo, dentro do directório bin de MySQL, podemos encontrar uma pequena aplicação chamada MySqlManager. Trata-se de uma interfaz windows, mais agradável a vista e ao uso do que a que obtemos executando o ficheiro mysql. Neste caso, as sentenças SQL devem realizar-se sem o ponto e vírgula final. Artigo por Miguel Angel Alvarez - Tradução de JML

Tipos de dados de MySQL
Depois da fase de design da base de dados, e uma vez que se passou a tabelas, é necessário criar as tabelas correspondentes dentro da base de dados. Para cada campo de cada uma da tabelas, é necessário determinar o tipo de dados que contem, para poder ajustar a estrutura da base de dados, e conseguir um armazenamento com a menor utilização de espaço. Este artigo descreve cada um dos tipos de dados que se podem ter num campo MySQL, para a versão 4.xx.xx. Os tipos de dados que pode ter um campo, podem-se agrupar em três grandes grupos: 1. Tipos numéricos 2. Tipos de Data 3. Tipos de Cadeia 1 Tipos numéricos: Existem tipos de dados numéricos, que se podem dividir em dois grandes grupos, os que estão em vírgula flutuante (com decimais) e os que não. TinyInt: é um número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -128 até 127. Sem signo, a margem de valores é de 0 até 255 Bit ou Bool: um número inteiro que pode ser 0 ou 1.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização. 3

Manuais e recursos para desenvolvimento web www.criarweb.com

SmallInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -32768 até 32767. Sem signo, a margem de valores é de 0 até 65535. MediumInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -8.388.608 até 8.388.607. Sem signo, a margem de valores é de 0 até 16777215. Integer, Int: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -2147483648 até 2147483647. Sem signo, a margem de valores é de 0 até 429.496.295 BigInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é 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: número pequeno em vírgula flutuante de precisão simples. Os valores válidos vão desde -3.402823466E+38 até -1.175494351E-38,0 eté desde 175494351E-38 até 3.402823466E+38. xReal, Double: número em vírgula flutuante de dupla precisão. Os valores permitidos vão desde -1.7976931348623157E+308 até -2.2250738585072014E-308, 0 e desde 2.2250738585072014E-308 até 1.7976931348623157E+308 Decimal, Dec, Numeric: Número em vírgula flutuante desempacotado. O número 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 não verifica de uma maneira estricta se uma data é válida ou não. Simplesmente comprova que o mês 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 têm copyright dos autores. Não reproduzir sem autorização.

4

Manuais e recursos para desenvolvimento web www.criarweb.com

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: Combinação 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: Combinação 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 variável. 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 diferença entre um tipo e outro é o tratamento que recebem na hora de ordená-los e compará-los. No tipo test ordena-se sem ter importância as maiúsculas e as minúsculas e no tipo blob ordena-se tendo em conta as maiúsculas e minúsculas. Os tipos blob utilizam-se para armazenar dados binários como podem ser ficheiros.
Manual de MySQL: http://www.criarweb.com/manuais/mysql/ © Os manuais de CriarWeb.com têm copyright dos autores. Não reproduzir sem autorização. 5

Tamanho de Armazenamento 3 bytes 8 bytes 4 bytes 3 bytes 1 byte

Manuais e recursos para desenvolvimento web www.777.215 caracteres.) 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 número de valores 1. MEDIUMTEXT LONGBLOB. Não reproduzir sem autorização. Manual de MySQL: http://www. um ou vários valores de uma lista. MediumBlob e MediumText: um texto com um máximo de 16.'value2'.295. LONGTEXT ENUM('value1'.) SET('value1'. 2..criarweb. Enum: campo que pode ter um único valor de uma lista que se especifica.com TinyText e TinyBlob: Coluna com uma longitude máxima de 255 caracteres.com/manuais/mysql/ © Os manuais de CriarWeb. Tipo de campo CHAR(n) VARCHAR(n) TINYBLOB.. O tipo Enum aceita até 65535 valores diferentes. LongBlob e LongText: um texto com um máximo de caracteres 4..com têm copyright dos autores. que permite realizar todas as tarefas de administração e trabalho de MySQL através de um interface gráfico. dependendo do número de valores Diferença 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 Artigo por Carlos Cuenca Díaz Mysql Control Center MyCC é uma consola de Administração para MySQL. 6 . 3..criarweb. Set: um campo que pode conter nenhum. TEXT MEDIUMBLOB.294.'value2'.. TINYTEXT BLOB.. A lista pode ter um máximo de 64 valores.967. 4 ó 8 bytes. e que vem a resolver uma das maiores objecções que os usuários tinham de MySQL. Blob e Text: um texto com um máximo de 65535 caracteres. Há que ter em conta que devido aos protocolos de comunicação os pacotes podem ter um máximo de 16 Mb.

criarweb. Existem actualmente versões disponíveis para Linux e para Windows. apagar.com/manuais/mysql/ © Os manuais de CriarWeb. Aparece uma caixa de diálogo na qual se podem configurar todos os parâmetros de acesso ao servidor. nome do usuário. primeiro terás que fazer download de MySQL. Não reproduzir sem autorização. primeiro terás de o dar de alta através do ícone de Registrar servidor. administrador do gestor. Ao fazer click sobre um usuário aparece a janela de configuração do usuário.Manuais e recursos para desenvolvimento web www. Manual de MySQL: http://www. e administração das tabelas. como o nome do servidor. porto etc. modificar as propriedades dos usuários de MySQL. password. Uma vez conectado ao servidor poderá-se aceder às tarefas de administração dos usuários de MySQL.com Para utiliza-lo. Para poder trabalhar com um servidor de MySQL.com têm copyright dos autores.criarweb.com. Administrador de Usuários A partir dele pode-se acrescentar. 7 .

permite estabelecer um sistema de permissões geral ou individualizado para cada uma das tabelas. 8 . Administração do servidor A janela de Administração do servidor consta de três opções nas quais se pode aceder à lista de processos. limitando de esta forma.com Nela podem-se configurar o nome de usuário e a password.Manuais e recursos para desenvolvimento web www. Para além disso permite dar-lhe permissão ao usuário para ceder a outros (GRANT OPTION). Em relação às permissões. Não reproduzir sem autorização.com/manuais/mysql/ © Os manuais de CriarWeb.criarweb. Manual de MySQL: http://www. às variáveis de estado do servidor e às variáveis de configuração. os riscos de acesso não autorizado.com têm copyright dos autores.criarweb. temos de especificar o servidor desde o qual vai aceder. Um dos pontos fortes em relação a segurança é que ao definir um usuário.

Desde a opção de estado. e pode-se personalizar para mostrar as que interessem. Ao seleccionar uma base de dados. o número de consultas por segundo. os tipos de dados e os parâmetros opcionais de cada um deles. o tempo de funcionamento. Desde a opção de processos pode-se ver o estado de cada um dos processos ativos. podem-se ver os nomes dos campos.criarweb. ou guardar o conteúdo das variáveis de estado. 9 . vendo as suas propriedades e com a opção de para-los através de um Kill.com têm copyright dos autores. pode-se ver o conteúdo de cada uma das variáveis de estado.Manuais e recursos para desenvolvimento web www. onde podemos ver informação relacionada com a base de dados. As tabelas podem-se eliminar. etc.com Desde esta janela para além de poder fazer um Ping ao servidor.com/manuais/mysql/ © Os manuais de CriarWeb. para-lo. Janela de Base de Dados Ao seleccionar uma base de dados dentro de uma selecção de bases de dados. Manual de MySQL: http://www.criarweb. Quando se selecciona uma tabela. vaziar e renomear. como por exemplo o número de tabelas. pode-se ver os nomes das tabelas e o número de registos que contem. Desde a opção de variáveis pode-se aceder ao valor de cada uma das variáveis de configuração do servidor MySQL. aparece a janela de base de dados. Não reproduzir sem autorização.

com/manuais/mysql/ © Os manuais de CriarWeb. existe uma opção para configurar os índices que tem. acede-se a estrutura.com Esta janela permite criar novos campos. Mediante o ícone de ferramentas. Manual de MySQL: http://www. optimiza-la e repara-la.criarweb. pode-se analisar a tabela.com têm copyright dos autores. Não reproduzir sem autorização. Ao fazer duplo click sobre uma tabela mostra-se na janela os dados que contem.criarweb. e se é chave ou não e o valor pré-determinado. o tamanho. Dentro da tabela. elimina-los ou modificar as suas propriedades. Fazendo click sobre qualquer um dos campos. 10 . Para cada campo pode-se escolher o tipo de dados.Manuais e recursos para desenvolvimento web www.

Foi substituído pelo conjunto de programas MySQL Administrator e MySQL Query Browser.com têm copyright dos autores.Manuais e recursos para desenvolvimento web www.com Desde essa janela podemos seleccionar os campos que contem. em http://dev. Trata-se de um software multi-plataforma. 11 . incluindo estatísticas de uso visualização dos logs de servidor gerenciamento de cópias de segurança e recuperações visualização de catálogos de dados. como podes ver esta é a consola de acesso ao servidor MySQL de que estávamos a espera.com/manuais/mysql/ © Os manuais de CriarWeb. Está disponível as últimas versões Linux e Windows para além de muitíssima informação no seguinte endereço: www. Este novo produto supre as carências que tem MySQL Control Center na área de Administração de servidores. Em fim. Não reproduzir sem autorização. Desde a opção de propriedades da tabela acede-se aos atributos. MySQL Administrador é uma ferramenta que permite realizar tarefas administrativas sobre servidores de MySQL incluindo: • • • • • • • • a configuração das opções de início dos servidores inicio e detenção de servidores monitoramento de conexões ao servidor administração de usuários monitoramento do estado do servidor. o modo de escritura.mysql.com/products/mysqlcc/. que por enquanto encontra-se disponível para Linux e Microsoft Windows e que conta com um ambiente gráfico de usuário muito intuitivo. Também na página de MySQL existem uma Manual de MySQL: http://www. e também o tipo de índice que se deseja criar.criarweb. Artigo por Carlos Cuenca Díaz MySQL Administrator MySQL Administrador é o novo software de administração de servidores de Bancos de Dados de MySQL que MySQL AB criou. MySQL Control Center atualmente está depreciado.com/downloads/administrator. por tanto. como por exemplo o tipo de tabela. Instalação e configuração: O download do programa se faz através da página web de MySQL. tornou-se obsoleto e não continua se desenvolvendo.criarweb. etc.mysql. O produto distribui-se como software livre. tanto o download como a sua utilização ilimitada é gratuita. o tamanho máximo de cada fila.

nome de usuário. Não reproduzir sem autorização.mysql. Uma vez introduzidos de forma correta.com/products/administrator/. 12 . assim como as características da máquina na que se está executando o programa. Por este mesmo menu. senha e porto.com/manuais/mysql/ © Os manuais de CriarWeb.com série de FAQs que ajudam na instalação em caso de duvidas. do banco de dados ao qual se deseja conectar. Na barra de menu através de Tools.criarweb. aparece a tela principal do programa: Através da tela principal pode-se ver a informação relativa ao servidor de banco de dados qo qual se conectou. se acessa as opções de configuração do administrador e das conexões que existem configuradas: Manual de MySQL: http://www. Uma vez instalado é necessário configurar uma primeira conexão contra um servidor de MySQL para poder acessar À administração do mesmo. se tem acesso a um console de sistema (Windows ou Linux dependendo do caso). Na tela de configuração se deverão especificar os dados do servidor.criarweb. um cliente de conexão a MySQL sob linha de comandos e a MySQL Query Browser. embora a mesma seja bastante simples.com têm copyright dos autores.Manuais e recursos para desenvolvimento web www. em http://www.

Em conjunto com MySQL Query Browse. Não reproduzir sem autorização. Catalogs: Para mostrar os bancos de dados.com/manuais/mysql/ © Os manuais de CriarWeb. Artigo por Carlos Cuenca Díaz Manual de MySQL: http://www. Restore: Para restaurar as cópias de segurança. 13 . Muitas das opções de configuração do banco de dados são muito simples de entender e de utilizar. nos permite gerenciar qualquer aspecto de um banco de dados MySQL.criarweb. Não cabe dúvida que se trata de um programa extremamente útil e imprescindível para administrar visualmente servidores MySQL.Manuais e recursos para desenvolvimento web www. visualizar. criar e editar as tabelas. Startup variables: Configuração do servidor e as variáveis de início (só acessível se se conectou com um servidor MySQL na máquina local). pelo menos todas as opções mais básicas. Health: Informação sobre o carregamento do servidor Server Logs: O histórico de logs do servidor. Server conections: Visualiza e gerencia as conexões abertas com o servidor de bancos de dados. Algumas utilidades acessíveis desde a janela principal do programa são: Service control: Início e detenção de servidores (só acessível se se conectou com um servidor MySQL na máquina local). Replication Status: Com informação dos sistemas replicados. Backup: Para fazer uma cópia de segurança dos bancos de dados.criarweb.com Na seção de conexões se encontram armazenadas todas as conexões a servidores que existem configuradas. Conclusão Faltava uma ferramenta como MySQL Administrator ao banco de dados. User Administration: Para a gestão de usuários e permissões.com têm copyright dos autores.

os quais podemos copiar no nosso servidor web. Há várias versões disponíveis. inserir dados nas tabelas existentes.net. que posteriormente devemos colocar no nosso servidor web. 14 . Daí podemos fazer download dos ficheiros da última versão da aplicação. Na hora de escrever este artigo era a 2.com phpMyAdmin phpMyAdmin é um programa de distribuição livre em PHP. apagar tabelas e um grande etc.phpmyadmin. como por exemplo Sourceforge. ainda que avisam que o servidor onde se encontra pode estar caído. criado por uma comunidade sem animo de lucro. De modo que. inclusive executar sentenças SQL e fazer um backup da base de dados. para aqueles que não tem o motor de PHP mais potente.criarweb. navegar pelos registos das tabelas. que só trabalha no projecto por amor a arte. quando acedemos a esses ficheiros vemos umas páginas onde podemos encontrar as bases de dados às que temos acesso no nosso servidor de bases de dados e todas as suas tabelas. A página de inicio do programa também nos oferece a possibilidade de ver uma demo online.phpmyadmin.6php.2.zip. mas é recomendável escolher a que nos aconselhem como a última versão estável (The last stable version).com têm copyright dos autores. Este ficheiro é para a versão 4 de PHP. A ferramenta permite-nos criar tabelas.6.com/manuais/mysql/ © Os manuais de CriarWeb. Não reproduzir sem autorização. optaremos pelo ficheiro phpMyAdmin-2. É uma ferramenta muito completa que permite aceder a todas as funções típicas da base de dados MySQL através de uma interface web muito intuitiva. de modo que. A aplicação em si não é mais do que um conjunto de ficheiros escritos em PHP.net/phpMyAdmin/ Manual de MySQL: http://www.Manuais e recursos para desenvolvimento web www. http://www.2. editá-los e apagá-los. que é um site que tem montes de projectos "Open Source".criarweb. mas também temos a possibilidade de obter os ficheiros que tem compatibilidade com a versão 3 de PHP. Página de phpMyAdmin A página de inicio do projecto é http://www. Também podemos encontrar o phpMyAdmin na rede. se o nosso sistema +e Windows.net/.

Por exemplo localhost. que encontramos junto aos ficheiros de phpMyAdmin. Também poderia ser o endereço IP do computador ao que nos ligamos.com A instalar phpMyAdmin Uma vez obtida a última versão temos de a descomprimir. se o computador onde está instalada a base de dados e onde estamos a instalar phpMyAdmin é o mesmo. Não reproduzir sem autorização.com/phpMyAdmin $cfgServers[$i]['host'] string O nome do host da base de dados. como os seus requerimentos. tal e como explica a documentação. Explica dados gerais do programa.inc. Por exemplo: http://localhost/phpMyAdmin ou http://www.com têm copyright dos autores. seguido do directório no que temos os ficheiros. Deveremos aceder à ferramenta através do endereço do servidor web. temos de editar o ficheiro config. no subdirectorio phpMyAdmin.meudominio. Manual de MySQL: http://www. se o nosso servidor é o PWS e colocámos os ficheiros dentro do directório de publicação (Normalmente C:\Inetpub\wwwroot). Por exemplo.Manuais e recursos para desenvolvimento web www. Nota: recordamos que phpMyAdmin é um projecto escrito em PHP. devemos escrever algo similar a http://localhost/phpMyAdmin Se tivéssemos instalado um servidor Apache os colocaríamos na pasta que tivéssemos indicado como "documentRoot". Podemos configurar muitos aspecto na ferramenta.com/manuais/mysql/ © Os manuais de CriarWeb. $cfgPmaAbsoluteUri Devemos atribuí-lo ao path completo necessário para aceder a phpMyAdmin. O primeiro que podemos ler é o ficheiro da documentação.php para mudar os valores de host da base de dados (maquina que tem instalado o MySQL) e o usuário e password com o qual nos vamos conectar. 15 . Posteriormente.criarweb. por conseguinte necessitaremos colocar os ficheiros num servidor web que permita programação de páginas PHP. perguntas frequêntes. que costuma ser htdocs.criarweb. etc. instruções de instalação. Na documentação temos um ponto dedicado por completo a especificar o sentido de cada variável. configuração. ainda que agora só vou comentar os que acho que são essenciais para fazer que funcione. para obter os ficheiros PHP (a ferramenta) e coloca-los dentro do directório ed publicação do nosso servidor web.

Manual de MySQL: http://www.microsoft.mysql.criarweb. a não ser com acesso por TELNET ao servidor da base de dados. O primeiro que temos de fazer no computador que tem o sistema Windows XX e Access é actualizar a versão 6 de Microsoft jet: http://support. Uma vez escolhida uma opção.50.com/downloads/api-myodbc-2. já podemos aceder a phpMyAdmin e trabalhar com a nossa base de dados mais facilmente.criarweb. 16 .com têm copyright dos autores.com/manuais/mysql/ © Os manuais de CriarWeb.ENUS.html Com tudo isto feito.Manuais e recursos para desenvolvimento web www. Quando pergunta no ecrã de "Data Sources" faz click em "Close" para terminar.aspx?scid=KB. por exemplo podemos utiliza-lo para criar um DSN associado a uma base de dados MySQL. de modo que as nossas páginas ASP poderiam aceder à base de dados. acede ao painel de controlo de OBDC de 32 bits (Inicio>Configuração->Painel de Controlo->Fontes de dados ODBC 32 bits). selecciona o driver de MySQL. Não reproduzir sem autorização. Outra aplicação é 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).com $cfgServers[$i]['user'] string $cfgServers[$i]['password'] string O par usuário/password que deve utilizar phpMyAdmin para conectar-se com o servidor MySQL. Artigo por Carlos Cuenca Díaz 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 aplicações são várias. que se torna muito de agradecer tendo em conta que. faz click no botão "Add" para acrescentar uma nova fonte de dados e a seguir. Com o driver ODBC instalado. temos de fazer download da última versão de Myodbc da página de MySQL: http://www. e instalamos os drivers OBDC de MySQL. Neste momento. a outra opção seria utilizar a linguagem SQL. Veremos o seguinte ecrã:. inclusive para criar um back-end da nossa base de dados MySQL em interface Access. instalamos a actualização de Microsoft jet. terás de escolher se queres utilizar o driver para um usuário (DSN de usuário). ou para qualquer usuário do computador (DSN de Sistema). e no caso de que a base de dados esteja alojada em remoto na internet. Com isto. no cada de não ter esta ferramenta ou outra parecido. não o poderíamos fazer.com/default.Q239114& A seguir.

Mysql host (name or IP): Nome ou endereço 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.Manuais e recursos para desenvolvimento web www.com têm copyright dos autores. Não reproduzir sem autorização.criarweb.com Terás de preencher os seguintes campos: Windows DSN name: Nome da fonte de dados que estará disponível desde Windows. há que pôr um valor no caso de que não se esteja a utilizar o pré-definido. fazemos click em "OK" para fechar as janelas e finalizar o processo. Password: palavra-chave do usuário. User: Nome de usuário com o que se acederá ao servidor de bases de dados. Port: Serve para especificar o porto no que se encontra o servidor MySQL. Uma vez que estejam estas opções configuradas. Manual de MySQL: http://www.com/manuais/mysql/ © Os manuais de CriarWeb. que é o 3306.criarweb. 17 .

criarweb. e dentro de esta. desde Access. Seleccionar origem de dados. em algum caso. e fizeste click em "Aceitar".com têm copyright dos autores. Claro que os Manual de MySQL: http://www. e com a base de dados na que desejamos importar os dados aberta. na opção tipo do ficheiro seleccionar ODBC databases(). os dados da base nos sistemas MySQL e Access não sejam totalmente compatíveis e se produza alguma anomalia ao exporta-los. No ecrã de importar dados. ainda que nas provas que realizámos não vimos nenhum tipo de problema.com: Instalar o driver ODBC para MySQL. Realmente é só uma hipótese que pensamos. click sobre "OK". Referência: Para realizar esta tarefa é necessário que tenhamos obtido o driver ODBC e o tenhamos instalado no nosso sistema Windows. A continuação explicamos como recuperar informação armazenada num servidor de dados MySQL a uma base Access. seleccionar o menu Ficheiro->Obter dados Externos->Importar. 18 . Para importar uma tabela de MySQL a Microsoft Access. Esta tarefa pode-se conhecer num artigo de CriarWeb. Nota: é possível que. se não desejas marcar nenhuma.com/manuais/mysql/ © Os manuais de CriarWeb.Manuais e recursos para desenvolvimento web www. Uma vez seleccionada. Não reproduzir sem autorização.com Artigo por Carlos Cuenca Díaz Exportar dados de MySQL a Microsoft Access Migrar dados da uma base de dados a outra é algo ao que muitos de nós tivemos de confrontar em algum momento. o nome da fonte de dados que criámos anteriormente.criarweb. aparecerá um ecrã de configuração do driver e podes configurar algumas opções de configuração que aparecem no driver ODBC.

Não reproduzir sem autorização.criarweb.Manuais e recursos para desenvolvimento web www. será tratado noutro artigo em CriarWeb que explica o processo minuciosamente: Exportar dados de Access a MySQL. Na janela de exportar.com têm copyright dos autores. Aqui mostramos uma maneira bastante práctica de migrar os dados de uma base Access a MySQL. Aparecerá uma janela onde pergunta que tabela de MySQL queremos exportar a Access: Seleccionar a tabela.com campos com os que trabalhámos não eram estranhos. e faz click sobre "Aceitar" Nota: se estamos a exportar dados a um servidor de bases de dados alojado nalgum provedor de hosting. passemos a coisas mais serias e nos passemos a um servidor de dados como MySQL.com/manuais/mysql/ © Os manuais de CriarWeb. Também não é nada estranho que. Manual de MySQL: http://www. temos d éter em conta que estes não sempre incluem acesso remoto ao servidor da base de dados. Esta tarefa pode-se conhecer num artigo de CriarWeb. 19 . Feito isto. isto é. desde Access a MySQL. aparece uma janela que nos pergunta o nome que lhe queremos dar a tabela MySQL.criarweb. Referência: Para realizar esta tarefa é necessário que tenhamos obtido o driver ODBC e o tenhamos instalado no nosso sistema Windows. seleccionar ODBC databases(). chegado o momento. Para exportar uma tabela a MySQL.com: Instalar o driver ODBC para MySQL. na opção de guardar como tipo. Referência: se desejamos uma migração de dados no sentido oposto. ou requer um aviso explicito por parte do cliente para a sua configuração. fazer click sobre Ficheiro->Exportar. há que abrir a base de dados e seleccionar a tabela. Artigo por Carlos Cuenca Díaz Exportar dados de Access a MySQL Não é estranho que tenhamos começado a fazer os nossas primeiros sites utilizando uma base de dados simples como Access. Depois. pré-definidamente aparece o mesmo.

Manual de MySQL: http://www.com têm copyright dos autores. Claro que os campos com os que trabalhámos não eram estranhos. os dados da base nos sistemas MySQL e Access não sejam totalmente compatíveis e se produza alguma anomalia ao exporta-los.criarweb. 20 . em algum caso. Realmente é só uma hipótese que pensamos. ainda que nas provas que realizámos não vimos nenhum tipo de problema. e aparecerá uma janela na que se pede que selecciones a origem de dados ODBC: Nota: É possível que. Não reproduzir sem autorização.Manuais e recursos para desenvolvimento web www.criarweb.com/manuais/mysql/ © Os manuais de CriarWeb.com Faz click sobre "Aceitar".

possibilidade de incluir formulários para a entrada de dados. Artigo por Carlos Cuenca Díaz Administrar e actualizar uma base de dados MySQL desde Access Um dos maiores problemas dos que adoece actualmente MySQL é não ter um sistema gráfico que satisfaça a maioria dos usuários. desde MySQL a Access.criarweb. Nota: se estamos a exportar dados a um servidor de bases de dados alojado nalgum provedor de hosting. mas muitas vezes há gente que gostaria de ter algo parecido a um Access. Uma vez seleccionado. o encarregado de actualizar os dados duma página. se queremos. e dentro. aparece um ecrã de configuração do driver que nos permitirá. faz click sobre "OK" e os dados começarão a exportar-se. Dado que não existe hoje em dia nenhuma ferramenta parecida a Access para trabalhar com MySQL utilizando um modo gráfico de Access. Poderás utilizar os formulários. isto é. fazer click em "Aceitar". Se não queremos configurar nada.com têm copyright dos autores. ou requer um aviso explicito por parte do cliente para a sua configuração. com a comodidade dos formulários. Manual de MySQL: http://www. e os dados serão enviados automaticamente a MySQL. o nome da fonte de dados que criámos anteriormente. Existem magníficos projectos através de páginas web. ou de informes sobre os dados armazenados dentro de uma tabela. poderá trabalhar desde Access. foi tratado noutro artigo em CriarWeb que explica o processo minuciosamente: Exportar dados de MySQL a Microsoft Access. temos d éter em conta que estes não sempre incluem acesso remoto ao servidor da base de dados.com/manuais/mysql/ © Os manuais de CriarWeb. consultas e informes de Access com os dados dos ficheiros de MySQL.Manuais e recursos para desenvolvimento web www. Não reproduzir sem autorização.criarweb.com Seleccionar origem de dados. 21 . os menus dinâmicos etc. Desta forma. Referência: se desejamos uma migração de dados no sentido oposto. configurar algumas opções sobre o driver. como phpMyAdmin.

o primeiro que há que fazer é criar uma base de dados em branco desde a qual se irão vincular as tabelas. uma vez instalado o driver MyODBC. para a geração de formulários e informas pode-se utilizar os assistentes.com têm copyright dos autores. Com as duas pode-se administrar uma base de dados MySQL. Agora. uma corresponde a consola MySQL (a ferramenta mais básica) e a outra a um formulário com Access.Manuais e recursos para desenvolvimento web www. faz-se click sobre a opção de criar nova tabela.criarweb. Uma vez criada. Não reproduzir sem autorização.com Imagem da consola de MySQL Formulário de Access que acede a uma base de dados MySQL Nota: Duas imagens que se diferenciam um mundo. 22 . Aparecerá a seguinte janela na que se seleccionará criar nova tabela vinculada: Manual de MySQL: http://www. Esta tarefa pode-se conhecer num artigo de CriarWeb.com: Instalar o driver ODBC para MySQL.. Ainda por cima.criarweb.com/manuais/mysql/ © Os manuais de CriarWeb. que sem dúvida oferece uma interface muito mais agradável.. tudo uma poupança de tempo!!! Referência: Para realizar esta tarefa é necessário que tenhamos obtido o driver ODBC e o tenhamos instalado no nosso sistema Windows.

criarweb. 23 .com têm copyright dos autores. Ao fazer click sobre vincular.Manuais e recursos para desenvolvimento web www.criarweb. aparece uma janela para seleccionar uma origem de dados. e na parte inferior seleccionamos o tipo de ficheiro: ODBC Databases().com/manuais/mysql/ © Os manuais de CriarWeb.com Aparece a janela de vincular uma tabela de uma base da dados. seleccionamos a fonte de dados que criámos na primeira parte do artigo: Manual de MySQL: http://www. Não reproduzir sem autorização.

fazemos click em "OK". 24 . Não reproduzir sem autorização.criarweb.com A seguir. Seleccionamos uma tabela. depois de fazer click em "Aceitar". até um máximo de dez. 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.Manuais e recursos para desenvolvimento web www.com/manuais/mysql/ © Os manuais de CriarWeb. aparece a janela de configuração da fonte de dados ODBC de MySQL.com têm copyright dos autores.criarweb. e a seguir aparecerá uma janela onde devemos especificar. Manual de MySQL: http://www. Como já está configurada. os campos que formam parte da chave.

Nota: Alguns provedores de hosting não incluem no seu pack básico o acesso remoto ao servidor de base de dados. ganhando tanto em rapidez como em eficácia. não existe fisicamente dentro do ficheiro de Access. Não reproduzir sem autorização. O driver implementa um protocolo de packs grandes que permitem enviar filas e campos BLOBs de até 2 GigaBytes. Na versão de desenvolvimento do mesmo implementam-se as novas características acrescentadas no API 3. é que este é de livre distribuição. O driver suporta resultados de dados "streaming" o que permite ao usuário recolher um grande número de filas sem a necessidade de utilizar um buffer de memória. O driver foi testado para trabalhar com as seguintes ferramentas de bases de dados e servidores de aplicações: • • • • • • • Apache Jboss BEA Weblogic IBM VisualAge for Java IBM WebSphere Application Server 4.com Seleccionamos os campos. . e tem um bom rendimento. todas as modificações que se realizam sobre a mesma. Aparecerá uma nova tabela dentro da base de dados de Access. ou requer de um aviso explicito por parte do cliente para a sua configuração. consultas e informes sobre esta tabela tal e como se faz normalmente desde Access. poderão-se criar formulários.com/manuais/mysql/ © Os manuais de CriarWeb.com têm copyright dos autores.criarweb. por tanto.Manuais e recursos para desenvolvimento web www. enviam-se através de ODBC ao ficheiro MySQL. 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. O MySQL Connector/J é um driver JDBC tipo IV e contem todas as características de JDBC para utilizar Mysql. A diferença em relação a outros drivers.criarweb. No desenvolvimento das últimas versões incrementou-se bastante a velocidade do driver. Artigo por Carlos Cuenca Díaz Connector/J Mysql Connector é um driver criado por Mysql AB que te permitirá trabalhar com Mysql desde programas escritos em Java. e fazemos click en "Aceitar". Permite trabalhar com a linguajem de programação Java e desta forma construir programas que interactuam com Mysql. Esta tabela.0 Forte for Java Oracle SQL/J 25 Manual de MySQL: http://www.0 de JDBC. A partir de agora.

até que termine. uma vez feita uma modificação numa tabela.25 e posteriores. Na hora de fazer uma cópia de segurança. Pode haver bases de dados nas que seja necessário bloquear todas as tabelas ao mesmo tempo antes de fazer a cópia de segurança. isto tem como vantagens a simplicidade do método. Manual de MySQL: http://www. com isto quero dizer que todos os dados da tabela deverão estar escritos na tabela. Não reproduzir sem autorização. Em segundo lugar. o primeiro que há que ter em conta é a integridade dos dados que se estão a guardar. uma consulta que se estava a executar. e como inconveniente. isto pode parecer um pouco estranho.criarweb. Através delas poderemos por a salvo os nossos dados. seguido do nome da tabela. para que. Para além disto. que não costuma ser grátis. por exemplo. Isto faz-se através do comando "lock tables". no hipotético caso de que se percam. Estas ferramentas não se analisarão neste artigo. é necessário "forçar" MySQL a escrever todos os dados em disco. • Em primeiro lugar. Existem várias opções para realizar a cópia de segurança de uma base de dados MySQL. podíamos utilizar alguma ferramenta comercial que gira todo o processo. mediante a sentença "Flush Tables". existe a possibilidade de realizar uma cópia de segurança através da sentença sql "backup table".criarweb. Em todos os casos é necessário que haja integridade nos dados de uma tabela. pode ser que os dados não se guardem imediatamente em disco. • • Artigo por Carlos Cuenca Díaz Backup MySQL mediante sentenças SQL Veremos como realizar uma cópia de segurança da tabela e a sua recuperação a partir de sentenças SQL. como podem ser mysqldump ou mysqlhotcopy. de forma que por exemplo. Como terceira opção.23. é possível realizar cópias de segurança através das ferramentas que nos proporciona o próprio gestor de bases de dados. MySQL dispõem de diversas "cachês" nas que se armazenam dados temporalmente com o objetivo de melhorar o rendimento. Por isso. é necessário que não se escreva nas tabelas enquanto se está a fazer a cóºpia de segurança da base de dados.com/manuais/mysql/ © Os manuais de CriarWeb. 26 .com • TableGen Download Para instalar o driver há que fazer download da página de Mysql Connector/J Artigo por Carlos Cuenca Díaz Cópias de segurança em MySQL O gestor de Bases de dados MySQL incluem varias ferramentas para a realização de copias de segurança da base de dados. poder recupera-los. e a partir da versão 3.com têm copyright dos autores. sendo necessário pagar uma licença pela sua utilização. mas tal e como acontece com todos os gestores de bases de dados.Manuais e recursos para desenvolvimento web www.

guarda todas as alterações que possam existir em memória da tabela. error.frm que contêm a definição da tabela. e a partir da versão 3. Mysql dispõem da sentença "Restore table". Do mesmo modo. esta opção só está disponível para as tabelas de tipo MyIsam.criarweb. que contem os dados: Coluna Table Op Msg_ty pe Msg_te xt Valores Nome da tabela Sempre põe "backup" Pode conter status. se é necessário fazer um backup de todas as tabelas num instante. volta a indexar todos os campos que contem índices. criando os ficheiros correspondentes. com um registo por cada tabela sobre a que se fez a base de dados.com têm copyright dos autores.25. 27 . o comando para recuperar os dados. Ao igual que o comando para fazer cópias de segurança.com/manuais/mysql/ © Os manuais de CriarWeb.criarweb. que contêm os dados. que permite restaurar uma tabela a partir de uma cópia de segurança que se realizou com o comando "Backup Table". consoante vai fazendo a cópia de segurança. bloqueia a tabela sobre a que se está a fazer a cópia de segurança para que os dados sejam consistentes na tabela. Ao finalizar o comando retorna uma tabela. Como o comando de backup não copia os ficheiros de índices.com Backup dos dados Este comando permite-nos fazer uma cópia dos ficheiros das tabelas das quais queremos fazer um backup. Mensagem descritivo do resultado da operação Para realizar uma cópia de uma tabela chamada pedidos. actualmente só funcionam com tabelas do tipo MyIsam. de forma que fique de uma maneira consistente. e que contem a seguinte informação: Coluna Table Op Valores Nome da tabela Sempre põe "restore" Manual de MySQL: http://www. sendo então necessário a utilização do comando "lock tables" para bloquear todas as tabelas antes de começar a cópia de segurança. Não reproduzir sem autorização.myd. Esta opção só se pode utilizar se a tabela que se pretende restaurar não se encontra na base de dados. Antes de executar-se. pois em caso afirmativo mostrará uma mensagem de erro. Igual que o comando de Backup. invocar o comando "restore table" retorna uma tabela. durante a execução do comando. como os ficheiros . Há que ter em conta que este comando bloqueia uma das tabelas. à pasta Backups: BACKUP TABLE pedidos TO `/backups/` Recuperação de dados Para complementar a sentença "Backup table". Isto poderia provocar uma inconsistência de dados a nível de base de dados. info ou warning.23.Manuais e recursos para desenvolvimento web www. e copia tanto os ficheiros .

por exemplo. poderão-se restaurar tabelas que existem actualmente no servidor (apagando-as primeiro). -A. O comando dispõem de uma ampla variedade de opções que nos permitirá realizar a cópia da forma mais conveniente para o propósito da mesma. Para poder restaurar a cópia de segurança.com têm copyright dos autores. e UNLOCK TABLE depois da cópia de cada tabela.criarweb. Também permite que estas cópias de segurança se possam restaurar em diversos tipos de gestores de bases de dados. Não reproduzir sem autorização.criarweb. --add-drop-table Adiciona um drop table antes de cada sentença create.com/manuais/mysql/ © Os manuais de CriarWeb. até uma sentença insert por cada um dos registos que formam parte da mesma. que contem desde a sentença de criação da tabela. --all Inclui todas as opções de criação específicas de MySQL. se incluirmos a opção -add-drop-table ao fazer a cópia de segurança. Isto consegue-se criando uns ficheiros.com Msg_typ Pode conter status. --all-databases Copia todas as bases de dados.Manuais e recursos para desenvolvimento web www. Manual de MySQL: http://www. -a. 28 . --allow-keywords Permite a criação de nomes de colunas que são palavras chave. o nome da tabela. que contêm todas as sentenças SQL necessárias para poder restaurar a tabela. info ou warning. bastará com executar todas as sentenças SQL que se encontram dentro do ficheiro. Pelo qual é necessário estudar primeiro os procedimentos que se utilizarão tanto na cópia como na restauração. Isto é o mesmo que utilizar -databases seleccionando todas. isto realiza-se pondo como prefixo a cada nome de coluna. As limitações da restauração dependerão das opções que se especificaram na hora de fazer a cópia de segurança. sem a necessidade de que se trate de um gestor de mySQL. para que tudo saia correcto! Algumas das opções que tem são: --add-locks Adiciona LOCK TABLES antes. bem desde a linha de comandos de MySQL. e Msg_text Mensagem descritivo do resultado da operação Para restaurar uma tabela chamada pedidos da pasta Backups à base de dados: RESTORE TABLE pedidos FROM `/backups/` Artigo por Carlos Cuenca Díaz Backup MySQL com mysqldump Este comando permite fazer a cópia de segurança de uma ou várias bases de dados. ou desde o menu de criação de sentenças SQL de qualquer entorno gráfico como pode ser o MySQL Control Center. error.

-h. --host=.com têm copyright dos autores.com -c... Estas opções utilizam-se com a opção -T e têm o mesmo significado que a correspondente cláusula LOAD DATA INFILE.com/manuais/mysql/ © Os manuais de CriarWeb.. O servidor pré-definido é localhost. Neste caso. --extended-insert Utiliza a sintaxe de INSERT multilinha. O nome dos argumentos refere-se aos nomes das bases de dados.. --force.e /*!40000 ALTER TABLE tb_name ENABLE KEYS */. --databases Para copiar várias bases de dados. --fields-enclosed-by=. -K. --fields-terminated-by=. 29 . Continua ainda que se produza um erro de SQL durante a cópia.criarweb. -B. --fields-optionally-enclosed-by=. se ambos suportam compressão. não se especificam tabelas.. As tabelas em diferentes bases de dados copiarão-se em estados completamente diferentes. (proporciona sentenças de insert mais compactas e rápidas) -#. Não reproduzir sem autorização. --lock-tables. --lines-terminated-by=... --complete-insert Utiliza inserts incluindo os nomes de coluna em cada sentença (incrementa bastante o tamanho do ficheiro) -C.. Bloqueia todas as tabelas antes de começar com a cópia. -l. As tabelas bloqueiam-se com READ LOCAL para permitir inserts simultâneos em caso das tabelas MyISAM.criarweb. --compress Comprime a informação entre o cliente e o servidor. --debug[=option_string] Utilização do modo de depuração. -f.. Copia os dados do servidor de MySQL especificado. -F. Quando se realiza a cópia de múltiplas bases de dados. --flush-logs Escreve em disco todos os logs antes de começar com a cópia. -e... --help Mostra mensagem de ajuda e termina.Manuais e recursos para desenvolvimento web www. Isto fará que o carregamento de dados num servidor MySQL 4.0 se realize mais rápido devido a que os índices se criarão depois de que todos os dados Manual de MySQL: http://www. --fields-escaped-by=. --disable-keys Incluirá-se na saída /*!40000 ALTER TABLE tb_name DISABLE KEYS */. --delayed Insere as filas com o comando INSERT DELAYED. Incluirá-se USE db_name na saída antes de cada base de dados.

criarweb. Esta opção deveria utilizar-se em MSDOS. Se não se especifica `=your_pass'.Manuais e recursos para desenvolvimento web www. -q. --protocol=(TCP | SOCKET | PIPE | MEMORY) Especifica o protocolo de conexão que se utilizará. --quick Não armazena no buffer a sentença. -T. --tab=path-to-some-directory Manual de MySQL: http://www. --no-create-info Não incluirá a informação de criação da tabela (sentença CREATE TABLE). É muito útil com as tables InnoDB e o nível de transação READ_COMMITTED. -S /path/to/socket. Esta linha inclui-se se a opção --databases ou --all-databases foi seleccionada. --opt O mesmo que --quick --add-drop-table --add-locks --extended-insert --lock-tables. -t. --password[=your_pass] Password utilizada quando se conecta com o servidor. Esta opção serve para criar uma cópia só da estrutura da base de dados. --result-file=.com têm copyright dos autores... --single-transaction Utiliza o comando BEGIN antes de realizar a cópia desde o servidor. 30 .. --tables sobrescreve a opção --databases (-B). Utiliza mysql_use_result() para realiza-lo.. -r. --quote-names Põe entre aspas as tabelas e nomes de coluna. Esta opção deveria permitir realizar a cópia de segurança da base de dados da forma mais rápida e efetiva. -d. -Q. Redireciona a saída ao ficheiro especificado.com/manuais/mysql/ © Os manuais de CriarWeb.com tenham sido restaurados. copia-a diretamente na saída. Consultar o manual para mais detalhes. porque previne a conversão de nova linha '\n' em nova linha e return '\n\r'. Porto utilizado pelas ligações TCP/IP.criarweb. porque deste modo realizará-se a copia de segurança de um estado consistente sem a necessidade de bloquear as aplicações. -n. -P. mysqldump preguntará a password. -pyour_pass. --no-data Não incluirá nenhuma informação sobre os registos da tabela. --port=. Não reproduzir sem autorização. --no-create-db Não se incluirá na saída CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name. --socket=/path/to/socket O ficheiro de sockets que se especifica ao conectar ao localhost (que é o host pré-definido).

Nota: Esta opção só funciona se o comando mysqldump se executa na mesma máquina que o demónio (daemon) mysqld. -x. e um ficheiro table_name. como se fazia com os ficheiros do código PHP.criarweb. A base de dados que pretendemos subir está vazia. É muito normal que o nosso provedor de hosting ofereça junto com PHP a base de dados MySQL. Para a subir teremos que utilizar outros mecanismos. -v. que contem a sentença de criação de SQL. Só criámos as tabelas.sql mysqldump --opt minhabase > copia_seguranca. --verbose Vai mostrando informação sobre as acções que se vão realizando (mais lento) -w. e por tanto o modo de subir a base de dados também pode variar.txt' realiza-se com as opções --fields-xxx y --lines--xxx options. 31 . --xml Realiza a cópia de segurança num documento XML.com/manuais/mysql/ © Os manuais de CriarWeb. --first-slave Bloqueia todas as tabelas de todas as bases de dados. o valor pré-definido é o do usuário actual.Manuais e recursos para desenvolvimento web www.sql Artigo por Carlos Cuenca Díaz Subir uma base de dados ao servidor de Internet Para além dos ficheiros da página. -X.com Cria um ficheiro table_name. Neste caso teremos de criar a base de dados em local com toda a informação dentro e Manual de MySQL: http://www.criarweb. --user=nombre_usuario O nome de usuário que se utilizará quando se conecte com o servidor.txt. 2. --where='cláusula where' Serve para realizar a cópia de determinados registos. Vou distinguir entre três casos diferentes nos que poderíamos encontrar-nos neste momento: 1. que contem os dados de cada tabela. A base de dados que queremos subir está completa e é uma base de dados MySQL. devemos subir a base de dados com a que temos de trabalhar. o usuário deverá ter licença para criar e escrever o ficheiro no path especificado. Exemplo: Para realizar a cópia de segurança da base de dados minhabase ao ficheiro copia_seguranca.sql. As bases de dados com as que trabalha PHP são muito variadas e em vários casos podemos utilizar uma ou outra. A base de dados MySQL não se pode subir por FTP.com têm copyright dos autores. mas não introduzimos dados ou simplesmente introduzimos algum dado como experiência. O formato do ficheiro '. assim que os apontamentos para subir essa base de dados ao servidor de este artigo vão encaminhados a oferecer soluções para essa base de dados. -u nombre_usuario. Não reproduzir sem autorização.

Neste caso estaríamos a fazer uma migração da base de dados de um sistema gestor a outro. que são aplicações Windows muito mais potentes e rápidas que as que utilizam interface web. mas não é uma base de dados MySQL. Mysql Control Center (a partir de agora MyCC). É preferível usar MyCC porque está especialmente feito para conectar-se e operar com bases de dados MySQL. apagá-los. No caso de que efetivamente possámos conectar-nos remotamente com a base de dados. Manual de MySQL: http://www. queremos que esteja disponível essa informação em remoto. Neste caso o mais provável é que a base de dados esteja vazia. Uma aplicação criada em PHP que podemos instalar no nosso espaço de alojamento para administrar a base de dados. que se estejam em local ou em remoto.criarweb. 32 .Tradução de JML Subir uma base de dados MySQL vazia ao servidor É normal que tenhamos uma base de dados para o nosso projecto do 0.com/manuais/mysql/ © Os manuais de CriarWeb. para administrar uma base de dados que nada tem a ver com o mencionado programa. editá-los. como podem ser criar tabelas. Basicamente. etc. como o PhpMyAdmin. definindo às diferentes entidades do nosso modelo de dados. A eleição de uma ferramenta ou de outra passa pelos recursos que nos permitam utilizar no nosso provedor. A base de dados está completa (como no caso anterior). Conheço alojamentos onde se permite essa conexão e alojamentos onde não. a nossa escolha será MyCC ou Access.. Obviamente não queremos conservar estes dados quando a aplicação esteja a funcionar no servidor. Se não é permidito conectar-nos remotamente escolheríamos o PhpMyAdmin.. vamos mostras umas ferramentas que nos serão muito úteis para a administração de qualquer base de dados remota.Manuais e recursos para desenvolvimento web www. inclusive há muitos que já têm instalado esse software para administrar as bases de dados. Veremos os três casos por separado mais à frente. ou bem contenha dados que introduzimos para verificar o correcto funcionamento da base. como é a do Access. e isso está permitido pelos provedores. 3. Modificar ou apagar tabelas ou campos das mesmas. Também permite administrar uma base de dados MySQL conectada em local ou em remoto. modificá-las. Uma aplicação Windows que permite conectar-se a diversas bases de dados MySQL. Neste caso utiliza-se uma interface que muitos já conhecem. sobre as bases de dados.com obviamente. inserir dados. Não reproduzir sem autorização. de todo tipo. • Nos três casos o que nos permite realizar o software de administração são tarefas.criarweb.com têm copyright dos autores. pois é uma aplicação PHP que se conecta em local e ao que se pode aceder através de uma página web. Artigo por Miguel Angel Alvarez . os seus campos e os seus tipos. Access. mas antes disso. As ferramentas em concreto são as seguintes: • • PhpMyAdmin. o que nos pode levar a escolher uma opção ou outra é se nos permitem ou não conectar de maneira remota à base de dados MySQL.

O que temos de fazer neste caso é um backup da estrutura da base de dados. revisado tinyint(1) DEFAULT '0' NOT NULL. ou utilizar o comando mysqldump desde a linha de comandos de MS-DOS. Não reproduzir sem autorização. Em ambos casos o que temos de fazer é executar estas sentenças no servidor MySQL remoto.com A opção mais interessante podia ser criar outra vez as tabelas que temos em local na base de dados remota.criarweb. Em Manual de MySQL: http://www. Pode ser um pouco mais complicado mas sem duvida poupará-nos tempo. 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 são muito complicadas Neste caso recomendamos fazer um backup da estrutura em local e restaura-la em remoto. Se não o fizermos só se visualizará.criarweb. Isto evitará-nos ter que voltar a criar todas as tabelas e definir todos os seus campos e tipos. id_artigo int(4) DEFAULT '0' NOT NULL. nome_comentario varchar(100) DEFAULT 'Nome não especificado' NOT NULL. 33 . Está marcada a opção de extrair só a estrutura das tabelas.com/manuais/mysql/ © Os manuais de CriarWeb. Seriam bastantes sentenças deste género. # -------------------------------------------------------# # Table structure for table 'comentario' # CREATE TABLE comentario ( id_comentario int(5) unsigned NOT NULL auto_increment.Manuais e recursos para desenvolvimento web www. comentario text NOT NULL. email_comentario varchar(100) DEFAULT 'Email sem especificar' NOT NULL. Ferramenta de backup de PhpMyAdmin. Para restaurar estas sentenças temos opções tanto dentro de PhpMyAdmin como de MyCC. Se marcamos também a opção "Send". isto é. o nosso navegador criará um ficheiro de texto. Para fazer backup da estrutura em local podemos utilizar alguma ferramenta como PhpMyAdmin. data int(14) unsigned DEFAULT '0' NOT NULL. os "create tables" ou sentenças SQL para criar as tabelas. PRIMARY KEY (id_comentario) ). tipo tinyint(1) unsigned DEFAULT '1' NOT NULL.com têm copyright dos autores. Para o fazer temos duas hipóteses.

criarweb. Botão para introduzir sentenças SQL em MyCC Recordamos que isto só nos servirá para subir a estrutura da base de dados e não os dados que contenham. temos de realizar um backup da base de dados e restaura-lo em remoto. excepto que agora temos de extrair não só a estrutura da base de dados. Artigo por Miguel Angel Alvarez .criarweb. Não reproduzir sem autorização. Nota: Estas recomendações pensadas para subir uma base de dados MySQL que esteja em local a uma base de dados MySQL que tenhamos contratado em remoto. Manual de MySQL: http://www. 34 . No MyCC temos um botão que nos permite abrir uma consola onde introduzir uma ou várias sentenças SQL e executa-las. mas isto será visto num artigo mais a frente. Se desejamos subir também a informação da base de dados temos de utilizar outras estratégias que relataremos proximamente. Se a base origem não é MySQL estaríamos a falar de uma migração de bases de dados.com/manuais/mysql/ © Os manuais de CriarWeb. relatado anteriormente. Neste caso o processo seria muito parecido ao de subir uma base de dados vazia.com PhpMyAdmin temos um campo para introduzir sentenças SQL e outro para seleccionar um ficheiro de texto com todas as sentenças SQL. para executa-las uma detrás da outra.Manuais e recursos para desenvolvimento web www.com têm copyright dos autores. mas também os registos que contém.Tradução de JML Subir uma base de dados MySQL com a estrutura e os dados Se a base de dados que queremos subir está cheia de informação e desejamos que se conserve uma vez subida a base de dados a remoto.

Tradução de JML Migrar uma base de dados a MySQL O último caso no que nos podemos encontrar na hora de subir uma base de dados ao nosso provedor de alojamento é que a base de dados que tenhamos criada em local vá ser utilizada em remoto. que se conecte a base de dados contratada no servidor de Internet. Se o nosso provedor não pode ajudar-nos. Em local poderíamos dispor de uma base de dados Access. A estrutura e os dados vêem num ficheiro de texto com uma serie de sentenças SQL para criar as tabelas e os insert necessários para introduzir cada um dos dados. seleccionando a opção que indica que o backup contem a estrutura e os dados (Structure and data). Para restaurar a base de dados. Se temos problemas para subir o ficheiro de backup da base de dados é possível que o nosso provedor de alojamento nos possa ajudar a subir o ficheiro e restaura-lo. O processo da migração pode ser bastante complexo e como há tantas bases de dados diferentes. sem temor a que as lentas comunicações pela internet nos dêem erros na restauração dos dados. Recomendações para migrar de Access a MySQL Se a nossa base de dados anterior estava construída em Access a migração será fácil graças a que MySQL dispõe dum driver ODBC para sistemas Windows. Artigo por Miguel Angel Alvarez . SQL Server ou de outro sistema de base de dados. os campos numéricos com decimais ou os boleanos podem dar problemas ao passar de um sistema a outro porque podem armazenar-se de maneiras diferentes ou nos caso dos números. de certeza que dispõem ou nos pode indicar algum mecanismo para realizar a tarefa sem erros.com Para fazer isto podemos utilizar mysqldump ou PhpMyAdmin. vamos seguir os mesmos passos como para o caso em que a base de dados está vazia. as datas. Se não temos disponível uma conexão em remoto com o nosso Manual de MySQL: http://www. 35 . Devemos indicar que se desejarmos fazer uma exportação desde Access em local a MySQL em remoto pode haver problemas porque não todos os servidores permitem as conexões em remoto com a base de dados.Manuais e recursos para desenvolvimento web www. Não reproduzir sem autorização. Por exemplo. que nos permite conectar Access com o próprio MySQL e passar informação facilmente. tem muitas mais possibilidades para trabalhar com as bases de dados do que nós. 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. vai ser complicado dar uma "receita" que funcione em todos os casos. também influirá muito na complexidade do problema o tipo de dados das tabelas que estamos a utilizar.com têm copyright dos autores.com/manuais/mysql/ © Os manuais de CriarWeb. com a ajuda de uma instalação de PhpMyAdmin em remoto ou MyCC.criarweb.criarweb. Em remoto supomos sempre que vamos utilizar a base de dados MySQL. com uma precisão diferente. provavelmente seja melhor ir pedindo-lhe o dinheiro de volta porque o seu serviço quase de certeza não vai ser de qualidade. Para além da dificuldade de transferir informação entre os dois sistemas gestores de bases de dados. Como o provedor dispõe dos serviços nas suas próprias instalações. Se não dispõe de facilidades nem sequer nisto.

criarweb.criarweb. ou o terminador de linhas. Para isso. 36 . os quais podem ser introduzidos no nosso sistema gestor destino (MySQL) com a ajuda de alguma ferramenta tal como PhpMyAdmin. A idéia neste último caso é instalar MySQL em local e realizar a migração desde Access em local a MySQL em local e depois . ou a base de dados original não tem driver ODBC.Manuais e recursos para desenvolvimento web www. Manual de MySQL: http://www. O certo é que utilizando o próprio Access de ponte poderíamos realizar o trabalho. porque desde ali poderia-se aceder aos dois sistemas gestores de bases de dados Se não temos Access. outra possibilidade é exportar os dados a ficheiros de texto. na página de propriedades da tabela encontraremos uma opção 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 formulário onde introduzir as características do ficheiro de texto. de maneira similar a como se conecta com MySQL. A idéia é que Access também permite trabalhar com MySQL e possivelmente fazendo uma pontes entre estes dois sistemas gestores podemos exportar dados desde SQL Server a MySQL. Poderíamos utilizar Access para exportar os dados. separados por vírgulas ou algo parecido. e PhpMyAdmin encarregar-se-á de todo esse trabalho de incluir eses dados na tabela. Recomendações para migrar desde SQL Server a MySQL A verdade é que nunca passei por este problema. Não reproduzir sem autorização. junto com o próprio ficheiro com os dados.com servidor de bases de dados vamos ter que mudar de estratégia. ou ainda se não funciona correctamente o processo e não sabemos como resolver o problema. etc.com têm copyright dos autores.fazer um backup da base de dados local e subi-la a remoto.com/manuais/mysql/ © Os manuais de CriarWeb. como o carácter utilizado como separador de campos. Primeiro exportando de SQL Server a Access e depois de Access a MySQL. tal e qual como se relatou antes. Muitas bases de dados têm ferramentas para exportar os dados das tabelas a ficheiros de texto. Outras bases de dados e outras técnicas Se a base de dados origem dispõem de um driver ODBC não haverá (em teoria) nenhum problema para conecta-la com Access. mas Access também nos pode ajudar neste caso. Access permite seleccionar uma base de dados SQL Server e trabalhar desde a própria interfaz de Access.

etc. por exemplo. que podem armazenar-se de maneira diferente em cada um dos sistemas gestores.criarweb. Artigo por Miguel Angel Alvarez . origem e destino.com/manuais/mysql/ © Os manuais de CriarWeb. Temos que contar sempre com a possibilidade de transformar alguns dados como podem ser os campos boleanos. é necessário ter a tabela criada em remoto para que se possa introduzir os dados do ficheiro de texto.criarweb. em Access aparece com o formato (dd/mm/aaaa). as formas que tenham cada base de dados de guardar a informação. datas.com têm copyright dos autores. campos memo (texto com longitude indeterminada). As datas também podem sofrer alterações de formato. Nalguns casos possivelmente tenhamos de realizar algum script que realize as mudanças necessárias nos dados.Manuais e recursos para desenvolvimento web www. e em MySQL o formato é (aaaa-mm-dd).com Obviamente. como já se disse. Não reproduzir sem autorização. 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.Tradução de JML Manual de MySQL: http://www. à base de sentenças dirigidas contra a base de dados. Mudança de um formato de dados a outro Toda migração tem de ter em conta muito especialmente. 37 . PHP pode Ajudar-nos na tarefa de fazer este script mas também Visual Basic Script para Access pode fazer estas tarefas complexas e a própria linguagem SQL.

seguida da denominação da coluna a ser alterada e dos novos atributos. nome char(80) not null. Então. seguido do nome da coluna. Isso ocorre porque se indica primeiro a coluna e depois seus novos atributos. para eliminar nossa recém criada coluna email. Eliminando colunas: O comando básico para se eliminar colunas de uma tabela é DROP. etc. seguido do nome e dos atributos da coluna que será adicionada. Use este comando com cuidado.com/manuais/mysql/ © Os manuais de CriarWeb. Para mudar os atributos da coluna fone. O comando básico para se alterar colunas é o ALTER TABLE. e da sua posição dentro da tabela. O. Adicionando colunas: Para adicionar colunas a uma tabela MySQL use o comando ADD. a documentação é bem mais escassa. Considerando que adicionaremos a coluna email à tabela clientes. utilizaremos a seguinte query: ALTER TABLE clientes CHANGE fone fone char(30) not null. eliminar. dê o comando DESCRIBE clientes. seguido do nome da tabela. Manual de MySQL: http://www.s: Os comandos em MySQL estão escrito em maiúsculo por uma questão didática. Assim. usaremos a seguinte query: ALTER TABLE clientes DROP email. pode escrever tudo em minúsculo. qualquer query de alteração da nossa tabela clientes começará da seguinte forma: ALTER TABLE clientes 1. atributos. fone int not null.b. ensinando como adicionar. criada com os seguintes parâmetros: create table clientes (id int unsigned not null auto_increment primary key. e o nome da coluna é um de seus atributos. No entanto. como preferir.criarweb. Ao praticar o exercício ou no seu trabalho diário.Manuais e recursos para desenvolvimento web www. e é bem farto o material disponível sobre criação de tabelas. Testaram? Simples e legal. 3. nosso código fica assim: ALTER TABLE clientes ADD email char(80) not null AFTER fone.com têm copyright dos autores. pois todas as informações contidas dentro da coluna serão perdidas. renomear e alterar atributos de colunas.com Como alterar tabelas MySQL Construir tabelas MySQL faz parte do dia-a-dia do desenvolvimento de sistemas em PHP.criarweb. endereco char(160) not null). 38 . Vocês devem ter percebido que a palavra 'fone' foi utilizada duas vezes. Para ver o resultado das alterações. Alterando colunas: O comando básico para alteração de atributos e nome de colunas é CHANGE. colunas. e este tutorial tenta cobrir esta lacuna. quando precisamos alterar tabelas já abastecidas com dados. com o auxílio do parâmetro AFTER. Começamos com a tabela hipotética clientes. 2. Não reproduzir sem autorização. Tudo sem dor.

Veja as alterações com DESCRIBE clientes. O comando CHECK TABLE é a forma mais simples para realizar a verificação de dados. por ser um comando do MySQL o mesmo é executado de forma atômica. Os principais fatores que levariam a esta situação seriam a parada inesperada do SGBD (Sistema Gerenciador de Banco de Dados).com têm copyright dos autores. é possível detectar uma tabela corrompida e corrigi-la antes que a sua aplicação pare de funcionar por causa deste erro. O MySQL apresenta duas ferramentas para a verificação de tabelas que são o comando CHECK TABLE e o utilitário myisamchk. 39 . especialmente datatypes. Outra possibilidade seria uma falha de hardware. Manual de MySQL: http://www. mas existem algumas situações que podem levar o banco a danificar uma tabela. Neste artigo apresento as técnicas de detecção e correção de tabelas do MySQL. O primeiro funciona para todos os tipos de tabelas enquanto o segundo. Não reproduzir sem autorização. Uma boa prática é a realização de uma vistoria periódica da base de dados a fim de detectar eventuais problemas em seus dados.Manuais e recursos para desenvolvimento web www. verifica a árvore de índices e os apontamentos destes índices para os dados.com Supomos que queiramos agora somente mudar o nome da coluna. só se aplica à tabelas MyISAM. . . já que se aplica a qualquer tipo de tabela e. bem como os procedimentos para a utilização destas ferramentas. por exemplo uma tabela pode ser armazenada em uma trilha danificada do disco. Boa sorte em seus trabalhos e até a próxima.QUICK: Verifica somente a árvore de índices da tabela. Com isto. Este comando pode ser utilizado com as seguintes opções: .criarweb. como o próprio nome sugere. numa queda do SGBD. neste caso se o MySQL estiver escrevendo alguma informação no disco. esta operação pode ser interrompida antes do término acarretando uma inconsistência. inibindo qualquer tentativa de alteração da tabela durante o processo de verificação. por exemplo. pois todas as informações que não podem ser interpretadas como características do novo datatype serão perdidas. Artigo por Vinícius Delgado Verificação e correção de tabelas corrompidas no MySQL O MySQL tem se mostrado muito estável no que diz respeito a tabelas corrompidas. Muito cuidado ao se alterar atributos de colunas.FAST: Verifica somente as tabelas que não foram fechadas corretamente. e manter seus demais atributos: ALTER TABLE clientes CHANGE fone telefone char(30) not null.criarweb.com/manuais/mysql/ © Os manuais de CriarWeb. .MEDIUM: Opção padrão (default).CHANGED: Verifica somente as tabelas que não foram alteradas desde a última verificação.

como é o caso da tabela Lingua do exemplo anterior. as ligações dos índices com os dados e o dado propriamente dito. isto é. De um modo geral. mysql>UNLOCK TABLES. e neste caso. maior será o tempo de execução da tarefa.com/manuais/mysql/ © Os manuais de CriarWeb. é necessário corrigir a estrutura desta tabela.criarweb.. Não reproduzir sem autorização. Por isto. pode ocorrer problemas de concorrência no dado. A segunda tabela (Pais) retornou a mensagem "Table is already up to date" o que significa dizer que havia algum problema na tabela. Pais READ. Para obter a lista completa de parâmetros utilize a opção --help. os problemas com tabelas estão associados aos seus índices. correção e otimização de tabelas. O mesmo procedimento pode ser executado através do utilitário myisamchk. o modo padrão de verificação é suficiente na maioria dos casos. 40 . A execução do myisamchk para o mesmo problema é ilustrada a seguir.Manuais e recursos para desenvolvimento web www. não manipula os dados da tabela. aumentando a capacidade de detecção de problemas. que pode ser executado em dois modos: . portanto teremos que corrigila. caso a tabela seja do tipo MyISAM. Para a correção de tabelas utilizamos o comando REPAIR TABLE. mas o mesmo já foi corrigido pelo próprio comando de verificação. percebemos que a tabela Lingua está corrompida. que deve ser eliminada através da utilização de um LOCK de leitura na tabela a ser verificada: mysql>LOCK TABLES Cidade READ. sendo que a opção -C utilizada significa CHANGED. Pais.criarweb.. O myisamchk apresenta vários parâmetros de execução e pode ser utilizado para verificação. shell> cd DATADIR shell>myisamchk -C Cidade. Manual de MySQL: http://www. A seguir está ilustrada a execução de uma verificação de 3 tabelas: No exemplo vemos que a tabela Cidade está OK. E por último.EXTENDED: Verifica toda a árvore de índices. Lingua Uma vez detectado o problema na tabela. não há nenhuma anomalia.QUICK Tenta corrigir apenas a árvore de índices.com .com têm copyright dos autores.. quanto maior o nível de verificação. Por outro lado. . Lingua READ. Observe que à medida que caminhamos nas opções aumentamos a complexidade da verificação. O detalhe em relação a este utilitário é que ele não se comunica com o servidor fazendo um acesso direto aos arquivos da tabela a ser verificada.

O myisamchk pode ser utilizado para a correção de tabelas ao utilizar-se as opções -r ou -o. 41 . Abraços e até breve! Artigo por Eber M. Portanto. Duarte Manual de MySQL: http://www.criarweb. Não reproduzir sem autorização. como exemplo.com . vimos que a tabela Lingua foi corrigida com sucesso pelo comando REPAIR TABLE. no caso do Linux ou qualquer agendador de tarefas do SO. poderíamos criar um script e agendálo para fazer a verificação de todas as tabelas do sistema uma vez por semana.criarweb. refazendo os apontamentos destes índices para os dados. Isto poderia ser feito via cron. Assim. você reduz as possibilidades de a sua aplicação parar por causa de problemas em tabelas. procure verificar as suas tabelas periodicamente.Manuais e recursos para desenvolvimento web www.com têm copyright dos autores. A seguir vamos fazer a correção da tabela Lingua através do REPAIR TABLE e do myisamchk: shell>cd DATADIR shell>myisamchk -r Lingua No exemplo.EXTENDED Serão recriados todos os índices da tabela linha a linha. como mostra o comando CHECK TABLE EXTENDED executado na tabela.com/manuais/mysql/ © Os manuais de CriarWeb.

Modelo Entidade-Relacionamento (MER). O MySQL Administrator permite ao administrador do banco de dados (DBA) executar tarefas como a configuração de parâmentros do servidor. O MySQL Administrator permite integrar a administração e manutenção do banco de dados em uma única ferramenta que apresenta uma interface extremamente intuitiva e amigável. Assim. sendo criadas automaticamente as chaves estrangeiras nas tabelas relacionadas.criarweb.fabforce.com/products/administrator/. Não reproduzir sem autorização.com/manuais/mysql/ © Os manuais de CriarWeb. O DBDesigner 4 pode ser obtido a partir do endereço www. O MySQL Administrator também disponibiliza para o DBA uma interface de configuração dos Manual de MySQL: http://www. que permite controlar de forma simplificada o seu ambiente MySQL.criarweb. dentre outros). é possível elaborar consultas SQL de forma gráfica a partir da utilização do "Query Mode". Esta ferramenta permite a leitura de MERs criados a partir do ERWin.mysql. sendo compatível com o MySQL 4. tais como os tipos de dados. DBDesigner 4. Os procedimentos de instalação destas ferramentas não serão descritos aqui. rotinas de backup e restauração de dados onde você especifica o esquema de banco de dados a ser manipulado. sendo que o mesmo está disponível para o Microsoft Windows e Linux. e armazena os seus modelos em formato XML. torna-se fácil a manutenção do seu esquema de banco de dados com o MER definido no DBDesigner 4. e uma ferramenta para a realização de tarefas administrativas. 42 . Este produto pode ser obtido a partir do endereço www. dentre outros. percentual de acerto em caches. Outros recursos importantes do DBDesigner são a engenharia reversa e sincronização do modelo com a base de dados.Manuais e recursos para desenvolvimento web www. Ela permite ainda a escolha do tipo de tabela a ser utilizada (InnoDB. utilizamos a ferramenta MySQL Administrator que é um console visual de administração. MyISAM. Também é possível visualizar todos os esquemas de bancos de dados existentes. e obter informações importantes acerca de como o seu banco de dados está operando.0 ou versões mais novas. administração dos usuários do sistema. Para a administração do MySQL. onde você terá acesso também a algumas telas de demonstração. Inicialmente o MySQL Administrator está disponível para Microsoft Windows e Linux. bem como as tabelas e suas estruturas de campos e índices. uma vez que estes podem ser encontrados na página de download dos produtos. monitoramento de medidas de desempenho do servidor (tais como a utilização de memória). Além disto. A vantagem desta ferramenta para os usuários do MySQL é que ela apresenta todos os recursos compatíveis com o MySQL. Também é possível definir os relacionamentos entre tabelas e construir as restrições (constraints) associadas a cada relacionamento. é possível fazer o controle e administração da replicação de dados. Além disto.com Ferramentas Gráficas para Modelagem de Dados e Administração do MySQL Este artigo tem como objetivo principal introduzir algumas ferramentas gráficas para a manipulação do banco de dados MySQL. Basicamente apresentarei uma ferramenta para modelagem de dados. foi desenvolvida e otimizada para a utilização com este banco de dados provendo aos seus usuários uma forma simples e centralizada para a definição dos seus modelos de dados. bem como visualizar arquivos de logs e status do servidor.com têm copyright dos autores. A ferramenta de modelagem de dados no MySQL. e a definição de outros incrementos para a criação de tabelas.net/dbdesigner4/.

Manuais e recursos para desenvolvimento web www. Para acessar bancos de dados que não sejam Oracle é necessário utilizar o Oracle Heterogeneous Services em conjunto com um agente. através do uso dos Heterogeneous Services ODBC e OLE-DB. O agente executa comandos SQL e requisições de transações a bancos de dados não Oracle em nome do usuário da base de dados Oracle. Não reproduzir sem autorização. que é o tipo de tabela transacional do MySQL (veremos os tipos de tabelas em breve). Espero que apreciem estas ferramentas. o MySQLCC. Duarte Criação de Database Links Um database link é um objeto criado em um esquema de um banco de dados que possibilita o acesso a objetos de outro banco de dados. a ferramenta gráfica disponível atualmente para o MySQL. ou seja. Neste artigo irei ensinar. Por exemplo. é possível definir a partir desta ferramenta os arquivos que compõem o tablespace e logs de transação do InnoDB. dentro de algumas semanas. apontando os seus tamanhos e localização dentro do sistema de arquivos. Com isto. Esta ferramenta possui recursos avançados de edição de comandos SQL. também. Esse tipo de sistema é conhecido como Sistema de Banco de Bados Distribuídos e pode ser Homogêneo – quando acessa outros bancos de dados Oracle . foi anunciado na MySQL Users Conference em abril/2004.mysql.criarweb. o MySQL Query Browser que tem como objetivo fornecer aos usuários do banco de dados mecanismos simplificados e visuais para uma fácil construção de consultas SQL. 43 . Pode-se. Por exemplo.e Heterogêneo – quando acessam outros tipos de bancos de dados.com parâmetros relativos ao InnoDB.com. Para acessar um banco de dados não Oracle utilizando um Oracle Transparent Gateway (agente) deve-se selecionar uma aplicação específica do sistema. a criar um database link homogêneo entre bancos de Manual de MySQL: http://www. O Heterogeneous Services é um componente integrante do Oracle server a partir de sua versão 8i que habilita a tecnologia dos produtos Oracle Transparent Gateway. em detalhes. sem a necessidade de adquirir e configurar um agente específico para o banco de dados que se deseja acessar. Além desta ferramenta para a administração. será substituída completamente por estes dois novos aplicativos.criarweb. além de outras facilidades de acesso a bancos heterogêneos. utilizar uma conectividade genérica para acessar bancos de dados não Oracle. Abraços e até a próxima! Artigo por Eber M.com/manuais/mysql/ © Os manuais de CriarWeb. seja ele Oracle ou não. sendo que Heterogeneous Services provê uma arquitetura comum e mecanismos de administração para os produtos Oracle gateway.com têm copyright dos autores. cada banco de dados específico requer um agente diferente. para criar um database link com um banco de dados Sybase é necessário obter um gateway transparente específico para Sybase para que então o banco de dados Oracle possa comunicar-se com ele. e estará disponível para download no site www. como os protocolos ODBC ou OLE DB.

• • Manual de MySQL: http://www.criarweb. Com o dblink e os privilégios necessários é possível utilizar comandos SELECT. UPDATE. sabendo que uma transação do banco de dados irá incluir os comandos DML (linguagem de manipulação de dados) direcionados a dblinks.ora). Ao criar um database link é possível utilizar e referenciar tabelas e visões do outro banco de dados. O valor da variável GLOBAL_NAMES na instância onde o database link será criado. O nome global do banco de dados também pode ser descoberto através da execução do seguinte comando SELECT no banco remoto: select GLOBAL_NAME from GLOBAL_NAME. 44 . acrescentando ao final do nome destes objetos @nome_do_dblink. A ferramenta Oracle Net precisa estar instalada tanto para o banco de dados local quanto para o remoto. os parâmetros db_name. A criação.com dados (inclusive de diferentes versões) Oracle.com têm copyright dos autores.com/manuais/mysql/ © Os manuais de CriarWeb.domínio. propriamente dita de um database link é realizada conectando-se no banco de dados local com um usuário que possua os privilégios necessários e executando o seguinte comando: CREATE DATABASE LINK nome_do_dblink CONNECT TO usuário_banco_remoto IDENTIFIED BY senha USING 'connect_string'.db_domain do arquivo de inicialização: initSID.Manuais e recursos para desenvolvimento web www. Não reproduzir sem autorização. DELETE ou LOCK TABLE sobre os objetos desejados do banco de dados remoto. tornando as operações de COMMIT e ROLLBACK sobre tais bases. INSERT. Para a criação de um database link alguns pré-requisitos devem ser observados: • O usuário que irá criar o database link precisa ter o privilégio de sistema CREATE DATABASE LINK (para database links privados) ou CREATE PUBLIC DATABASE LINK (para database links públicos).criarweb. ou seja. transparente. além do privilégio de sistema CREATE SESSION no banco de dados Oracle remoto. se configurada no arquivo de inicialização ou na sessão 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.

com.com/manuais/mysql/ © Os manuais de CriarWeb. Em geral. no arquivo de configurações de nome TNSNAMES. juntamente com sua senha. caso contrário. Quando o usuário é especificado. Manual de MySQL: http://www.Manuais e recursos para desenvolvimento web www. Esta opção de database link está disponível apenas em configuração de servidores multi-thread. Com o comando especificado acima.world) (PROTOCOL = TCP) (Host = meteoro) (Port = 1521)) (CONNECT_DATA = (SID = PRODUC) (GLOBAL_NAME = PRODUC. Por exemplo: CREATE PUBLIC SYNONYM emp FOR scott. Para manter-se a transparência no acesso a objetos de outros bancos de dados pode-se criar sinônimos públicos para os objetos acessados através do dblink. na cláusula CONNECT TO. Vale lembrar que o usuário especificado na criação do dblink deve existir no banco de dados remoto e caso a senha do usuário de conexão neste banco seja alterada é necessário destruir (DROP DATABASE LINK) e recriar o dblink com a identificação da nova senha do usuário de conexão. Por exemplo: CREATE DATABASE LINK PRODUC USING 'PRODUC'.criarweb. 45 . garantindo o aspecto de segurança no acesso a dados. tem-se um database link anônimo (ou conectado).ORA.emp@PRODUC Pode-se também criar um dbkink como PUBLIC. No caso de database links anônimos o usuário da sessão corrente será utilizado como padrão.criarweb. Por exemplo: PRODUC = (DESCRIPTION = (ADDRESS = (COMMUNITY = tcp. Não reproduzir sem autorização. O valor especificado na cláusula USING é conhecido como connect_string (ou net_connect_string a partir do Oracle8i).com Exemplo: CREATE DATABASE LINK PRODUC CONNECT TO scott IDENTIFIED BY tiger USING 'PRODUC'. a opção de databases links públicos são criados apenas quando se utiliza a cláusula de autenticação. o usuário atualmente conectado pode conectar-se ao banco de dados remoto PRODUC com se fosse o usuário Scott/tiger deste banco de dados remoto. A connect string precisa estar definida no Net8. tem-se um database link especificado. caso contrário o dblink deixará de funcionar. que permite a todos os usuários do banco de dados local acessar os objetos do banco de dados remoto.com têm copyright dos autores.br) (SERVER = DEDICATED))) Para testar se o dblink foi criado com sucesso pode-se utilizar o seguinte comendo SELECT: SELECT * FROM emp@PRODUC.

Username – Nome do usuário para log no banco remoto. Manual de MySQL: http://www. Restrições: • • • • • • • As seguintes operações não podem ser desenvolvidas utilizando-se database links: Conceder privilégios em objetos remotos.com têm copyright dos autores. potencializando o aspecto de segurança.criarweb.ORA). Conceder roles à usuários em a banco de dados remoto.'MM/DD/YYYY HH24:MI:SS') Criação from dba_db_links order by OWNER. bem como apresentar as rotinas para criação de usuários e gerenciamento de seus privilégios. Obter roles além dos padrões do usuário de conexão no banco de dados remoto e Executar consultas com hash joins. procedures e functions. Para identificar quais os database links disponíveis ao usuário atual e para onde os mesmos apontam o seguinte comando SELECT pode ser utilizado para acessar a view de DBA. views. Host – SQL*Net de conexão (encontrada no arquivo TNSNAMES. Created – Data e hora de criação do dblink.com Exemplo: CREATE SHARED PUBLIC DATABASE LINK PUBLIC CONNECT TO scott IDENTIFIED BY tiger AUTHENTICATED BY admin IDENTIFIED BY adm123 USING 'PRODUC'. com exceção de tabelas. Realizar operações de ANALYZE objetos remotos. permitindo autenticar o usuário para o servidor remoto.criarweb. to_char(CREATED. DBLink – Nome do dblink. neste exemplo ADMIN/ADM123 na instância remota. Definir integridade referencial. A cláusula AUTHENTICATED especifica o usuário e senha. Não reproduzir sem autorização. DB_LINK. Executar operações de DESCRIBE em alguns objetos remotos. Onde: Owner – Nome do usuário criou o dblink. HOST. USERNAME.com/manuais/mysql/ © Os manuais de CriarWeb.Manuais e recursos para desenvolvimento web www. 46 . dba_db_links: select OWNER. DB_LINK. Artigo por Damaris Fanderuff Gerenciamento de Usuários e Controle de Acessos do MySQL O objetivo principal deste artigo é descrever os mecanismos de controles de acessos do MySQL.

Manuais e recursos para desenvolvimento web www.. é possível que determinados comandos possam ser executados somente quando o usuário estiver em um host específico. bem como os seus privilégios. recomenda-se que apenas o administrador do banco de dados tenha acesso ao banco mysql (usuário root). o mesmo será criado.0) Permite executar SELECT . O MySQL armazena as informações dos seus usuários em 4 tabelas que estão localizadas no banco de dados mysql. Estas tabelas são a user. as tabelas tables_priv e columns_priv armazenam os privilégios associados a tabelas e colunas. além de poder controlar o acesso de acordo com o host a partir de onde está sendo feita a conexão com o servidor.com O MySQL possui um mecanismo que permite limitar o acesso de um usuário a apenas um banco. Um GRANT para um usuário já existente adicionará os novos privilégios aos já concedidos anteriormente. Finalmente.criarweb.tabela} TO usuario [IDENTIFIED BY 'senha'] [. Ao executar um comando GRANT para um usuário que não existe. Como estas tabelas possuem as informações dos usuários. conceder privilégios diferentes para cada host de onde o usuário possa estabelecer a conexão. tables_priv e columns_priv. ON {*. [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. por exemplo o mesmo host do servidor MySQL (localhost).com têm copyright dos autores. 47 . INTO OUTFILE e LOAD DATA INFILE Permite executar CREATE INDEX e DROP INDEX Manual de MySQL: http://www.* | db. tabela ou coluna. Não reproduzir sem autorização. O primeiro item a ser informado é(são) o(s) privilégio(s) a ser(em) concedido(s) ao(s) usuário(s)..com/manuais/mysql/ © Os manuais de CriarWeb. priv [(colunas)]] . A sintáxe resumida do comando GRANT é exibida a seguir: GRANT priv [(colunas)] [.... Pode-se ainda.. Assim. A lista de privilégios existentes no MySQL é descrita abaixo: Privilégio Descrição ALL [PRIVILEGE Todos os privilégios 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. db. usuario [IDENTIFIED BY 'senha']] . respectivamente. A tabela user armazena as informações de todos os usuários do banco e os privilégios globais deste usuário. Para criar usuários e conceder privilégios no MySQL.criarweb. utiliza-se o comando GRANT. A tabela db armazena os privilégios dos usuários específicos de um banco de dados.* | db.

No exemplo a seguir é criado um usuário com o nome teste que pode se conectar somente do host onde o servidor está em execução (localhost). PURGE MASTER LOGS e SET GLOBAL.com INSERT LOCK TABLES PROCESS Permite executar INSERT Permite executar LOCK TABLES em tabelas que você tenha o privilégio SELECT Permite executar SHOW FULL PROCESSLIST REFERENCE Ainda não está implementado S RELOAD Permite executar FLUSH REPLICATIO Permite ao usuário obter a localização do Master ou Slave N CLIENT REPLICATIO Necessário para a replicação Slave (leitura dos eventos do log binário 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. por questões de segurança. Caso você não informe o host para o usuário.com/manuais/mysql/ © Os manuais de CriarWeb. KILL . 48 . Para adicionar privilégios a um usuário existente o IDENTIFIED BY poderá ser omitido. o usuário só poderá fazer SELECT nas colunas nome e idade da tabela pessoa.* db.Manuais e recursos para desenvolvimento web www. estas deverão ser listadas ao lado do privilégio (priv (colunas)) Depois do nível você deverá indicar o usuário. que se encontra no banco de dados rh. Permite conectar-se ao servidor uma vez. Manual de MySQL: http://www. A senha do usuário é opcional. o MySQL assumirá "%". mas é recomendado sempre informá-la no momento de criação do usuário. ou a lista de usuários.* db.criarweb. Para especificar apenas algumas colunas de uma determinada tabela. Não reproduzir sem autorização. você deverá indicar o nível ao qual o privilégio se aplica. mesmo que o max_connections tenha sido atingido Permite executar UPDATE Sinônimo para "no privileges'' Permite ao usuário repassar os seus privilégios Permite executar INSERT Uma vez informados os privilégios do usuário.criarweb. para os quais os privilégios se aplicam. todos os hosts.tb Privilégio global Qualquer tabela do banco db Apenas a tabela tb do banco de dados db. No MySQL o usuário é constituído de um nome mais o host de onde ele poderá acessar o servidor (user@host). A senha do usuário é 12345. sendo possível especificar três níveis: *.com têm copyright dos autores. isto é.

Você pode especificar um conjunto de hosts utilizando o caracter "%". mysql>DELETE FROM mysql. Geralmente. sendo possível a conexão ao servidor a partir de qualquer máquina no domínio mysqlbrasil. você poderá limitar os recursos do usuário com as opções MAX_QUERIES_PER_HOUR. Ou utilizando IP: mysql>GRANT UPDATE.criarweb. Feito isto.. Lembre-se de que a parte ON do REVOKE deverá coincidir com a parte ON do GRANT que você deseja remover. Observe que para remover o usuário você deverá ter privilégio para executar DELETE na tabela user do mysql.br" IDENTIFIED BY "anonimo".com mysql>GRANT SELECT (nome. você terá que executar um comando FLUSH PRIVILEGES para que o MySQL possa atualizar os privilégios que estão em memória.tabela} FROM usuario [.com. neste caso é possível dar acesso a um usuário dentro de uma faixa de IPs ou DNS.* TO remoto@"200. Além disto. Finalmente.mysqlbrasil. Um usuário anônimo com os mesmos privilégios do usuário remoto seria criado da seguinte forma: mysql>GRANT UPDATE. priv [(colunas)]] .* | db.Manuais e recursos para desenvolvimento web www. INSERT ON rh.criarweb. idade) ON rh. MAX_UPDATES_PER_HOUR ou MAX_CONNECTIONS_PER_HOUR.236. usuario] . o comando REVOKE remove apenas os privilégios do usuário. a opção GRANT OPTION é utilizada para que o usuário possa conceder os seus privilégios para outros usuários do banco. ON {*. INSERT ON rh. Usuários anônimos também podem ser criados informando um nome com o caracter espaço (" ").br: mysql>GRANT UPDATE. o usuário remoto poderá executar UPDATE e INSERT em qualquer tabela do banco de dados rh.* | db. Além disto..* TO " "@"%mysqlbrasil. após terem sido Removidos todos os seus privilégios com o comando REVOKE. INSERT ON rh.user WHERE user="teste" AND host="localhost"..com.com.pessoa TO teste@localhost IDENTIFIED BY "12345".13. mas o usuário continuará existindo. Para listar os privilégios deste usuário utilize o comando: mysql>SHOW GRANTS FOR teste@localhost.%" IDENTIFIED BY "remoto".. Não reproduzir sem autorização.com têm copyright dos autores. esta tarefa é executada pelo administrador do banco (root).com/manuais/mysql/ © Os manuais de CriarWeb. Para remover um privilégio do usuário utilize o comando REVOKE mostrado abaixo: REVOKE priv [(colunas)] [.br" IDENTIFIED BY "remoto". Manual de MySQL: http://www. A remoção do usuário deverá ser feita com um DELETE explícito na tabela de usuários do MySQL. No exemplo a seguir. mysql>FLUSH PRIVILEGES. caso isto não se verifique o comando REVOKE não terá efeito algum. 49 .* TO remoto@"%.

com Aqui estamos descrevendo os comandos para a manipulação de usuários.%" IDENTIFIED BY "12345". Manual de MySQL: http://www.0. usuário e senha informados no momento da tentativa de conexão. podendo se conectar somente do host local sem senha. Feito isto. eliminando também eventuais problemas de segurança. Problemas para a conexão com o MySQL a partir do localhost: Ao instalar o MySQL são criados o usuário root com todos os privilégios (administrador). user@localhost IDENTIFIED BY "12345". que foi apresentado no último artigo. pois neste caso. Tomemos o caso em que após a instalação do MySQL.168. a cada conexão será pesquisada nesta lista a primeira ocorrência que coincida o host. Para autentiticar um usuário durante a conexão com o servidor. os usuários mais específicos virão antes do usuário anônimo. e o usuário anônimo com privilégios apenas no banco de dados test. a primeira ocorrência encontrada é a do usuário anônimo. ao pesquisar na lista pelo user@localhost.168. sendo que esta é a maneira de entendermos como funciona a criação de usuários no MySQL.com têm copyright dos autores. 50 . Para evitar este tipo de transtorno é melhor remover o usuário anônimo após a instalação do servidor.criarweb. Assim a ordenação ficaria: Usuário Senha root@localhost user@localhost 12345 " "@localhost user@"192.0.Manuais e recursos para desenvolvimento web www. criamos um usuário que possa se conectar a partir de qualquer host dentro do domínio onde se encontra o servidor MySQL: mysql>GRANT ALL ON rh. o MySQL armazena em memória a listas de todos usuários.%" 12345 Este usuário será capaz de se conectar ao servidor MySQL a partir de qualquer máquina no domínio. exceto o host local. Neste caso. já que qualquer usuário pode ser considerado anônimo pelo MySQL.%" IDENTIFIED BY "12345".com/manuais/mysql/ © Os manuais de CriarWeb.criarweb. que pode se conectar apenas do host local sem senha. o que gera um erro de "Acesso Negado". o primeiro registro encontrado não é mais o usuário anônimo e sim o user@localhost. Uma forma mais intuitiva para executar esta tarefa pode ser encontrada no MySQL Administrator. Caso existam dois hosts iguais.0.* TO user@"192. Não reproduzir sem autorização. da seguinte forma: mysql>GRANT ALL ON rh.* TO user@"192.168.168. O detalhe é que as senhas destes usuários não coincidem. portanto a conexão será estabelecida com sucesso. hosts e senhas cadastrados no banco e as ordena do host mais específico para o menos específico.0. o MySQL cria em memória a lista dos usuários da seguinte forma: Usuário Senha root@localhost " "@localhost user@"192.%" 12345 Desta forma. Para evitar a situação acima você deverá excluir o usuário anônimo ou adicionar o mesmo usuário para se conectar remoto e a partir do host local.

No Linux. Com isto.MYI contendo os índices. O formato de armazenamento dos dados. que permite ao próprio MySQL dividir o armazenamento da tabela em vários arquivos.criarweb. texto CHAR(30) NOT NULL. em alguns sistemas operacionais. O tipo de tabela default pode ser alterado incluindo-se no arquivo de configuração. Não reproduzir sem autorização.MYD que contém os dados e o . mas as restrições não serão respeitadas pelo banco. Manual de MySQL: http://www. o MySQL criará a tabela do tipo MyISAM. a opção descrita a seguir: default-table-type=tipo. ao incluir uma chave estrangeira com alguns constraints. indica que a tabela criada será do tipo MyISAM.criarweb. O MyISAM não provê controle de transações (commit ou rollback) e também não possue integridade referencial.FRM que armazena a definição da tabela.Manuais e recursos para desenvolvimento web www.com Abraços e até a próxima! Artigo por Eber M. Para superar esta limitação foi introduzido na versão 4.0. uma vez que os seus índices são armazenados em árvores binárias balanceadas. Neste artigo apresento os tipos de tabelas suportados pelo MySQL e as suas características. bem como alguns recursos do banco de dados são dependentes do tipo de tabela escolhido. restrições quanto ao tamanho destas tabelas. como mostrado a seguir: CREATE TABLE teste ( id INT NOT NULL. As tabelas MyISAM são armazenadas em 3 arquivos: . esta servirá apenas como documentação. uma vez que no MySQL é possível escolher o tipo da tabela no momento da criação da mesma. MyISAM: Este é o tipo de tabela padrão do MySQL. 51 . A partir da versão 4. o arquivo .18 você pode utilizar ENGINE como sinônimo de TYPE. Como as tabelas MyISAM são representadas por arquivos no modelo uma tabela para três arquivos. PRIMARY KEY (id) ) TYPE=MyISAM.com têm copyright dos autores.1 a opção RAID_TYPE utilizada no CREATE TABLE. O principal problema encontrado com as tabelas MyISAM é que elas possuem um mecanismo de locks por tabela. isto é.com/manuais/mysql/ © Os manuais de CriarWeb. o que provê um ganho para o acesso às informações. A definição do tipo de tabela é feito através do comando CREATE TABLE. Duarte Trabalhando com os Vários Tipos de Tabelas do MySQL O MySQL possui uma característica um pouco diferente dos outros sistemas gerenciadores de banco de dados. A seguir estão apresentados os tipos de tabelas existentes no MySQL: 1. Estas tabelas são de grande desempenho para leitura. com isto uma tabela MyISAM poderia ter somente 2G/4GB de dados. por exemplo existe a restrição de 2G/4GB por arquivo. existe. que é o valor default caso não seja informado o TYPE. TYPE=MyISAM. o tamanho da tabela MyISAM não fica preso ao tamanho máximo de arquivo do sistema operacional. Caso não seja informado o tipo de tabela. No comando acima.

é necessário um processo para dar a carga inicial nos dados quando o servidor de banco iniciar e sua execução. message CHAR(20).Manuais e recursos para desenvolvimento web www. CREATE TABLE t2 ( a INT NOT NULL AUTO_INCREMENT PRIMARY KEY. A principal aplicação das tabelas HEAP seria para tabelas que são consultadas com muita frequência. INDEX(a) )TYPE=MERGE UNION=(t1.com têm copyright dos autores. INSERT INTO t1 (message) VALUES ('Testing'). estas tabelas são extremamente rápidas. todas as vezes que há uma escrita na tabela. HEAP: Tabelas HEAP são armazenadas em memória e por isto são extramente rápidas. Não reproduzir sem autorização. MERGE: As tabelas MERGE são coleções de tabelas MyISAM idênticas. e ainda assim permite acesso ao conteúdo de todas elas como se fossem uma única tabela. 52 .('table'). Por outro lado. Este recurso permite a divisão de uma tabela grande em várias partes menores. 3. mas que não sofrem muitas alterações (lookup tables). Assim. devido à sua arquitetura simplificada. o MySQL precisa travar a tabela como um todo. message CHAR(20) ). uma vez que não são gravadas em disco. message CHAR(20) ).('t2'). Caso haja uma queda do SGBD os dados destas tabelas serão perdidos. 2.('t1'). INSERT INTO t2 (message) VALUES ('Testing'). o que bloqueia por um instante o acesso à esta tabela. O exemplo a seguir ilustra a criação de uma tabela MERGE: CREATE TABLE t1 ( a INT NOT NULL AUTO_INCREMENT PRIMARY KEY.com Assim.('table').com/manuais/mysql/ © Os manuais de CriarWeb. SELECT * FROM total. mesmo para processos que tentem acessar registros que estão sendo modificados. a 1 2 3 1 2 3 message Testing table t1 Testing table t2 Manual de MySQL: http://www. é gerada uma fila de espera até que o lock seja liberado e os outros processos possam ser executados.criarweb. Além disto.t2). por outro lado o seu conteúdo é volátil. CREATE TABLE total ( a INT NOT NULL AUTO_INCREMENT.criarweb.

uma vez que a tabela seria dividida em várias partes. t2 e total são idênticas e as duas primeiras são tabelas MyISAM (foi omitido o TYPE no comando CREATE TABLE).0 do MySQL ele passa a ser parte integrada das distribuições do MySQL.com Percebam que as tabelas t1.criarweb. desenvolvido pela InnoDBase Oy. deve-se tomar cuidado com a utilização de determinados recursos. além da capacidade transacional. simultaneamente. além de fornecer a recuperação automática de dados em caso de queda do sistema. requer mais espaço em memória e disco. apenas os comandos executados no InnoDB serão desfeitos. É importante lembrar que você poderá utilizar vários tipos de tabelas em um mesmo banco de dados. O InnoDB apresenta. com implementação dos constraints SET NULL. Não reproduzir sem autorização.com). 5. SET DEFAULT. BDB: O tipo de tabela BDB vem de BerkeleyDB. você poderá utilizar os comandos COMMIT e ROLLBACK. isto é.com/manuais/mysql/ © Os manuais de CriarWeb. InnoDB: O InnoDB é um tipo de tabela transacional. 4. você poderá ter vários locks ativos numa única tabela BDB. Por se tratar de um tipo de tabela com recursos mais avançados. obtendo um maior desempenho. 53 . se a sua aplicação é apenas de consulta você pode optar pelo tipo MyISAM em vez do InnoDB. Lock de registro. o InnoDB tem se mostrado extremamente rápido se comparado com outros SGBDs transacionais. e é desenvolvido pela Sleepycat (http://www. Níveis de isolamento. Armazenamentos de dados em tablespace. além disto. enquanto que os comandos executados no MyISAM persistirão. com isto você evita o overhead da transação. além de se apresentar.com têm copyright dos autores. A vantagem da utilização de tipos de tabela é que você poderá optar por utilizar um determinado tipo ou outro dependendo dos requisitos exigidos pela sua aplicação. mais facilmente gerenciadas. A principal vantagem da tabela MERGE é permitir a divisão de tabelas grandes em tabelas pequenas. Neste caso. A partir da versão 4. Também permite superar as limitações do sistema operacional em relação ao tamanho de arquivos. Ferramenta de backup on-line (ferramenta comercial. você tem acesso ao conteúdo das tabelas t1 e t2. A desvantagem é que podemos fazer apenas MERGE de tabelas MyISAM idênticas. O BDB provê ao MySQL um manipulador de tabelas com controle de transação.criarweb. O BDB apresenta um mecanismo de lock em nível de página. Duarte Manual de MySQL: http://www. onde cada parte poderia atingir o tamanho máximo de arquivo. Por exemplo. DB2.Manuais e recursos para desenvolvimento web www. em determinadas situações. etc. se você tiver uma transação envolvendo tabelas InnoDB e MyISAM e você submeter um comando ROLLBACK.sleepycat. Apesar disto. A utilização do tipo de tabela correto é um fator chave para determinar o desempenho da sua aplicação. uma vez que a tabela poderá ser constituída de várias páginas. Ao se submeter um SELECT na tabela total. por exemplo. outros recursos importantes: • • • • • Integridade referencial. um pouco mais lento que MyISAM. como Oracle. onde apenas os dados de uma mesma página ficarão bloqueados durante um perído de lock. RESTRICT e CASCADE. não GPL). Abraços e até a próxima! Artigo por Eber M.

Não reproduzir sem autorização.com/manuais/mysql/ © Os manuais de CriarWeb. 54 .criarweb.Manuais e recursos para desenvolvimento web www.criarweb.com têm copyright dos autores.com Manual de MySQL: http://www.