Super Manual MySQL

1147
MySQL Reference Manual Copyright c 1997-2003 MySQL AB

Transcript of Super Manual MySQL

  • 1. MySQL Reference Manual Copyright c 1997-2003 MySQL AB

2. iSumrio a1 Informaes Gerais . . . . . . . . . . . . . . . . . . . . . . . . 1 co1.1 Sobre Este Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.1.1 Convenes Usadas Neste Manual . . . . . . . . . . . . . . . . 2co1.2 Viso Geral do Sistema de Gerenciamento de Banco de Dados aMySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.1 Histria do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5o1.2.2 As Principais Caracter isticas do MySQL . . . . . . . . . . 51.2.3 Estabilidade do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . 81.2.4 Qual o Tamanho Que as Tabelas do MySQL Podem Ter? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.2.5 Compatibilidade Com o Ano 2000 (Y2K) . . . . . . . . 111.3 Viso Geral da MySQL AB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 a1.3.1 O Modelo de Negcio e Servios da MySQL AB . . 13 oc 1.3.1.1 Suporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3.1.2 Treinamento e Certicao. . . . . . . . . . . . . 13 ca 1.3.1.3 Consultoria . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.3.1.4 Licenas Comerciais . . . . . . . . . . . . . . . . . . . 14 c 1.3.1.5 Parcerias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.3.2 Informaes para Contato . . . . . . . . . . . . . . . . . . . . . . 15 co1.4 Suporte e Licenciamento do MySQL . . . . . . . . . . . . . . . . . . . . . 161.4.1 Suporte Oferecido pela MySQL AB . . . . . . . . . . . . . 161.4.2 Copyrights e Licenas Usadas pelo MySQL . . . . . . 17 c1.4.3 Licenas do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 18c 1.4.3.1 Usando o Programa MySQL Sob umaLicena Comercial . . . . . . . . . . . . . . . . . . . . . . . . 18c 1.4.3.2 Usando o Programa MySQL Sem CustoSob GPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.4.4 Logomarcas e Marcas Registradas da MySQL AB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.4.4.1 O Logo Original do MySQL. . . . . . . . . . . . 20 1.4.4.2 Logomarcas da MySQL que Podem SerUsadas Sem Permisso de Alterao . . . . . . . . 20aca 1.4.4.3 Quando Voc Precisa de Permisso dee aAlterao para Usar as Logomarcas do MySQL? ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.4.4.4 Logomarcas dos Parceiros da MySQL AB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.4.4.5 Usando a Palavra MySQL em Texto Impressoou Apresentao . . . . . . . . . . . . . . . . . . . . . . . . . . 21ca 1.4.4.6 Usando a Palavra MySQL em Nomes deCompanhias e Produtos . . . . . . . . . . . . . . . . . . . 211.5 Mapa de Desenvolvimento do MySQL. . . . . . . . . . . . . . . . . . . . 211.5.1 MySQL 4.0 in a Nutshell . . . . . . . . . . . . . . . . . . . . . . . 22 3. ii1.5.1.1 Recursos Dispon iveis no MySQL 4.0 . . . . 221.5.1.2 Servidor Embutido MySQL . . . . . . . . . . . . 231.5.2 MySQL 4.1 in a Nutshell . . . . . . . . . . . . . . . . . . . . . . . 241.5.2.1 Recursos Dispon iveis no MySQL 4.1 . . . . 241.5.2.2 Stepwise Rollout . . . . . . . . . . . . . . . . . . . . . . 261.5.2.3 Pronto para Uso em Desenvolvimento Imediato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261.5.3 MySQL 5.0, A Prxima Distribuio deoca Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261.6 MySQL e o Futuro (o TODO). . . . . . . . . . . . . . . . . . . . . . . . . . . 261.6.1 Novos Recursos Planejados Para a Verso 4.1 . . . . 26a1.6.2 Novos Recursos Planejados Para a Verso 5.0 . . . . 27a1.6.3 Novos Recursos Planejados Para a Verso 5.1 . . . . 28a1.6.4 Novos Recursos Planejados Para a Verso em um a Futuro Prximo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 o1.6.5 Novos Recursos Planejados Para a Verso em um a Futuro a Mdio Prazo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31e1.6.6 Novos Recursos que No Planejamos Fazer . . . . . . 32a1.7 Fontes de Informaes do MySQL . . . . . . . . . . . . . . . . . . . . . . . 33co1.7.1 Listas de Discusso MySQL . . . . . . . . . . . . . . . . . . . . 33 a1.7.1.1 As Listas de Discusso do MySQL . . . . . . 33a1.7.1.2 Fazendo perguntas ou relatando erros . . . 351.7.1.3 Como relatar erros ou problemas . . . . . . . 361.7.1.4 Guia para responder questes na lista deo discusso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 a1.7.2 Suporte a Comunidade MySQL Atrvs do IRCe (Internet Relay Chat) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411.8 Qual compatibilidade aos padres o MySQL oferece ? . . . . . 41 o1.8.1 Qual Padro o MySQL Segue? . . . . . . . . . . . . . . . . . . 42a1.8.2 Executando o MySQL no modo ANSI . . . . . . . . . . . 421.8.3 Extenses do MySQL para o Padro SQL-92. . . . . 43oa1.8.4 Diferenas do MySQL em Comparao com o c ca SQL-92 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451.8.4.1 Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . 461.8.4.2 SELECT INTO TABLE . . . . . . . . . . . . . . . . . . . 461.8.4.3 Transaes e Operaes Atmicas . . . . . . 46 coco o1.8.4.4 Stored Procedures e Triggers . . . . . . . . . . . 491.8.4.5 Chaves Estrangeiras . . . . . . . . . . . . . . . . . . . 491.8.4.6 Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511.8.4.7 -- como In de Comentrio . . . . . . . . 51 icioa1.8.5 Como o MySQL Lida com Restries . . . . . . . . . . . . 52co1.8.5.1 Restries de PRIMARY KEY / UNIQUEco. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521.8.5.2 Restries de NOT NULL . . . . . . . . . . . . . . . . 53co1.8.5.3 Restries de ENUM e SET. . . . . . . . . . . . . . . 53co1.8.6 Erros Conhecidos e Decincias de Projetos noe MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4. iii1.8.6.1 Erros da Verso 3.23 Corrigidos em Versesa o Posteriores do MySQL . . . . . . . . . . . . . . . . . . . . 531.8.6.2 Open Bugs / Decincias de Projeto no e MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 Instalao do MySQL . . . . . . . . . . . . . . . . . . . . . 60 ca2.1 Instalao rpida padro do MySQL . . . . . . . . . . . . . . . . . . . . . 60 ca a a2.1.1 Instalando o MySQL no Windows . . . . . . . . . . . . . . . 602.1.1.1 Exigncias do Sistema Windows . . . . . . . . 61 e2.1.1.2 Instalando uma Distribuio Binria do caa Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612.1.1.3 Preparando o Ambiente MySQL do Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622.1.1.4 Selecionando um Servidor Windows . . . . 632.1.1.5 Iniciando o Servidor pela Primeira Vez . . 642.1.1.6 Iniciando o MySQL no Windows 95, 98, ou Me . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652.1.1.7 Iniciando o MySQL no Windows NT, 2000, ou XP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652.1.1.8 Executando o MySQL no Windows . . . . . 682.1.2 Instalando o MySQL no Linux . . . . . . . . . . . . . . . . . . 692.1.3 Instalando o MySQL no Mac OS X . . . . . . . . . . . . . 712.1.4 Instalando o MySQL no NetWare . . . . . . . . . . . . . . . 732.1.4.1 Instalando o MySQL para Binrios doa NetWare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742.2 Detalhes Gerais de Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 ca2.2.1 Como obter o MySQL . . . . . . . . . . . . . . . . . . . . . . . . . 752.2.2 Vericando a Integridade do Pacote Usando MD5 Checksums ou GnuPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752.2.3 Sistemas Operacionais suportados pelo MySQL . . 782.2.4 Qual verso do MySQL deve ser usada . . . . . . . . . . 80 a2.2.5 Layouts de Instalao . . . . . . . . . . . . . . . . . . . . . . . . . . 83 ca2.2.6 Como e quando as atualizaes so lanadas? . . . . 84 co ac2.2.7 Filosoa das Distribuies - Nenhum Bug co Conhecidos nas Distribuies . . . . . . . . . . . . . . . . . . . . . 84 co2.2.8 Binrios MySQL compilados pela MySQL AB . . . 86a2.2.9 Instalando uma Distribuio Binria do MySQL . . 91caa2.3 Instalando uma distribuio com fontes do MySQL . . . . . . . 93ca2.3.1 Viso geral da instalao rpida . . . . . . . . . . . . . . . . 94 a ca a2.3.2 Aplicando patches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 972.3.3 Opes tcoipicas do configure . . . . . . . . . . . . . . . . . . . 972.3.4 Instalando pela rvore de fontes do desenvolvimento a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002.3.5 Lidando com Problemas de Compilao . . . . . . . . 103ca2.3.6 Notas MIT-pthreads . . . . . . . . . . . . . . . . . . . . . . . . . . 1062.3.7 Instalando o MySQL a partir do Fonte no Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1072.3.7.1 Construindo o MySQL Usando VC++ . . 108 5. iv 2.3.7.2 Criando um Pacote Fonte do Windows apartir da Ultima Fonte de Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1102.4 Conguraes e Testes Ps-instalao . . . . . . . . . . . . . . . . . . . 111 coo ca2.4.1 Problemas Executando o mysql_install_db. . . . 1152.4.2 Problemas Inicializando o Servidor MySQL . . . . . 1162.4.3 Inicializando e parando o MySQL automaticamente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1182.5 Atualizando/Desatualizando o MySQL . . . . . . . . . . . . . . . . . . 1202.5.1 Atualizando da Verso 4.0 para 4.1 . . . . . . . . . . . . 120a2.5.2 Atualizando da Verso 3.23 para 4.0 . . . . . . . . . . . 123a2.5.3 Atualizando da verso 3.22 para 3.23 . . . . . . . . . . . 126 a2.5.4 Atualizando da verso 3.21 para 3.22 . . . . . . . . . . . 128 a2.5.5 Atualizando da verso 3.20 para 3.21 . . . . . . . . . . . 129 a2.5.6 Atualizando a Tabela de Permisses . . . . . . . . . . . . 130 o2.5.7 Atualizando para outra arquitetura . . . . . . . . . . . . 1302.5.8 Atualizando o MySQL no Windows . . . . . . . . . . . . 1322.6 Notas espec icas para os Sistemas Operacionais . . . . . . . . . 1322.6.1 Notas Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 2.6.1.1 Conectando em um MySQL Rematamentea Windows Utilizando SSH . . . . . . . . . . . . . . . 133 2.6.1.2 Distribuindo Dados Entre Diferentes Discosno Win32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 2.6.1.3 Compilando clientes MySQL no Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 2.6.1.4 MySQL para Windows Comparado com oMySQL para Unix . . . . . . . . . . . . . . . . . . . . . . . 1342.6.2 Notas Linux (Todas as verses) . . . . . . . . . . . . . . . . 137 o 2.6.2.1 Notas Linux para distribuies binrias co a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 2.6.2.2 Notas Linux x86 . . . . . . . . . . . . . . . . . . . . . 142 2.6.2.3 Notas Linux SPARC . . . . . . . . . . . . . . . . . 143 2.6.2.4 Notas Linux Alpha . . . . . . . . . . . . . . . . . . . 143 2.6.2.5 Notas Linux PowerPC . . . . . . . . . . . . . . . . 144 2.6.2.6 Notas Linux MIPS . . . . . . . . . . . . . . . . . . . 144 2.6.2.7 Notas Linux IA-64 . . . . . . . . . . . . . . . . . . . 1442.6.3 Notas Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 2.6.3.1 Notas Solaris 2.7/2.8 . . . . . . . . . . . . . . . . . 147 2.6.3.2 Notas Solaris x86 . . . . . . . . . . . . . . . . . . . . 1482.6.4 Notas BSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 2.6.4.1 Notas FreeBSD . . . . . . . . . . . . . . . . . . . . . . 149 2.6.4.2 Notas NetBSD . . . . . . . . . . . . . . . . . . . . . . . 150 2.6.4.3 Notas OpenBSD . . . . . . . . . . . . . . . . . . . . . 150 2.6.4.4 Notas OpenBSD 2.8 . . . . . . . . . . . . . . . . . . 151 2.6.4.5 Notas BSDI Verso 2.x . . . . . . . . . . . . . . . 151 a 2.6.4.6 Notas BSD/OS Verso 3.x . . . . . . . . . . . . 151 a 2.6.4.7 Notas BSD/OS Verso 4.x . . . . . . . . . . . . 152 a2.6.5 Notas Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 6. v2.6.5.1 Mac OS X 10.x . . . . . . . . . . . . . . . . . . . . . . 1522.6.5.2 Mac OS X Server 1.2 (Rhapsody) . . . . . 153 2.6.6 Notas de Outros Unix . . . . . . . . . . . . . . . . . . . . . . . . . 1532.6.6.1 Notas HP-UX para distribuies binriasco a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1532.6.6.2 Notas HP-UX Verso 10.20 . . . . . . . . . . . 154a2.6.6.3 Notas HP-UX Verso 11.x . . . . . . . . . . . . 154a2.6.6.4 Notas IBM-AIX. . . . . . . . . . . . . . . . . . . . . . 1552.6.6.5 Notas SunOS 4 . . . . . . . . . . . . . . . . . . . . . . 1572.6.6.6 Notas Alpha-DEC-UNIX (Tru64) . . . . . 1572.6.6.7 Notas Alpha-DEC-OSF1. . . . . . . . . . . . . . 1592.6.6.8 Notas SGI Irix . . . . . . . . . . . . . . . . . . . . . . . 1602.6.6.9 Notas SCO . . . . . . . . . . . . . . . . . . . . . . . . . . 1612.6.6.10 Notas SCO Unixware Version 7.0. . . . . 163 2.6.7 Notas OS/2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 2.6.8 Notas Novell NetWare . . . . . . . . . . . . . . . . . . . . . . . . 164 2.6.9 Notas BeOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 2.7 Comentrios de Instalao do Perl . . . . . . . . . . . . . . . . . . . . . . 165aca 2.7.1 Instalando Perl no Unix . . . . . . . . . . . . . . . . . . . . . . . 165 2.7.2 Instalaando ActiveState Perl no Windows . . . . . . 166 2.7.3 Problemas Usando a Interface Perl DBI/DBD . . . . 1663 Tutorial de Introduo Do MySQL . . . . . . . 169 ca 3.1 Conectando e Desconectando do Servidor . . . . . . . . . . . . . . . 169 3.2 Fazendo Consultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 3.3 Criao e Utilizao de um Banco de Dados . . . . . . . . . . . . . 173caca 3.3.1 Criando e Selecionando um Banco de Dados . . . . 174 3.3.2 Criando uma Tabela . . . . . . . . . . . . . . . . . . . . . . . . . . 175 3.3.3 Carregando dados em uma tabela . . . . . . . . . . . . . . 176 3.3.4 Recuperando Informaes de uma Tabela . . . . . . . 178co 3.3.4.1 Selecionando Todos os Dados . . . . . . . . . 178 3.3.4.2 Selecionando Registros Especicos . . . . . 179 3.3.4.3 Selecionando Colunas Especicas . . . . . . 180 3.3.4.4 Ordenando Registros . . . . . . . . . . . . . . . . . 181 3.3.4.5 Clculo de Datas. . . . . . . . . . . . . . . . . . . . . 183 a 3.3.4.6 Trabalhando com Valores Nulos (NULL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 3.3.4.7 Combinao de padres. . . . . . . . . . . . . . . 186cao 3.3.4.8 Contando Registros . . . . . . . . . . . . . . . . . . 189 3.3.4.9 Utilizando Mltiplas Tabelas . . . . . . . . . . 191u 3.4 Obtendo Informaes Sobre Bancos de Dados e Tabelas . . 193 co 3.5 Utilizando mysql em Modo Batch . . . . . . . . . . . . . . . . . . . . . . 194 3.6 Exemplos de Consultas Comuns . . . . . . . . . . . . . . . . . . . . . . . . 196 3.6.1 O Valor Mximo para uma Coluna . . . . . . . . . . . . . 196a 3.6.2 O Registro que Armazena o Valor Mximo para umaa Coluna Determinada . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 3.6.3 Mximo da Coluna por Grupo . . . . . . . . . . . . . . . . . 197 a 7. vi3.6.4 As Linhas Armazenando o Group-wise Mximo dea um Certo Campo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1983.6.5 Utilizando Variveis de Usurio . . . . . . . . . . . . . . . . 199 a a3.6.6 Utilizando Chaves Estrangeiras . . . . . . . . . . . . . . . . 1993.6.7 Pesquisando em Duas Chaves . . . . . . . . . . . . . . . . . . 2013.6.8 Calculando Visitas Dirias . . . . . . . . . . . . . . . . . . . . 201a3.6.9 Usando AUTO_INCREMENT . . . . . . . . . . . . . . . . . . . . . . 2023.7 Consultas de Projetos Gmeos . . . . . . . . . . . . . . . . . . . . . . . . . 203 e3.7.1 Encontrando Todos Gmeos No-distribue aidos . . . 2043.7.2 Mostrando uma Tabela sobre a Situao dos Pares ca Gmeos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 e3.8 Utilizando MySQL com Apache . . . . . . . . . . . . . . . . . . . . . . . . 2074 Administrao do Bancos de Dados MySQL ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084.1 Congurando o MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084.1.1 Opes de Linha de Comando do mysqld . . . . . . . 208 co4.1.2 Arquivo de Opes my.cnf . . . . . . . . . . . . . . . . . . . 217 co4.2 Executando Mltiplos MySQL Servers na Mesma Mquina u a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2204.2.1 Executando Mltiplos Servidores no Windows . . 221u4.2.1.1 Iniciando Mltiplos Servidores na Linha de u Comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2224.2.1.2 Iniciando Mltiplos Servidores Como u Servios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223c4.2.2 Executando Mltiplos Servidores no Unix . . . . . . 225u4.2.3 Usando Programas Clientes em um Ambiente Multi-Servidor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2264.3 Detalhes Gerais de Segurana e o Sistema de Privilgio de c eAcesso do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2274.3.1 Segurana Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227c4.3.2 Como Tornar o MySQL Seguro contra Crackers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2304.3.3 Opes de Inicializao para o mysqld em Relao a co caca Segurana. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231c4.3.4 Detalhes de Segurana com LOAD DATA LOCAL . . . 232 c4.3.5 O Que o Sistema de Privilgios Faz . . . . . . . . . . . . 233e4.3.6 Como o Sistema de Privilgios Funciona . . . . . . . . 233 e4.3.7 Privilgios Fornecidos pelo MySQL . . . . . . . . . . . . 237e4.3.8 Conectando ao Servidor MySQL . . . . . . . . . . . . . . . 2394.3.9 Controle de Acesso, Estgio 1: Vericao da a ca Conexo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240a4.3.10 Controle de Acesso, Estgio 2: Vericao daa ca Requisio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243ca4.3.11 Hashing de Senhas no MySQL 4.1 . . . . . . . . . . . . 2464.3.12 Causas dos Erros de Accesso Negado . . . . . . . . . 2504.4 Gerenciamento das Contas dos Usurios no MySQL . . . . . . 255a4.4.1 A Sintaxe de GRANT e REVOKE . . . . . . . . . . . . . . . . . . 255 8. vii4.4.2 Nomes de Usurios e Senhas do MySQL . . . . . . . . 260a4.4.3 Quando as Alteraes nos Privilgios tem Efeitoco e. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2614.4.4 Congurando os Privilgios Iniciais do MySQL . . 261 e4.4.5 Adicionando Novos Usurios ao MySQL . . . . . . . . 262 a4.4.6 Deletando Usurios do MySQL . . . . . . . . . . . . . . . . 265 a4.4.7 Limitando os Recursos dos Usurios. . . . . . . . . . . . 266a4.4.8 Congurando Senhas . . . . . . . . . . . . . . . . . . . . . . . . . 2674.4.9 Mantendo Sua Senha Segura . . . . . . . . . . . . . . . . . . 2684.4.10 Usando Conexes Seguras . . . . . . . . . . . . . . . . . . . . 269o4.4.10.1 Conceitos Basicos . . . . . . . . . . . . . . . . . . . 2694.4.10.2 Exigncias . . . . . . . . . . . . . . . . . . . . . . . . . . 269 e4.4.10.3 Congurando Certicados SSL para o MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2704.4.10.4 Opes SSL do GRANT . . . . . . . . . . . . . . . 274co4.4.10.5 Opes SSL de Linha de Comando . . . 275co4.5 Preveno de Disastres e Recuperao . . . . . . . . . . . . . . . . . . 276 caca4.5.1 Backups dos Bancos de Dados . . . . . . . . . . . . . . . . . 2764.5.2 Sintaxe de BACKUP TABLE . . . . . . . . . . . . . . . . . . . . . . 2784.5.3 Sintaxe de RESTORE TABLE . . . . . . . . . . . . . . . . . . . . . 2784.5.4 Sintaxe de CHECK TABLE . . . . . . . . . . . . . . . . . . . . . . . 2794.5.5 Sintaxe do REPAIR TABLE . . . . . . . . . . . . . . . . . . . . . . 2804.5.6 Utilizando myisamchk para Manuteno de Tabelas eca Recuperao em Caso de Falhas. . . . . . . . . . . . . . . . . . 281ca4.5.6.1 Sintaxe do myisamchk . . . . . . . . . . . . . . . . 2824.5.6.2 Opes Gerais do myisamchk . . . . . . . . . . 283co4.5.6.3 Opes de Vericao do myisamchk . . . 284coca4.5.6.4 Opes de Reparos do myisamchk . . . . . 285co4.5.6.5 Outras Opes do myisamchk . . . . . . . . . 287co4.5.6.6 Uso de Memria do myisamchk . . . . . . . . 287o4.5.6.7 Uso do myisamchk para Recuperao em ca Caso de Falhas . . . . . . . . . . . . . . . . . . . . . . . . . . 2884.5.6.8 Como Vericar Erros em Tabelas . . . . . . 2894.5.6.9 Como Reparar Tabelas . . . . . . . . . . . . . . . 2904.5.6.10 Otimizao de Tabelas . . . . . . . . . . . . . . 292 ca4.5.7 Congurando um Regime de Manuteno das ca Tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2924.5.8 Obtendo Informaes sobre as Tabelas . . . . . . . . . 293 co4.6 Adiministrao do Banco de Dados e Referncia de Linguagemca e. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2994.6.1 Sintaxe de OPTIMIZE TABLE. . . . . . . . . . . . . . . . . . . . 2994.6.2 Sintaxe de ANALYZE TABLE . . . . . . . . . . . . . . . . . . . . . 2994.6.3 Sintaxe de CHECKSUM TABLE. . . . . . . . . . . . . . . . . . . . 3004.6.4 Sintaxe de FLUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3004.6.5 Sintaxe de RESET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3024.6.6 Sintaxe de PURGE MASTER LOGS . . . . . . . . . . . . . . . . . 3024.6.7 Sintaxe de KILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3024.6.8 Sintaxe de SHOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 9. viii 4.6.8.1 Recuperando Informaes sobre Bancos decoDados, Tabelas, Colunas e Indices . . . . . . . . . 304 4.6.8.2 SHOW TABLE STATUS . . . . . . . . . . . . . . . . . . 305 4.6.8.3 SHOW STATUS . . . . . . . . . . . . . . . . . . . . . . . . . 306 4.6.8.4 SHOW VARIABLES . . . . . . . . . . . . . . . . . . . . . 309 4.6.8.5 SHOW [BDB] LOGS . . . . . . . . . . . . . . . . . . . . . 321 4.6.8.6 SHOW PROCESSLIST . . . . . . . . . . . . . . . . . . . 321 4.6.8.7 SHOW GRANTS . . . . . . . . . . . . . . . . . . . . . . . . . 323 4.6.8.8 SHOW CREATE TABLE . . . . . . . . . . . . . . . . . . 323 4.6.8.9 SHOW WARNINGS | ERRORS . . . . . . . . . . . . . 323 4.6.8.10 SHOW TABLE TYPES . . . . . . . . . . . . . . . . . . 325 4.6.8.11 SHOW PRIVILEGES . . . . . . . . . . . . . . . . . . . 3264.7 Localizao do MySQL e Utilizao Internacional . . . . . . . . 326ca ca4.7.1 O Conjunto de Caracteres Utilizado para Dados eOrdenao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 ca 4.7.1.1 German character set . . . . . . . . . . . . . . . . 3274.7.2 Mensagens de Erros em Outras L inguas . . . . . . . . 3284.7.3 Adicionando um Novo Conjunto de Caracteres . . 3284.7.4 Os Vetores de Denies de Caracteres . . . . . . . . . 330co4.7.5 Suporte ` Ordenao de Strings . . . . . . . . . . . . . . . 330aca4.7.6 Suporte ` Caracteres Multi-byte . . . . . . . . . . . . . . . 331a4.7.7 Problemas com Conjuntos de Caracteres . . . . . . . 3314.8 Utilitrios e Scripts do Lado do Servidor MySQL . . . . . . . . 331a4.8.1 Viso Geral dos Scripts e Utilitrios do Ladoa aServidor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3314.8.2 mysqld-safe, o wrapper do mysqld . . . . . . . . . . . . 3324.8.3 mysqld_multi, programa para gerenciar mltiplos uservidores MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3344.8.4 myisampack, O Gerador de Tabelas Compactadas deSomente Leitura do MySQL . . . . . . . . . . . . . . . . . . . . . 3374.8.5 mysqld-max, om servidor mysqld extendido . . . . . 3444.9 Utilitrios e Scripts do Lado do Cliente MySQL . . . . . . . . . 346a4.9.1 Viso Geral dos Utilitrios e Scripts do Lado doaaCliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3464.9.2 mysql, A Ferramenta de Linha de Comando . . . . 3474.9.3 mysqlcc, The MySQL Control Center . . . . . . . . . . 3554.9.4 mysqladmin, Administrando um Servidor MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3574.9.5 mysqlbinlog, Executando as Consultas a Partir deum Log Binrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358a4.9.6 Usando mysqlcheck para Manuteno de Tabelas e caRecuperao em Caso de Falhas. . . . . . . . . . . . . . . . . . 360 ca4.9.7 mysqldump, Descarregando a Estrutura de Tabelas eDados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3624.9.8 mysqlhotcopy, Copiando Bancos de Dados e Tabelasdo MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3664.9.9 mysqlimport, Importando Dados de Arquivos Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 10. ix4.9.10 mysqlshow, Exibindo Bancos de Dados, Tabelas e Colunas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3704.9.11 mysql_config, Opes para compilao do cliente co ca MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3714.9.12 perror, Explicando Cdigos de Erros . . . . . . . . . 372 o4.9.13 Como Executar Comandos SQL a Partir de um Arquivo Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3724.10 Os Arquivos de Log do MySQL . . . . . . . . . . . . . . . . . . . . . . . 3724.10.1 O Log de Erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3734.10.2 O Log de Consultas. . . . . . . . . . . . . . . . . . . . . . . . . . 3734.10.3 O Log de Atualizaes . . . . . . . . . . . . . . . . . . . . . . . 374 co4.10.4 O Log Binrio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375a4.10.5 O Log para Consultas Lentas . . . . . . . . . . . . . . . . . 3784.10.6 Manuteno do Log de Arquivo . . . . . . . . . . . . . . . 378 ca4.11 Replicao no MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 ca4.11.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379ca4.11.2 Viso Geral da Implementao da Replicao . . 380aca ca4.11.3 Detalhes de Implementao da Replicao . . . . . 381 ca ca4.11.4 Como Congurar a Replicao . . . . . . . . . . . . . . . . 386 ca4.11.5 Recursos de Replicao e Problemas Conhecidos ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3904.11.6 Opes de Inicializao da Replicao . . . . . . . . . 392co ca ca4.11.7 Instrues SQL para Controle do Servidor Masterco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 4.11.7.1 PURGE MASTER LOGS . . . . . . . . . . . . . . . . . 401 4.11.7.2 RESET MASTER . . . . . . . . . . . . . . . . . . . . . . 401 4.11.7.3 SET SQL_LOG_BIN . . . . . . . . . . . . . . . . . . . 401 4.11.7.4 SHOW BINLOG EVENTS . . . . . . . . . . . . . . . . 401 4.11.7.5 SHOW MASTER STATUS . . . . . . . . . . . . . . . . 402 4.11.7.6 SHOW MASTER LOGS . . . . . . . . . . . . . . . . . . 402 4.11.7.7 SHOW SLAVE HOSTS . . . . . . . . . . . . . . . . . . 4024.11.8 Instrues SQL para Controle do Servidor Slaveco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 4.11.8.1 CHANGE MASTER TO . . . . . . . . . . . . . . . . . . 402 4.11.8.2 LOAD DATA FROM MASTER . . . . . . . . . . . . . 405 4.11.8.3 LOAD TABLE tbl_name FROM MASTER. . . 405 4.11.8.4 MASTER_POS_WAIT() . . . . . . . . . . . . . . . . 405 4.11.8.5 RESET SLAVE. . . . . . . . . . . . . . . . . . . . . . . . 406 4.11.8.6 SET GLOBAL SQL_SLAVE_SKIP_COUNTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 4.11.8.7 SHOW SLAVE STATUS . . . . . . . . . . . . . . . . . 406 4.11.8.8 START SLAVE. . . . . . . . . . . . . . . . . . . . . . . . 409 4.11.8.9 STOP SLAVE . . . . . . . . . . . . . . . . . . . . . . . . . 4104.11.9 FAQ da Replicao . . . . . . . . . . . . . . . . . . . . . . . . . . 411ca4.11.10 Problemas com Replicao . . . . . . . . . . . . . . . . . . 416ca4.11.11 Relatando Problemas de Replicao . . . . . . . . . . 417ca 11. x5 Otimizao do MySQL . . . . . . . . . . . . . . . . . . . 419 ca5.1 Viso Geral da Otimizao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 a ca5.1.1 Limitaes do Projeto MySQL/Trocas . . . . . . . . . 419 co5.1.2 Portabilidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4205.1.3 Para que Utilizamos o MySQL?. . . . . . . . . . . . . . . . 4215.1.4 O Pacote de Benchmark do MySQL . . . . . . . . . . . . 4225.1.5 Utilizando seus Prprios Benchmarks . . . . . . . . . . 423o5.2 Otimizando SELECTs e Outras Consultas . . . . . . . . . . . . . . . . 4245.2.1 Sintaxe de EXPLAIN (Obter informaes sobre uma co SELECT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4255.2.2 Estimando o Desempenho de uma Consulta. . . . . 4325.2.3 Velocidade das Consultas que Utilizam SELECT . . 4325.2.4 Como o MySQL Otimiza Clusulas WHERE . . . . . . 433a5.2.5 Como o MySQL Otimiza IS NULL . . . . . . . . . . . . . . 4345.2.6 Como o MySQL Otimiza Clusulas DISTINCT . . . 435 a5.2.7 Como o MySQL Otimiza LEFT JOIN e RIGHT JOIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4365.2.8 Como o MySQL Otimiza Clusulas ORDER BY . . . 437 a5.2.9 Como o MySQL Otimiza Clusulas LIMIT . . . . . . 438a5.2.10 Performance das Consultas que Utilizam INSERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4395.2.11 Performance das Consultas que Utilizam UPDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4415.2.12 Performance das Consultas que Utilizam DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4415.2.13 Mais Dicas sobre Otimizaes . . . . . . . . . . . . . . . . 441co5.3 Detalhes sobre Locks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4445.3.1 Como o MySQL Trava as Tabelas . . . . . . . . . . . . . . 4445.3.2 Detalhes sobre Lock de Tabelas . . . . . . . . . . . . . . . . 4455.4 Otimizando a Estrutura de Banco de Dados . . . . . . . . . . . . . 4475.4.1 Opes do Projeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447co5.4.2 Deixando os Dados com o Menor Tamanho Poss ivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4475.4.3 Como o MySQL Utiliza Indices . . . . . . . . . . . . . . . . 4485.4.4 Indices de Colunas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4505.4.5 Indices de Mltiplas Colunas . . . . . . . . . . . . . . . . . . 451u5.4.6 Como o MySQL Conta as Tabelas Abertas . . . . . 4525.4.7 Como o MySQL Abre e Fecha as Tabelas . . . . . . . 4525.4.8 Desvantagem em Criar um Nmero Grande deu Tabelas no Mesmo Banco de Dados . . . . . . . . . . . . . . 4535.5 Otimizando o Servidor MySQL . . . . . . . . . . . . . . . . . . . . . . . . . 4545.5.1 Sintonia dos Parmetros em Tempo de a Sistema/Compilao e na Inicializao. . . . . . . . . . . . 454ca ca5.5.2 Parmetros de Sintonia do Servidor . . . . . . . . . . . . 454 a5.5.3 Como a Compilao e a Ligao Afetam a ca ca Velocidade do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . 4575.5.4 Como o MySQL Utiliza a Memria . . . . . . . . . . . . 458o5.5.5 Como o MySQL Utiliza o DNS . . . . . . . . . . . . . . . . 460 12. xi 5.5.6 Sintaxe de SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460 5.6 Detalhes de Disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 5.6.1 Utilizando Links Simblicos . . . . . . . . . . . . . . . . . . . 466 o5.6.1.1 Utilizando Links Simblicos para Bancos deo Dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4665.6.1.2 Utilizando Links Simblicos para Tabelaso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4676 Referncia de Linguagem do MySQL . . . . . . 469 e 6.1 Estrutura da Linguagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469 6.1.1 Literais: Como Gravar Strings e Numerais . . . . . . 4696.1.1.1 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4696.1.1.2 Nmeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471u6.1.1.3 Valores Hexadecimais . . . . . . . . . . . . . . . . 4716.1.1.4 Valores NULL. . . . . . . . . . . . . . . . . . . . . . . . . 471 6.1.2 Nomes de Banco de dados, Tabela, Indice, Coluna eAlias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472 6.1.3 Caso Sensitivo nos Nomes . . . . . . . . . . . . . . . . . . . . . 473 6.1.4 Variveis de Usurio . . . . . . . . . . . . . . . . . . . . . . . . . . 474 aa 6.1.5 Variveis de Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . 475 a 6.1.6 Sintaxe de Comentrios . . . . . . . . . . . . . . . . . . . . . . . 478a 6.1.7 Tratamento de Palavras Reservadas no MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479 6.2 Tipos de Campos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481 6.2.1 Tipos Numricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487e 6.2.2 Tipos de Data e Hora . . . . . . . . . . . . . . . . . . . . . . . . . 4896.2.2.1 Assuntos referentes ao ano 2000 (Y2K) e Tipos de Data . . . . . . . . . . . . . . . . . . . . . . . . . . . 4906.2.2.2 Os Tipos DATETIME, DATE e TIMESTAMP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4916.2.2.3 O Tipo TIME. . . . . . . . . . . . . . . . . . . . . . . . . 4956.2.2.4 O Tipo YEAR. . . . . . . . . . . . . . . . . . . . . . . . . 496 6.2.3 Tipos String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4966.2.3.1 Os Tipos CHAR e VARCHAR . . . . . . . . . . . . . 4976.2.3.2 Os Tipos BLOB e TEXT . . . . . . . . . . . . . . . . 4976.2.3.3 O Tipo ENUM. . . . . . . . . . . . . . . . . . . . . . . . . 4996.2.3.4 O Tipo SET . . . . . . . . . . . . . . . . . . . . . . . . . . 500 6.2.4 Escolhendo o Tipo Correto para uma Coluna . . . 501 6.2.5 Usando Tipos de Colunas de Outros Mecanismos deBanco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 6.2.6 Exigncias de Armazenamento dos Tipos de Colunae. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502 6.3 Funes para Uso em Clusulas SELECT e WHERE . . . . . . . . . 503 coa 6.3.1 Operadores e Funes de Tipos no Especicadosco a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5046.3.1.1 Parenteses . . . . . . . . . . . . . . . . . . . . . . . . . . . 5046.3.1.2 Operadores de Comparao . . . . . . . . . . . 504 ca6.3.1.3 Operadores Logicos . . . . . . . . . . . . . . . . . . 508 13. xii6.3.1.4 Funes de Fluxo de Controle . . . . . . . . . 510co6.3.2 Funes String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511co6.3.2.1 Funes de Comparao de Strings . . . . 519co ca6.3.2.2 Caso Sensitivo . . . . . . . . . . . . . . . . . . . . . . . 5226.3.3 Funes Numricas . . . . . . . . . . . . . . . . . . . . . . . . . . . 522coe6.3.3.1 Operaes Aritimticas . . . . . . . . . . . . . . . 522co e6.3.3.2 Funes Matematicas. . . . . . . . . . . . . . . . . 523co6.3.4 Funes de Data e Hora . . . . . . . . . . . . . . . . . . . . . . . 529co6.3.5 Funes de Converso . . . . . . . . . . . . . . . . . . . . . . . . . 543coa6.3.6 Outras Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 co6.3.6.1 Funes Binrias . . . . . . . . . . . . . . . . . . . . . 545co a6.3.6.2 Funes Diversas . . . . . . . . . . . . . . . . . . . . . 546co6.3.7 Funes e Modicadores para Usar com Clusulascoa GROUP BY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5556.3.7.1 Funes GROUP BY . . . . . . . . . . . . . . . . . . . . 555co6.3.7.2 Modicadores GROUP BY . . . . . . . . . . . . . . 5586.3.7.3 GROUP BY com Campos Escondidos . . . . 5616.4 Manipulao de Dados: SELECT, INSERT, UPDATE e DELETE ca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5616.4.1 Sintaxe SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5626.4.1.1 Sintaxe JOIN . . . . . . . . . . . . . . . . . . . . . . . . 5676.4.1.2 Sintaxe UNION . . . . . . . . . . . . . . . . . . . . . . . 5696.4.2 Sintaxe de Subquery . . . . . . . . . . . . . . . . . . . . . . . . . . 5696.4.2.1 A Subquery como um Operandop Escalar. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5706.4.2.2 Comparaes Usando Subquery . . . . . . . 571 co6.4.2.3 Subqueries with ANY, IN, and SOME . . . . 5716.4.2.4 Subqueries with ALL. . . . . . . . . . . . . . . . . . 5726.4.2.5 Correlated Subqueries . . . . . . . . . . . . . . . . 5726.4.2.6 EXISTS and NOT EXISTS . . . . . . . . . . . . . . 5736.4.2.7 Row Subqueries . . . . . . . . . . . . . . . . . . . . . . 5736.4.2.8 Subqueries in the FROM clause . . . . . . . . . 5746.4.2.9 Subquery Errors . . . . . . . . . . . . . . . . . . . . . 5756.4.2.10 Optimizing Subqueries . . . . . . . . . . . . . . 5766.4.2.11 Rewriting Subqueries for Earlier MySQL Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5776.4.3 Sintaxe INSERT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5786.4.3.1 Sintaxe INSERT ... SELECT . . . . . . . . . . . 5816.4.3.2 Sintaxe INSERT DELAYED . . . . . . . . . . . . . . 5816.4.4 Sintaxe UPDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5836.4.5 Sintaxe DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5846.4.6 Sintaxe TRUNCATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5866.4.7 Sintaxe REPLACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5866.4.8 Sintaxe LOAD DATA INFILE. . . . . . . . . . . . . . . . . . . . . 5876.4.9 Sintaxe HANDLER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5956.4.10 Sintaxe DO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5966.5 Denio de Dados: CREATE, DROP e ALTER . . . . . . . . . . . . . . 596 ca6.5.1 Sintaxe CREATE DATABASE . . . . . . . . . . . . . . . . . . . . . 596 14. xiii6.5.2 Sintaxe DROP DATABASE . . . . . . . . . . . . . . . . . . . . . . . 5966.5.3 Sintaxe CREATE TABLE . . . . . . . . . . . . . . . . . . . . . . . . . 597 6.5.3.1 Alterao de Especicaes de Colunas caco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6066.5.4 Sintaxe ALTER TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . 6076.5.5 Sintaxe RENAME TABLE . . . . . . . . . . . . . . . . . . . . . . . . . 6116.5.6 Sintaxe DROP TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . 6116.5.7 Sintaxe CREATE INDEX . . . . . . . . . . . . . . . . . . . . . . . . . 6126.5.8 Sintaxe DROP INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 6.6Comandos Utilitrios Bsicos do Usurio MySQL . . . . . . . . 613aaa6.6.1 Sintaxe USE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6136.6.2 Sintaxe DESCRIBE (Obtem Informaes Sobreco Colunas) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 6.7Comandos Transacionais e de Lock do MySQL . . . . . . . . . . 6146.7.1 Sintaxe de START TRANSACTION, COMMIT e ROLLBACK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6146.7.2 Instrues que No Podem Ser Desfeitas . . . . . . . . 615 coa6.7.3 Instrues que Fazem um Commit Implicito . . . . 615 co6.7.4 Sintaxe de SAVEPOINT e ROLLBACK TO SAVEPOINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6156.7.5 Sintaxe LOCK TABLES e UNLOCK TABLES . . . . . . . . . 6166.7.6 Sintaxe SET TRANSACTION . . . . . . . . . . . . . . . . . . . . . 618 6.8Pesquisa Full-text no MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . 6186.8.1 Restries Full-text . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 co6.8.2 Ajuste Fino de Pesquisas Full-text no MySQL . . 6236.8.3 TODO de Pesquisas Full-text . . . . . . . . . . . . . . . . . . 624 6.9Cache de Consultas do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . 6246.9.1 Como a Cache de Consultas Opera. . . . . . . . . . . . . 6256.9.2 Congurao da Cache de Consultas . . . . . . . . . . . 626ca6.9.3 Opes da Cache de Consultas na SELECT . . . . . . 627co6.9.4 Estado e Manuteno da Cache de Consultas . . . 627ca7 Tipos de Tabela do MySQL . . . . . . . . . . . . . . 629 7.1 Tabelas MyISAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 7.1.1 Espao Necessrio para Chaves . . . . . . . . . . . . . . . . 632 ca 7.1.2 Formatos de Tabelas MyISAM . . . . . . . . . . . . . . . . . . 6337.1.2.1 Caracteristicas de Tabelas Estticasa (Tamanho Fixo) . . . . . . . . . . . . . . . . . . . . . . . . . 6337.1.2.2 Caracteristicas de Tabelas Dinmicas . . 633a7.1.2.3 Caracteristicas de Tabelas Compactadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634 7.1.3 Problemas com Tabelas MyISAM . . . . . . . . . . . . . . . . 6357.1.3.1 Tabelas MyISAM Corrompidas . . . . . . . . . 6357.1.3.2 O Cliente est usando a tabela ou no a a a fechou de forma apropriada . . . . . . . . . . . . . . . 636 7.2 Tabelas MERGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 7.2.1 Problemas com Tabelas MERGE . . . . . . . . . . . . . . . . . 639 7.3 Tabelas ISAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 15. xiv7.4 Tabelas HEAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6407.5 Tabelas InnoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6427.5.1 Viso Geral de Tabelas InnoDB. . . . . . . . . . . . . . . . 642 a7.5.2 InnoDB no MySQL Verso 3.23 . . . . . . . . . . . . . . . . 642a7.5.3 Opes de Inicializao do InnoDB . . . . . . . . . . . . . 643 coca7.5.4 Criando Tablespaces no InnoDB . . . . . . . . . . . . . . . 6507.5.4.1 Se Alguma Coisa Der Errado Na CriaocaDo Banco de Dados . . . . . . . . . . . . . . . . . . . . . . 6517.5.5 Criando Tabelas InnoDB . . . . . . . . . . . . . . . . . . . . . . 6517.5.5.1 Convertendo Tabelas MyISAM paraInnoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6527.5.5.2 Restries FOREIGN KEY . . . . . . . . . . . . . . . 652 co7.5.6 Adicionando e Removendo Arquivos de Dados e Log do InnoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6557.5.7 Fazendo Backup e Recuperando um Banco de Dados InnoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6557.5.7.1 Forando a recuperao . . . . . . . . . . . . . . 657cca7.5.7.2 Ponto de Vericao . . . . . . . . . . . . . . . . . 658 ca7.5.8 Movendo um Banco de Dados InnoDB para Outra Mquina . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 658 a7.5.9 Modelo Transacional do InnoDB . . . . . . . . . . . . . . . 6597.5.9.1 InnoDB e SET ... TRANSACTION ISOLATIONLEVEL ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6597.5.9.2 Leitura Consistente sem Lock . . . . . . . . . 6617.5.9.3 Lock de Leitura SELECT ... FOR UPDATE eSELECT ... LOCK IN SHARE MODE . . . . . . . . . . 6617.5.9.4 Lock da Chave Seguinte: EvitandoProblemas com Fantasmas . . . . . . . . . . . . . . . . 6627.5.9.5 Locks Denidos por Diferentes Instrues coSQL no InnoDB . . . . . . . . . . . . . . . . . . . . . . . . . . 6627.5.9.6 Deteco de Deadlock e Rollback . . . . . . 663ca7.5.9.7 Um Exemplo de Como a LeituraConsistente Funciona no InnoDB . . . . . . . . . . 6647.5.9.8 Como lidar com deadlocks? . . . . . . . . . . . 6657.5.10 Dicas de Ajuste de Desempenho . . . . . . . . . . . . . . 6667.5.10.1 SHOW INNODB STATUS e o Monitor InnoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6677.5.11 Implementao de Multi-versioning . . . . . . . . . . . 669ca7.5.12 Estrutura de Tabelas e Indices . . . . . . . . . . . . . . . . 6707.5.12.1 Estrutura F isica do Indice . . . . . . . . . . . 6717.5.12.2 Buer de Insero. . . . . . . . . . . . . . . . . . . 671 ca7.5.12.3 Indices Hash Adaptativos . . . . . . . . . . . . 6727.5.12.4 Estrutura dos Registros F isicos . . . . . . 6727.5.12.5 Como Funciona uma ColunaAUTO_INCREMENT no InnoDB . . . . . . . . . . . . . . 6727.5.13 Gerenciamento do Espao de Arquivos e E/S dec Disco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6737.5.13.1 E/S de Disco . . . . . . . . . . . . . . . . . . . . . . . 673 16. xv 7.5.13.2 Gerenciamento do Espao de Arquivo c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674 7.5.13.3 Desfragmentando uma Tabela . . . . . . . . 6757.5.14 Tratando Erros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6757.5.15 Restries em Tabelas InnoDB . . . . . . . . . . . . . . . 675co7.5.16 Histrico de Alteraes do InnoDB . . . . . . . . . . . . 677o co 7.5.16.1 MySQL/InnoDB-4.1.1, December 4, 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 7.5.16.2 MySQL/InnoDB-4.0.16, October 22, 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 7.5.16.3 MySQL/InnoDB-3.23.58, September 15,2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 7.5.16.4 MySQL/InnoDB-4.0.15, September 10,2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 7.5.16.5 MySQL/InnoDB-4.0.14, Junho de 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 7.5.16.6 MySQL/InnoDB-3.23.57, June 20, 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679 7.5.16.7 MySQL/InnoDB-4.0.13, 20 de Maio de2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679 7.5.16.8 MySQL/InnoDB-4.1.0, 03 de Abril de2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680 7.5.16.9 MySQL/InnoDB-3.23.56, 17 de Maro dec2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680 7.5.16.10 MySQL/InnoDB-4.0.12, 18 Maro dec2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 7.5.16.11 MySQL/InnoDB-4.0.11, 25 de Fevereirode 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 7.5.16.12 MySQL/InnoDB-4.0.10, 04 de Fevereirode 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 7.5.16.13 MySQL/InnoDB-3.23.55, 24 de Janeirode 2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 7.5.16.14 MySQL/InnoDB-4.0.9, 14 de Janeiro de2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682 7.5.16.15 MySQL/InnoDB-4.0.8, 07 de Janeiro de2003 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 7.5.16.16 MySQL/InnoDB-4.0.7, 26 de Dezembrode 2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 7.5.16.17 MySQL/InnoDB-4.0.6, 19 de Dezembrode 2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 7.5.16.18 MySQL/InnoDB-3.23.54, 12 deDezembro de 2002 . . . . . . . . . . . . . . . . . . . . . . . 684 7.5.16.19 MySQL/InnoDB-4.0.5, 18 de Novembrode 2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684 7.5.16.20 MySQL/InnoDB-3.23.53, 09 de Outubrode 2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 7.5.16.21 MySQL/InnoDB-4.0.4, 02 de Outubro de2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686 17. xvi 7.5.16.22 MySQL/InnoDB-4.0.3, 28 de Agosto de2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 7.5.16.23 MySQL/InnoDB-3.23.52, 16 de Agostode 2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 7.5.16.24 MySQL/InnoDB-4.0.2, 10 de Julho de2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 7.5.16.25 MySQL/InnoDB-3.23.51, 12 de Junho de2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 7.5.16.26 MySQL/InnoDB-3.23.50, 23 de Abril de2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 7.5.16.27 MySQL/InnoDB-3.23.49, 17 de Fevereirode 2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 7.5.16.28 MySQL/InnoDB-3.23.48, 09 de Fevereirode 2002 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 7.5.16.29 MySQL/InnoDB-3.23.47, 28 deDezembro de 2001 . . . . . . . . . . . . . . . . . . . . . . . 691 7.5.16.30 MySQL/InnoDB-4.0.1, 23 de Dezembrode 2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692 7.5.16.31 MySQL/InnoDB-3.23.46, 30 deNovembro de 2001 . . . . . . . . . . . . . . . . . . . . . . . 692 7.5.16.32 MySQL/InnoDB-3.23.45, 23 deNovembro de 2001 . . . . . . . . . . . . . . . . . . . . . . . 692 7.5.16.33 MySQL/InnoDB-3.23.44, 02 deNovembro de 2001 . . . . . . . . . . . . . . . . . . . . . . . 693 7.5.16.34 MySQL/InnoDB-3.23.43, 04 de Outubrode 2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 7.5.16.35 MySQL/InnoDB-3.23.42, 09 de Setembrode 2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694 7.5.16.36 MySQL/InnoDB-3.23.41, 13 de Agostode 2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694 7.5.16.37 MySQL/InnoDB-3.23.40, 16 de Julho de2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694 7.5.16.38 MySQL/InnoDB-3.23.39, 13 de Junho de2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694 7.5.16.39 MySQL/InnoDB-3.23.38, 12 de Maio de2001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6947.5.17 Informaes de Contato do InnoDB . . . . . . . . . . . . 694 co7.6 Tabelas BDB ou BerkeleyDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6957.6.1 Viso Geral de Tabelas BDB. . . . . . . . . . . . . . . . . . . . 695a7.6.2 Instalando BDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6957.6.3 Opes de Inicializao do BDB . . . . . . . . . . . . . . . . . 696co ca7.6.4 Caracter isticas de Tabelas BDB: . . . . . . . . . . . . . . . . 6977.6.5 Itens a serem corrigidos no BDB num futuro prximo: o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6987.6.6 Sistemas operacionais suportados pelo BDB . . . . . . 6987.6.7 Restries em Tabelas BDB . . . . . . . . . . . . . . . . . . . . 699 co7.6.8 Erros Que Podem Ocorrer Usando Tabelas BDB . . 699 18. xvii8 Introduo ao MaxDB . . . . . . . . . . . . . . . . . . . 701 ca8.1 Historia do MaxDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7018.2 Licenciamento e Suporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7018.3 Conceitos Bsicos do MaxDB . . . . . . . . . . . . . . . . . . . . . . . . . .a 7018.4 Diferenas de Recursos entre o MaxDB e o MySQL . . . . . . c7018.5 Interoperability Features between MaxDB and MySQL . . . 7028.6 MaxDB-related Links. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7028.7 Reserved Words in MaxDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7038.8 Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .co7058.9 Tipos de Colunas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7059 Conjunto de Caracteres Nacionais e Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7079.1 Conjuntos de Caracteres e Collations em Geral . . . . . . . . . . 7079.2 Conjunto de Caracteres e Collations no MySQL . . . . . . . . . 7089.3 Determinando o Conjunto de Caracteres e Collation Padreso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7089.3.1 Conjunto de Caracteres e Collations do Servidor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7089.3.2 Conjunto de Caracteres e Collation de Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7099.3.3 O Conjunto de Caracteres e Collations de Tabela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7109.3.4 Conjunto de Caracteres e Collation de Colunas . . 7109.3.5 Exemplos de Atribuies de Conjuntos de Caracteres co e Collation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7119.3.6 Conjunto de Caracteres e Collation de Conexoa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7129.3.7 Conjunto de Caracteres e Collation de Caracter de String Literal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7139.3.8 Clusula COLLATE em Vrias Partes de uma Consulta a a SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7149.3.9 Precedncia da Clusula COLLATE . . . . . . . . . . . . . . 714ea9.3.10 Operador BINARY . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7159.3.11 Alguns Casos Especiais Onde a Determinao daca Collation e Trabalhosa . . . . . . . . . . . . . . . . . . . . . . . . . . 7159.3.12 Collations Devem Ser para o Conjunto de Caracteres Certo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7169.3.13 Um exemplo do Efeito da Collation . . . . . . . . . . . 7169.4 Operaes Afetadas pelo Suporte a Conjunto de Caracteres co. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7169.4.1 Strings de Resultados . . . . . . . . . . . . . . . . . . . . . . . . . 7179.4.2 CONVERT() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7179.4.3 CAST() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7179.4.4 SHOW CHARACTER SET . . . . . . . . . . . . . . . . . . . . . . . . . . 7189.4.5 SHOW COLLATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7189.4.6 SHOW CREATE DATABASE . . . . . . . . . . . . . . . . . . . . . . . . 7199.4.7 SHOW FULL COLUMNS . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 19. xviii 9.5Suporte Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 9.6UTF8 para Metdados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720 9.7Compatibilidade com Outros SGBDs . . . . . . . . . . . . . . . . . . . 721 9.8Novo Formato do Arquivo de Congurao do Conjunto deca Caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 9.9 Conjunto de Caracteres Nacional . . . . . . . . . . . . . . . . . . . . . . . 721 9.10 Atualizando para o MySQL 4.0. . . . . . . . . . . . . . . . . . . . . . . . 7229.10.1 Conjunto de Caracteres do MySQL e o Par/Conjunto de Caracter/Collation Correspondente do MySQL 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723 9.11 Os conjuntos de Caracteres e Collations que o MySQL Suporta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7239.11.1 O Conjunto de Caracteres Unicode. . . . . . . . . . . . 7259.11.2 Conjunto de Caracteres para Plataformas Especicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7259.11.3 Conjunto de Caracteres do Sul da Europa e Oriente Mdio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725e9.11.4 Os Conjuntos de Caracteres Asiticos . . . . . . . . . 725 a9.11.5 Os Conjuntos de Caracteres Blticos . . . . . . . . . . 726a9.11.6 Os Conjuntos de Caracteres Cir ilicos . . . . . . . . . . 7269.11.7 O Conjunto de Caracteres da Europa Central . . 7279.11.8 Os Conjuntos de Caracteres da Europa Ocidental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72810 Extenses Espacias em MySQL . . . . . . . . . . 730 o 10.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ca730 10.2 O Modelo Geomtrico OpenGIS . . . . . . . . . . . . . . . . . . . . . . .a 730 10.2.1 A Hierarquia da Classe Geometry . . . . . . . . . . . . . 731 10.2.2 Classe Geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 732 10.2.3 Classe Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .733 10.2.4 Classe Curve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .733 10.2.5 Classe LineString . . . . . . . . . . . . . . . . . . . . . . . . . . 734 10.2.6 Classe Surface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .734 10.2.7 Classe Polygon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .734 10.2.8 Classe GeometryCollection . . . . . . . . . . . . . . . . . 735 10.2.9 Classe MultiPoint . . . . . . . . . . . . . . . . . . . . . . . . . . 735 10.2.10 Classe MultiCurve . . . . . . . . . . . . . . . . . . . . . . . . .735 10.2.11 Classe MultiLineString (Multi Linhas) . . . . .736 10.2.12 Classe MultiSurface (Multi Superficies) . . . . . 736 10.2.13 Classe MultiPolygon (Multi Poligonos) . . . . . . 736 10.3 Formatos de Dados Espaciais Suportados . . . . . . . . . . . . . .737 10.3.1 Formato Well-Known Text (WKT). . . . . . . . . . . .737 10.3.2 Formato Well-Known Binary (WKB). . . . . . . . . .738 10.4 Criando um Banco de Dados MySQL Habilitado Espacialmente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .738 10.4.1 Tipos de Dados Espaciais do MySQL . . . . . . . . . 739 10.4.2 Criando Valores Espaciais . . . . . . . . . . . . . . . . . . . . 739 20. xix 10.4.2.1 Criando Valores Geometry UsandoFunes WKT . . . . . . . . . . . . . . . . . . . . . . . . . . . 739 co 10.4.2.2 Criando Valores Geometry UsandoFunes WKB . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 co 10.4.2.3 Criando uma Valor de Geometira UsandoFunes Espec co icas do MySQL . . . . . . . . . . . 74110.4.3 Criando Colunas Espaciais . . . . . . . . . . . . . . . . . . . 74210.4.4 Entrando com Dados em Colunas Espaciais . . . . 74310.4.5 Buscando Dados Espaciais . . . . . . . . . . . . . . . . . . . 744 10.4.5.1 Buscando Dados Espaciais em umFormato Interno . . . . . . . . . . . . . . . . . . . . . . . . . 744 10.4.5.2 Buscando Dados Espaciais no FormatoWKT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744 10.4.5.3 Buscando Dados Espaciais no FormatoWKB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74410.5 Analisando Informao Espacial . . . . . . . . . . . . . . . . . . . . . . . 744ca10.5.1 Funes Para Converter Geometrias Entre Formatos co Diferentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74510.5.2 Funes de Anlise das Propriedades de Geometry co a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 10.5.2.1 Funes de Anlise das Propriedades de coaGeometry em Geral . . . . . . . . . . . . . . . . . . . . . . 746 10.5.2.2 Funes de Anlise das Propriedades de coaPoint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747 10.5.2.3 Funes de Anlise das Propriedades de coaLineString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748 10.5.2.4 Funes de Anlise das Propriedades de coaMultiLineString . . . . . . . . . . . . . . . . . . . . . . . . 749 10.5.2.5 Funes de Anlise das Propriedades de coaPolygon. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750 10.5.2.6 Funes de Anlise das Propriedades de coaMultiPolygon . . . . . . . . . . . . . . . . . . . . . . . . . . . 751 10.5.2.7 Funes de Anlise das Propriedades de coaGeometryCollection . . . . . . . . . . . . . . . . . . . . 75110.5.3 Funes Que Criam Novas Geometrias de Outras co Existentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752 10.5.3.1 Funes de Geometria Que Produzem coNovas Geometrias . . . . . . . . . . . . . . . . . . . . . . . . 752 10.5.3.2 Operadores Espaciais . . . . . . . . . . . . . . . . 75210.5.4 Funes Para Testar Relaes Espaciais Entre co co Objetos Geomtricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 753e10.5.5 Relaes de Retngulo de Limite M co a inimo (Minimal Bounding Rectangles - MBR) em Geometrias . . . . . 75310.5.6 Funes que Testam Relacionamentos Espaciais co Entre Geometrias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75410.6 Otimizando Anlises Espaciais . . . . . . . . . . . . . . . . . . . . . . . . 755a10.6.1 Criando Indices Espaciais . . . . . . . . . . . . . . . . . . . . 755 10.6.2 Usando Indice Espacial . . . . . . . . . . . . . . . . . . . . . . 756 21. xx 10.7 Compatibilidade e Conformidade com o MySQL . . . . . . . . 758 10.7.1 Recursos GIS Que Ainda No Esto Implementadosa a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75811 Stored Procedures e Funes . . . . . . . . . . . . 760co 11.1 Sintaxe de Stored Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . 760 11.1.1 Maintaining Stored Procedures . . . . . . . . . . . . . . . 76111.1.1.1 CREATE PROCEDURE and CREATE FUNCTION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76111.1.1.2 ALTER PROCEDURE and ALTER FUNCTION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76311.1.1.3 DROP PROCEDURE and DROP FUNCTION . . 76311.1.1.4 SHOW CREATE PROCEDURE and SHOW CREATE FUNCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763 11.1.2 SHOW PROCEDURE STATUS and SHOW FUNCTIONSTATUS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764 11.1.3 CALL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764 11.1.4 BEGIN ... END Compound Statement . . . . . . . . . 764 11.1.5 DECLARE Statement . . . . . . . . . . . . . . . . . . . . . . . . . . 764 11.1.6 Variables in Stored Procedures . . . . . . . . . . . . . . . 76411.1.6.1 DECLARE Local Variables . . . . . . . . . . . . . 76511.1.6.2 Variable SET Statement. . . . . . . . . . . . . . 76511.1.6.3 SELECT ... INTO Statement . . . . . . . . . 765 11.1.7 Conditions and Handlers . . . . . . . . . . . . . . . . . . . . . 76511.1.7.1 DECLARE Conditions . . . . . . . . . . . . . . . . . 76511.1.7.2 DECLARE Handlers . . . . . . . . . . . . . . . . . . . 765 11.1.8 Cursors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76711.1.8.1 Declaring Cursors . . . . . . . . . . . . . . . . . . . 76811.1.8.2 Cursor OPEN Statement . . . . . . . . . . . . . . 76811.1.8.3 Cursor FETCH Statement . . . . . . . . . . . . . 76811.1.8.4 Cursor CLOSE Statement . . . . . . . . . . . . . 768 11.1.9 Flow Control Constructs . . . . . . . . . . . . . . . . . . . . . 76811.1.9.1 IF Statement . . . . . . . . . . . . . . . . . . . . . . . 76811.1.9.2 CASE Statement . . . . . . . . . . . . . . . . . . . . . 76811.1.9.3 LOOP Statement . . . . . . . . . . . . . . . . . . . . . 76911.1.9.4 LEAVE Statement . . . . . . . . . . . . . . . . . . . . 76911.1.9.5 ITERATE Statement . . . . . . . . . . . . . . . . . 76911.1.9.6 REPEAT Statement. . . . . . . . . . . . . . . . . . . 77011.1.9.7 WHILE Statement . . . . . . . . . . . . . . . . . . . . 770 22. xxi12 Ferramentas de Clientes e APIs do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772 12.1 API C do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772 12.1.1 Tipos de Dados da API C . . . . . . . . . . . . . . . . . . . .772 12.1.2 Viso Geral das Funo da API C . . . . . . . . . . . .a ca 775 12.1.3 Descrio das Funes da API C . . . . . . . . . . . . . . caco77912.1.3.1 mysql_affected_rows() . . . . . . . . . . . . 78012.1.3.2 mysql_change_user() . . . . . . . . . . . . . . 78112.1.3.3 mysql_character_set_name(). . . . . . . 78212.1.3.4 mysql_close() . . . . . . . . . . . . . . . . . . . . . 78212.1.3.5 mysql_connect() . . . . . . . . . . . . . . . . . . . 78312.1.3.6 mysql_create_db() . . . . . . . . . . . . . . . . 78312.1.3.7 mysql_data_seek() . . . . . . . . . . . . . . . . 78412.1.3.8 mysql_debug() . . . . . . . . . . . . . . . . . . . . . 78512.1.3.9 mysql_drop_db() . . . . . . . . . . . . . . . . . . . 78512.1.3.10 mysql_dump_debug_info() . . . . . . . . .78612.1.3.11 mysql_eof() . . . . . . . . . . . . . . . . . . . . . .78612.1.3.12 mysql_errno() . . . . . . . . . . . . . . . . . . . .78812.1.3.13 mysql_error() . . . . . . . . . . . . . . . . . . . .78812.1.3.14 mysql_escape_string() . . . . . . . . . . .78912.1.3.15 mysql_fetch_field() . . . . . . . . . . . . .78912.1.3.16 mysql_fetch_fields() . . . . . . . . . . . . 79012.1.3.17 mysql_fetch_field_direct() . . . . . 79112.1.3.18 mysql_fetch_lengths() . . . . . . . . . . .79212.1.3.19 mysql_fetch_row() . . . . . . . . . . . . . . .79212.1.3.20 mysql_field_count() . . . . . . . . . . . . .79412.1.3.21 mysql_field_seek() . . . . . . . . . . . . . . 79512.1.3.22 mysql_field_tell() . . . . . . . . . . . . . . 79512.1.3.23 mysql_free_result() . . . . . . . . . . . . .79612.1.3.24 mysql_get_client_info() . . . . . . . . .79612.1.3.25 mysql_get_host_info() . . . . . . . . . . .79612.1.3.26 mysql_get_proto_info() . . . . . . . . . . 79712.1.3.27 mysql_get_server_info() . . . . . . . . .79712.1.3.28 mysql_get_server_version() . . . . . 79812.1.3.29 mysql_info() . . . . . . . . . . . . . . . . . . . . . 79812.1.3.30 mysql_init() . . . . . . . . . . . . . . . . . . . . . 79912.1.3.31 mysql_insert_id() . . . . . . . . . . . . . . .79912.1.3.32 mysql_kill() . . . . . . . . . . . . . . . . . . . . . 80012.1.3.33 mysql_list_dbs(). . . . . . . . . . . . . . . . .80112.1.3.34 mysql_list_fields() . . . . . . . . . . . . .80112.1.3.35 mysql_list_processes() . . . . . . . . . . 80212.1.3.36 mysql_list_tables() . . . . . . . . . . . . .80212.1.3.37 mysql_num_fields() . . . . . . . . . . . . . . 80312.1.3.38 mysql_num_rows(). . . . . . . . . . . . . . . . .80512.1.3.39 mysql_options() . . . . . . . . . . . . . . . . . .80512.1.3.40 mysql_ping() . . . . . . . . . . . . . . . . . . . . . 80712.1.3.41 mysql_query() . . . . . . . . . . . . . . . . . . . .80812.1.3.42 mysql_real_connect() . . . . . . . . . . . . 809 23. xxii 12.1.3.43 mysql_real_escape_string() . . . . . 811 12.1.3.44 mysql_real_query() . . . . . . . . . . . . . . 813 12.1.3.45 mysql_reload() . . . . . . . . . . . . . . . . . . . 813 12.1.3.46 mysql_row_seek(). . . . . . . . . . . . . . . . . 814 12.1.3.47 mysql_row_tell(). . . . . . . . . . . . . . . . . 814 12.1.3.48 mysql_select_db() . . . . . . . . . . . . . . . 815 12.1.3.49 mysql_set_server_option(). . . . . . . 815 12.1.3.50 mysql_shutdown(). . . . . . . . . . . . . . . . . 816 12.1.3.51 mysql_sqlstate(). . . . . . . . . . . . . . . . . 817 12.1.3.52 mysql_ssl_set() . . . . . . . . . . . . . . . . . . 817 12.1.3.53 mysql_stat() . . . . . . . . . . . . . . . . . . . . . 818 12.1.3.54 mysql_store_result() . . . . . . . . . . . . 818 12.1.3.55 mysql_thread_id() . . . . . . . . . . . . . . . 820 12.1.3.56 mysql_use_result() . . . . . . . . . . . . . . 820 12.1.3.57 mysql_commit() . . . . . . . . . . . . . . . . . . . 821 12.1.3.58 mysql_rollback(). . . . . . . . . . . . . . . . . 822 12.1.3.59 mysql_autocommit() . . . . . . . . . . . . . . 822 12.1.3.60 mysql_more_results() . . . . . . . . . . . . 822 12.1.3.61 mysql_next_result() . . . . . . . . . . . . . 82312.1.4 Instrues Preparadas da API C . . . . . . . . . . . . . . 824co12.1.5 Tipos de Dados de Instruoes Preparadas da API C c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82412.1.6 Viso Geral das Funes de Instrues Preparadasa coco da API C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82712.1.7 Descrio das Funes de Instruo Preparada dacacoca API C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829 12.1.7.1 mysql_prepare() . . . . . . . . . . . . . . . . . . . 829 12.1.7.2 mysql_param_count() . . . . . . . . . . . . . . 831 12.1.7.3 mysql_get_metadata() . . . . . . . . . . . . . 831 12.1.7.4 mysql_bind_param() . . . . . . . . . . . . . . . 832 12.1.7.5 mysql_execute() . . . . . . . . . . . . . . . . . . . 833 12.1.7.6 mysql_stmt_affected_rows(). . . . . . . 837 12.1.7.7 mysql_bind_result() . . . . . . . . . . . . . . 838 12.1.7.8 mysql_stmt_store_result() . . . . . . . . 839 12.1.7.9 mysql_stmt_data_seek() . . . . . . . . . . . 840 12.1.7.10 mysql_stmt_row_seek() . . . . . . . . . . . 840 12.1.7.11 mysql_stmt_row_tell() . . . . . . . . . . . 841 12.1.7.12 mysql_stmt_num_rows() . . . . . . . . . . . 841 12.1.7.13 mysql_fetch() . . . . . . . . . . . . . . . . . . . . 842 12.1.7.14 mysql_send_long_data() . . . . . . . . . . 847 12.1.7.15 mysql_stmt_close() . . . . . . . . . . . . . . 849 12.1.7.16 mysql_stmt_errno() . . . . . . . . . . . . . . 850 12.1.7.17 mysql_stmt_error() . . . . . . . . . . . . . . 850 12.1.7.18 mysql_stmt_sqlstate() . . . . . . . . . . . 85112.1.8 Tratando a Execuo de Mltiplas Consultas naca u API C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85112.1.9 Manipulando Valores de Data e Hora na API C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852 24. xxiii12.1.10 Descrio das Funes de Threads da API C . . 854caco 12.1.10.1 my_init() . . . . . . . . . . . . . . . . . . . . . . . . 854 12.1.10.2 mysql_thread_init() . . . . . . . . . . . . . 854 12.1.10.3 mysql_thread_end() . . . . . . . . . . . . . . 854 12.1.10.4 mysql_thread_safe() . . . . . . . . . . . . . 85512.1.11 Descrio das Funes do Servidor Embutido dacaco API C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855 12.1.11.1 mysql_server_init() . . . . . . . . . . . . . 855 12.1.11.2 mysql_server_end() . . . . . . . . . . . . . . 85612.1.12 Dvidas e problemas comuns ao utilzar a API Cu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857 12.1.12.1 Porque Algumas Vezesmysql_store_result() Retorna NULL Apsomysql_query() Returnar com Sucesso? . . . . 857 12.1.12.2 Que Resultados Posso Onbetr de umaConsulta? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857 12.1.12.3 Como Posso Obter a ID Unica para a Ultima Linha Inserida? . . . . . . . . . . . . . . . . . . . 857 12.1.12.4 Problemas com Ligao na API C . . . 858ca12.1.13 Construindo Programas Clientes . . . . . . . . . . . . . 85812.1.14 Como Fazer um Cliente em Threads . . . . . . . . . 85912.1.15 libmysqld, a Biblioteca do Servidor Embutido MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860 12.1.15.1 Viso Geral da Biblioteca do ServidoraMySQL Embutido . . . . . . . . . . . . . . . . . . . . . . . 860 12.1.15.2 Compilando Programas com libmysqld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 861 12.1.15.3 Restries no Uso de um Servidor coMySQL Embutido . . . . . . . . . . . . . . . . . . . . . . . 861 12.1.15.4 Usando Arquivo de Opes com o coServidor Embutido . . . . . . . . . . . . . . . . . . . . . . . 861 12.1.15.5 Itens a Fazer no Servidor Embutido(TODO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862 12.1.15.6 Um Exemplo Simples de ServidorEmbutido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862 12.1.15.7 Licensiando o Servidor Embutido . . . 86612.2 Suporte ODBC ao MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86612.2.1 Como Instalar o MyODBC . . . . . . . . . . . . . . . . . . . 86612.2.2 Como Preencher os Vrios Campos no Programa de a Administrao do ODBC . . . . . . . . . . . . . . . . . . . . . . . . 867 ca12.2.3 Parmetros de Conexo do MyODBC . . . . . . . . . 868 aa12.2.4 Como Relatar Problemas com o MyODBC . . . . 86912.2.5 Programas que Funcionam com MyODBC . . . . . 87012.2.6 Como Obter o Valor de uma Coluna AUTO_INCREMENT no ODBC . . . . . . . . . . . . . . . . . . . . . . 87412.2.7 Relatando Problemas com MyODBC . . . . . . . . . . 87512.3 Conectividade Java (JDBC) ao MySQL . . . . . . . . . . . . . . . . 87612.4 API PHP do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876 25. xxiv 12.4.1 Problemas Comuns com MySQL e PHP . . . . . . . 876 12.5 API Perl do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .876 12.5.1 DBI com DBD::mysql . . . . . . . . . . . . . . . . . . . . . . . . 877 12.5.2 A interface DBI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .877 12.5.3 Mais Informaes DBI/DBD . . . . . . . . . . . . . . . . . . . co883 12.6 API C++ do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883 12.6.1 Borland C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .883 12.7 API Python do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .884 12.8 API Tcl do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884 12.9 Eiel Wrapper do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88413 Tratamento de Erros no MySQL . . . . . . . . . 885 13.1 Erros Retornados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88514 Estendendo o MySQL . . . . . . . . . . . . . . . . . . . 892 14.1 MySQL Internals. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892 14.1.1 Threads MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 892 14.1.2 Pacotes de Teste do MySQL . . . . . . . . . . . . . . . . . . 89214.1.2.1 Executando o Pacote de Testes do MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89314.1.2.2 Extendendo o Pacote de Teste do MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89314.1.2.3 Relatando Bugs no Pacote de Teste do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894 14.2 Adicionando Novas Funes ao MySQL . . . . . . . . . . . . . . . . 895co 14.2.1 Sintaxe CREATE FUNCTION/DROP FUNCTION . . . . . 896 14.2.2 Adicionando Novas Funes Denidas Por Usurio co a. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89614.2.2.1 Sequncia de Chamadas UDF para e Funes Simples . . . . . . . . . . . . . . . . . . . . . . . . . 898co14.2.2.2 Sequncia de Chamadas UDF para e Funes Agregadas . . . . . . . . . . . . . . . . . . . . . . . 899co14.2.2.3 Processando Argumentos . . . . . . . . . . . . 90014.2.2.4 Valor de Retorno e Tartamento de Erros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90214.2.2.5 Compilando e Instalando Funes co Denidas Por Usurio . . . . . . . . . . . . . . . . . . . . 902a 14.2.3 Adicionando uma Nova Funo Nativa . . . . . . . . 904 ca 14.3 Adicionado Novos Procedimentos ao MySQL . . . . . . . . . . . 905 14.3.1 Anlise de Procedimento . . . . . . . . . . . . . . . . . . . . . 905 a 14.3.2 Escrevendo um Procedimento. . . . . . . . . . . . . . . . . 906 26. xxvApndice A Problemas e Erros Comuns . . . . . 907eA.1 Como Determinar o Que Est Causando Problemas . . . . . 907 aA.2 Erros Comuns Usando o MySQL . . . . . . . . . . . . . . . . . . . . . . . 908 A.2.1 Erro: Access Denied . . . . . . . . . . . . . . . . . . . . . . . . . 908 A.2.2 Erro: MySQL server has gone away. . . . . . . . . . . . 908 A.2.3 Erro: Cant connect to [local] MySQL server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 909 A.2.4 Erro: Client does not support authenticationprotocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911 A.2.5 Erro: Host ... is blocked . . . . . . . . . . . . . . . . . 912 A.2.6 Erro: Too many connections . . . . . . . . . . . . . . . . . 912 A.2.7 Erro: Some non-transactional changed tablescouldnt be rolled back . . . . . . . . . . . . . . . . . . . . . . . 912 A.2.8 Erro: Out of memory . . . . . . . . . . . . . . . . . . . . . . . . . 913 A.2.9 Erro: Packet too large . . . . . . . . . . . . . . . . . . . . . . 913 A.2.10 Erros de Comunicao / Comunicao Abortada ca ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914 A.2.11 Erro: The table is full . . . . . . . . . . . . . . . . . . . . 915 A.2.12 Erro: Cant create/write to file . . . . . . . . . . 915 A.2.13 Erro no Cliente: Commands out of sync . . . . . . . 916 A.2.14 Erro: Ignoring user . . . . . . . . . . . . . . . . . . . . . . . . 916 A.2.15 Erro: Table xxx doesnt exist . . . . . . . . . . . 916 A.2.16 Erro: Cant initialize character set xxx . . 917 A.2.17 Arquivo No Encontrado . . . . . . . . . . . . . . . . . . . . 917 aA.3 Assuntos Relacionados a Instalao . . . . . . . . . . . . . . . . . . . . 918ca A.3.1 Problemas de Ligao com a Biblioteca do ClientecaMySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918 A.3.2 Como Executar o MySQL Como Um UsurioaNormal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919 A.3.3 Problemas com Permisses de Arquivos . . . . . . . . 920 oA.4 Assuntos Relacionados a Administrao . . . . . . . . . . . . . . . . 920ca A.4.1 O Que Fazer Se o MySQL Continua Falhando . . 921 A.4.2 Como Recuperar uma Senha de Root Esquecida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923 A.4.3 Como o MySQL Trata de Discos Sem Espao . . 924 c A.4.4 Onde o MySQL Armazena Arquivos Temporrios a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924 A.4.5 Como Proteger ou AlterarHow to Protect or Changethe MySQL Socket File /tmp/mysql.sock . . . . . . . 925 A.4.6 Problemas Com Fuso Horrio . . . . . . . . . . . . . . . . . 926 aA.5 Assuntos Relacionados a Consultas. . . . . . . . . . . . . . . . . . . . . 926 A.5.1 Caso-Sensitivito em Pesquisas . . . . . . . . . . . . . . . . . 926 A.5.2 Problemas Usando Colunas DATE . . . . . . . . . . . . . . 926 A.5.3 Problemas com Valores NULL . . . . . . . . . . . . . . . . . . 928 A.5.4 Problemas com alias . . . . . . . . . . . . . . . . . . . . . . . . 929 A.5.5 Deletando Linhas de Tabelas Relacionadas . . . . . 929 A.5.6 Resolvendo Problemas Com Registros No aEncontrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930 27. xxvi A.5.7 Problemas com Comparao de Ponto Flutuante ca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 930A.6 Assuntos Relacionados ao Otimizador . . . . . . . . . . . . . . . . . . 932 A.6.1 Camo evitar o varredura da tabela,,,. . . . . . . . . . . 933A.7 Assuntos Relacionados a Denies de Tabelas . . . . . . . . . . 933 co A.7.1 Problemas com ALTER TABLE. . . . . . . . . . . . . . . . . . 933 A.7.2 Como Alterar a Ordem das Colunas em Uma Tabela. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934 A.7.3 Problemas com TEMPORARY TABLE . . . . . . . . 934Apndice B Colaboradores do MySQL . . . . . . 936eB.1Desenvolvedores do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 936B.2Coolaboradores do MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . .939B.3Responsveis pela Documentao e Traduo . . . . . . . . . . . aca ca 943B.4Bibliotecas usadas e incluidas com o MySQL . . . . . . . . . . . . 944B.5Pacotes que suportam o MySQL . . . . . . . . . . . . . . . . . . . . . . . 945B.6Ferramentas que so usadas para criar o MySQL . . . . . . . . a946B.7Responsveis pelo Suporte do MySQL . . . . . . . . . . . . . . . . . . a946Apndice C Histrico de Alteraoes do MySQLeoc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948C.1 Alteraes na distribuio 5.0.0 (Development) . . . . . . . . . . 948cocaC.2 Alteraes na distribuio 4.1.x (Alpha) . . . . . . . . . . . . . . . . 948coca C.2.1 Alteraes na distribuio 4.1.2 (not released yet) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 949 C.2.2 Alteraes na distribuio 4.1.1 (01 de Dez de 2003) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 950 C.2.3 Alteraes na distribuio 4.1.0 (03 Apr 2003: cocaAlpha) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954C.3 Alteraes na distribuio 4.0.x (Production) . . . . . . . . . . . 956coca C.3.1 Alteraes na distribuio 4.0.17 (not released yet) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957 C.3.2 Alteraes na distribuio 4.0.16 (17 Out 2003) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959 C.3.3 Alteraes na distribuio 4.0.15 (03 Sep 2003) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961 C.3.4 Alteraes na distribuio 4.0.14 (18 Jul 2003) . . 965 coca C.3.5 Alteraes na distribuio 4.0.13 (16 May 2003) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969 C.3.6 Alteraes na distribuio 4.0.12 (15 Mar 2003: cocaProduction) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 972 C.3.7 Alteraes na distribuio 4.0.11 (20 Feb 2003) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 C.3.8 Alteraes na distribuio 4.0.10 (29 Jan 2003) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975 C.3.9 Alteraes na distribuio 4.0.9 (09 Jan 2003) . . 976 coca 28. xxviiC.3.10 Alteraes na distribuio 4.0.8 (07 Jan 2003)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977C.3.11 Alteraes na distribuio 4.0.7 (20 Dec 2002)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977C.3.12 Alteraes na distribuio 4.0.6 (14 Dec 2002:coca Gamma) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978C.3.13 Alteraes na distribuio 4.0.5 (13 Nov 2002)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979C.3.14 Alteraes na distribuio 4.0.4 (29 Sep 2002)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981C.3.15 Alteraes na distribuio 4.0.3 (26 Aug 2002:coca Beta) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 983C.3.16 Alteraes na distribuio 4.0.2 (01 Jul 2002) . . 985cocaC.3.17 Alteraes na distribuio 4.0.1 (23 Dec 2001)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988C.3.18 Alteraes na distribuio 4.0.0 (Oct 2001: Alpha)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 989C.4 Alteraes na distribuio 3.23.x (Recent; still supported) coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991C.4.1 Alteraes na distribuio 3.23.59 (not released yet)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991C.4.2 Alteraes na distribuio 3.23.58 (11 Sep 2003)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992C.4.3 Alteraes na distribuio 3.23.57 (06 Jun 2003)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 992C.4.4 Alteraes na distribuio 3.23.56 (13 Mar 2003)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993C.4.5 Alteraes na distribuio 3.23.55 (23 Jan 2003)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994C.4.6 Alteraes na distribuio 3.23.54 (05 Dec 2002)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995C.4.7 Alteraes na distribuio 3.23.53 (09 Oct 2002)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996C.4.8 Alteraes na distribuio 3.23.52 (14 Aug 2002)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997C.4.9 Alteraes na distribuio 3.23.51 (31 May 2002)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997C.4.10 Alteraes na distribuio 3.23.50 (21 Apr 2002)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 998C.4.11 Alteraes na distribuio 3.23.49 . . . . . . . . . . . . 999cocaC.4.12 Alteraes na distribuio 3.23.48 (07 Feb 2002)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 999C.4.13 Alteraes na distribuio 3.23.47 (27 Dec 2001)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1000C.4.14 Alteraes na distribuio 3.23.46 (29 Nov 2001)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1000C.4.15 Alteraes na distribuio 3.23.45 (22 Nov 2001)coca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001 29. xxviiiC.4.16 Alteraes na distribuio 3.23.44 (31 Oct 2001) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001C.4.17 Alteraes na distribuio 3.23.43 (04 Oct 2001) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002C.4.18 Alteraes na distribuio 3.23.42 (08 Sep 2001) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003C.4.19 Alteraes na distribuio 3.23.41 (11 Aug 2001) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004C.4.20 Alteraes na distribuio 3.23.40 . . . . . . . . . . . 1004 cocaC.4.21 Alteraes na distribuio 3.23.39 (12 Jun 2001) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005C.4.22 Alteraes na distribuio 3.23.38 (09 May 2001) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005C.4.23 Alteraes na distribuio 3.23.37 (17 Apr 2001) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006C.4.24 Alteraes na distribuio 3.23.36 (27 Mar 2001) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007C.4.25 Alteraes na distribuio 3.23.35 (15 Mar 2001) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007C.4.26 Alteraes na distribuio 3.23.34a . . . . . . . . . . 1008 cocaC.4.27 Alteraes na distribuio 3.23.34 (10 Mar 2001) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008C.4.28 Alteraes na distribuio 3.23.33 (09 Feb 2001) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009C.4.29 Alteraes na distribuio 3.23.32 (22 Jan 2001: cocaProduction) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010C.4.30 Alteraes na distribuio 3.23.31 (17 Jan 2001) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1010C.4.31 Alteraes na distribuio 3.23.30 (04 Jan 2001) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011C.4.32 Alteraes na distribuio 3.23.29 (16 Dec 2000) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1012C.4.33 Alteraes na distribuio 3.23.28 (22 Nov 2000: cocaGamma) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1013C.4.34 Alteraes na distribuio 3.23.27 (24 Oct 2000) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015C.4.35 Alteraes na distribuio 3.23.26 (18 Oct 2000) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015C.4.36 Alteraes na distribuio 3.23.25 (29 Sep 2000) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1016C.4.37 Alteraes na distribuio 3.23.24 (08 Sep 2000) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017C.4.38 Alteraes na distribuio 3.23.23 (01 Sep 2000) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1018C.4.39 Alteraes na distribuio 3.23.22 (31 Jul 2000) coca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1019C.4.40 Alteraes na distribuio 3.23.21 . . . . . . . . . . . 1019 cocaC.4.41 Alteraes na distribuio 3.23.20 . . . . . . . . . . . 1020 coca 30. xxix C.4.42 Alteraes na distribuio 3.23.19 . . . . . . . . . . . 1020 coca C.4.43 Alteraes na distribuio 3.23.18 . . . . . . . . . . . 1021 coca C.4.44 Alteraes na distribuio 3.23.17 . . . . . . . . . . . 1021 coca C.4.45 Alteraes na distribuio 3.23.16 . . . . . . . . . . . 1022 coca C.4.46 Altera