manual mysql completasso.pt

1086
 Manual de Referência do MySQL

Upload: ailton-zacarias

Post on 08-Jul-2015

291 views

Category:

Documents


0 download

TRANSCRIPT

Manual de Referncia do MySQL

Manual de Referncia do MySQL

ndicePreface ............................................................................................................. xvii 1. Informaes Gerais ............................................................................................ 1 1.1. Sobre Este Manual .................................................................................. 2 1.1.1. Convenes Usadas Neste Manual ................................................... 2 1.2. Viso Geral do Sistema de Gerenciamento de Banco de Dados MySQL ............. 4 1.2.1. Histria do MySQL ....................................................................... 5 1.2.2. As Principais Caractersticas do MySQL ........................................... 5 1.2.3. Estabilidade do MySQL ................................................................. 8 1.2.4. Qual o Tamanho Que as Tabelas do MySQL Podem Ter? ..................... 9 1.2.5. Compatibilidade Com o Ano 2000 (Y2K) .........................................10 1.3. Viso Geral da MySQL AB ......................................................................11 1.3.1. O Modelo de Negcio e Servios da MySQL AB ...............................12 1.3.2. Informaes para Contato ..............................................................14 1.4. Suporte e Licenciamento do MySQL ..........................................................15 1.4.1. Suporte Oferecido pela MySQL AB ................................................15 1.4.2. Copyrights e Licenas Usadas pelo MySQL ......................................16 1.4.3. Licenas do MySQL .....................................................................16 1.4.4. Logomarcas e Marcas Registradas da MySQL AB .............................18 1.5. Mapa de Desenvolvimento do MySQL .......................................................19 1.5.1. MySQL 4.0 in a Nutshell ...............................................................20 1.5.2. MySQL 4.1 in a Nutshell ...............................................................21 1.5.3. MySQL 5.0, A Prxima Distribuio de Desenvolvimento ...................23 1.6. MySQL e o Futuro (o TODO) ...................................................................24 1.6.1. Novos Recursos Planejados Para a Verso 4.1 ...................................24 1.6.2. Novos Recursos Planejados Para a Verso 5.0 ...................................24 1.6.3. Novos Recursos Planejados Para a Verso 5.1 ...................................25 1.6.4. Novos Recursos Planejados Para a Verso em um Futuro Prximo ........26 1.6.5. Novos Recursos Planejados Para a Verso em um Futuro a Mdio Prazo 28 1.6.6. Novos Recursos que No Planejamos Fazer ......................................30 1.7. Fontes de Informaes do MySQL .............................................................30 1.7.1. Listas de Discusso MySQL ..........................................................30 1.7.2. Suporte a Comunidade MySQL Atrvs do IRC (Internet Relay Chat) .....37 1.8. Qual compatibilidade aos padres o MySQL oferece ? ..................................38 1.8.1. Qual Padro o MySQL Segue? .......................................................38 1.8.2. Executando o MySQL no modo ANSI .............................................38 1.8.3. Extenses do MySQL para o Padro SQL-92 ....................................39 1.8.4. Diferenas do MySQL em Comparao com o SQL-92 .......................42 1.8.5. Como o MySQL Lida com Restries ..............................................47 1.8.6. Erros Conhecidos e Deficincias de Projetos no MySQL .....................49 2. Instalao do MySQL ........................................................................................54 2.1. Instalao rpida padro do MySQL ..........................................................54 2.1.1. Instalando o MySQL no Windows ..................................................54 2.1.2. Instalando o MySQL no Linux .......................................................62 2.1.3. Instalando o MySQL no Mac OS X .................................................64 2.1.4. Instalando o MySQL no NetWare ...................................................67 2.2. Detalhes Gerais de Instalao ...................................................................68 2.2.1. Como obter o MySQL ..................................................................68 2.2.2. Verificando a Integridade do Pacote Usando MD5 Checksums ou GnuPG ..........................................................................................................68 2.2.3. Sistemas Operacionais suportados pelo MySQL ................................70 2.2.4. Qual verso do MySQL deve ser usada ............................................72 2.2.5. Layouts de Instalao ...................................................................75 2.2.6. Como e quando as atualizaes so lanadas? ...................................76 2.2.7. Filosofia das Distribuies - Nenhum Bug Conhecidos nas Distribuies 77 2.2.8. Binrios MySQL compilados pela MySQL AB .................................78 2.2.9. Instalando uma Distribuio Binria do MySQL ................................82 2.3. Instalando uma distribuio com fontes do MySQL ......................................85 iv

Manual de Referncia do MySQL

2.3.1. Viso geral da instalao rpida ......................................................86 2.3.2. Aplicando patches ........................................................................88 2.3.3. Opes tpicas do configure ......................................................89 2.3.4. Instalando pela rvore de fontes do desenvolvimento ..........................92 2.3.5. Lidando com Problemas de Compilao ...........................................94 2.3.6. Notas MIT-pthreads .....................................................................97 2.3.7. Instalando o MySQL a partir do Fonte no Windows ...........................99 2.4. Configuraes e Testes Ps-instalao ...................................................... 102 2.4.1. Problemas Executando o mysql_install_db ............................ 106 2.4.2. Problemas Inicializando o Servidor MySQL ................................... 107 2.4.3. Inicializando e parando o MySQL automaticamente. ........................ 109 2.5. Atualizando/Desatualizando o MySQL ..................................................... 110 2.5.1. Atualizando da Verso 4.0 para 4.1 ............................................... 111 2.5.2. Atualizando da Verso 3.23 para 4.0 .............................................. 113 2.5.3. Atualizando da verso 3.22 para 3.23 ............................................. 117 2.5.4. Atualizando da verso 3.21 para 3.22 ............................................. 118 2.5.5. Atualizando da verso 3.20 para 3.21 ............................................. 119 2.5.6. Atualizando a Tabela de Permisses .............................................. 120 2.5.7. Atualizando para outra arquitetura ................................................. 120 2.5.8. Atualizando o MySQL no Windows .............................................. 122 2.6. Notas especficas para os Sistemas Operacionais ........................................ 122 2.6.1. Notas Windows ......................................................................... 122 2.6.2. Notas Linux (Todas as verses) .................................................... 126 2.6.3. Notas Solaris ............................................................................ 133 2.6.4. Notas BSD ............................................................................... 137 2.6.5. Notas Mac OS X ....................................................................... 140 2.6.6. Notas de Outros Unix ................................................................. 140 2.6.7. Notas OS/2 ............................................................................... 151 2.6.8. Notas Novell NetWare ................................................................ 151 2.6.9. Notas BeOS .............................................................................. 151 2.7. Comentrios de Instalao do Perl ........................................................... 152 2.7.1. Instalando Perl no Unix ............................................................... 152 2.7.2. Instalaando ActiveState Perl no Windows ....................................... 152 2.7.3. Problemas Usando a Interface Perl DBI/DBD .................................. 153 3. Tutorial de Introduo Do MySQL ..................................................................... 156 3.1. Conectando e Desconectando do Servidor ................................................. 156 3.2. Fazendo Consultas ................................................................................ 157 3.3. Criao e Utilizao de um Banco de Dados .............................................. 160 3.3.1. Criando e Selecionando um Banco de Dados ................................... 161 3.3.2. Criando uma Tabela ................................................................... 161 3.3.3. Carregando dados em uma tabela .................................................. 163 3.3.4. Recuperando Informaes de uma Tabela ....................................... 164 3.4. Obtendo Informaes Sobre Bancos de Dados e Tabelas .............................. 177 3.5. Utilizando mysql em Modo Batch .......................................................... 178 3.6. Exemplos de Consultas Comuns .............................................................. 179 3.6.1. O Valor Mximo para uma Coluna ................................................ 180 3.6.2. O Registro que Armazena o Valor Mximo para uma Coluna Determinada ........................................................................................................ 180 3.6.3. Mximo da Coluna por Grupo ...................................................... 181 3.6.4. As Linhas Armazenando o Group-wise Mximo de um Certo Campo .. 181 3.6.5. Utilizando Variveis de Usurio ................................................... 182 3.6.6. Utilizando Chaves Estrangeiras .................................................... 182 3.6.7. Pesquisando em Duas Chaves ...................................................... 184 3.6.8. Calculando Visitas Dirias ........................................................... 184 3.6.9. Usando AUTO_INCREMENT ....................................................... 185 3.7. Consultas de Projetos Gmeos ................................................................ 186 3.7.1. Encontrando Todos Gmeos No-distribudos ................................. 186 3.7.2. Mostrando uma Tabela sobre a Situao dos Pares Gmeos ............... 188 3.8. Utilizando MySQL com Apache ............................................................. 189 4. Administrao do Bancos de Dados MySQL ........................................................ 190 4.1. Configurando o MySQL ........................................................................ 190 4.1.1. Opes de Linha de Comando do mysqld ..................................... 190 4.1.2. Arquivo de Opes my.cnf ........................................................ 198 v

Manual de Referncia do MySQL

4.2. Executando Mltiplos MySQL Servers na Mesma Mquina ......................... 201 4.2.1. Executando Mltiplos Servidores no Windows ................................ 203 4.2.2. Executando Mltiplos Servidores no Unix ...................................... 206 4.2.3. Usando Programas Clientes em um Ambiente Multi-Servidor ............ 207 4.3. Detalhes Gerais de Segurana e o Sistema de Privilgio de Acesso do MySQL 208 4.3.1. Segurana Geral ........................................................................ 208 4.3.2. Como Tornar o MySQL Seguro contra Crackers .............................. 210 4.3.3. Opes de Inicializao para o mysqld em Relao a Segurana. ...... 212 4.3.4. Detalhes de Segurana com LOAD DATA LOCAL ........................... 213 4.3.5. O Que o Sistema de Privilgios Faz ............................................... 213 4.3.6. Como o Sistema de Privilgios Funciona ........................................ 213 4.3.7. Privilgios Fornecidos pelo MySQL .............................................. 217 4.3.8. Conectando ao Servidor MySQL .................................................. 219 4.3.9. Controle de Acesso, Estgio 1: Verificao da Conexo .................... 220 4.3.10. Controle de Acesso, Estgio 2: Verificao da Requisio ............... 223 4.3.11. Hashing de Senhas no MySQL 4.1 .............................................. 225 4.3.12. Causas dos Erros de Accesso Negado ..................................... 229 4.4. Gerenciamento das Contas dos Usurios no MySQL ................................... 233 4.4.1. A Sintaxe de GRANT e REVOKE ................................................... 233 4.4.2. Nomes de Usurios e Senhas do MySQL ........................................ 238 4.4.3. Quando as Alteraes nos Privilgios tem Efeito .............................. 239 4.4.4. Configurando os Privilgios Iniciais do MySQL .............................. 239 4.4.5. Adicionando Novos Usurios ao MySQL ....................................... 240 4.4.6. Deletando Usurios do MySQL .................................................... 243 4.4.7. Limitando os Recursos dos Usurios ............................................. 243 4.4.8. Configurando Senhas .................................................................. 244 4.4.9. Mantendo Sua Senha Segura ........................................................ 245 4.4.10. Usando Conexes Seguras ......................................................... 246 4.5. Preveno de Disastres e Recuperao ...................................................... 252 4.5.1. Backups dos Bancos de Dados ..................................................... 252 4.5.2. Sintaxe de BACKUP TABLE ........................................................ 254 4.5.3. Sintaxe de RESTORE TABLE ...................................................... 254 4.5.4. Sintaxe de CHECK TABLE .......................................................... 254 4.5.5. Sintaxe do REPAIR TABLE ....................................................... 256 4.5.6. Utilizando myisamchk para Manuteno de Tabelas e Recuperao em Caso de Falhas .................................................................................. 257 4.5.7. Configurando um Regime de Manuteno das Tabelas ...................... 267 4.5.8. Obtendo Informaes sobre as Tabelas .......................................... 268 4.6. Adiministrao do Banco de Dados e Referncia de Linguagem .................... 273 4.6.1. Sintaxe de OPTIMIZE TABLE .................................................... 273 4.6.2. Sintaxe de ANALYZE TABLE ...................................................... 273 4.6.3. Sintaxe de CHECKSUM TABLE .................................................... 274 4.6.4. Sintaxe de FLUSH ...................................................................... 274 4.6.5. Sintaxe de RESET ...................................................................... 275 4.6.6. Sintaxe de PURGE MASTER LOGS .............................................. 276 4.6.7. Sintaxe de KILL ........................................................................ 276 4.6.8. Sintaxe de SHOW ........................................................................ 277 4.7. Localizao do MySQL e Utilizao Internacional ...................................... 296 4.7.1. O Conjunto de Caracteres Utilizado para Dados e Ordenao ............. 297 4.7.2. Mensagens de Erros em Outras Lnguas ......................................... 298 4.7.3. Adicionando um Novo Conjunto de Caracteres ................................ 298 4.7.4. Os Vetores de Definies de Caracteres ......................................... 300 4.7.5. Suporte Ordenao de Strings .................................................... 300 4.7.6. Suporte Caracteres Multi-byte .................................................... 301 4.7.7. Problemas com Conjuntos de Caracteres ........................................ 301 4.8. Utilitrios e Scripts do Lado do Servidor MySQL ....................................... 301 4.8.1. Viso Geral dos Scripts e Utilitrios do Lado Servidor ...................... 301 4.8.2. mysqld-safe, o wrapper do mysqld ........................................ 302 4.8.3. mysqld_multi, programa para gerenciar mltiplos servidores MySQL ........................................................................................................ 304 4.8.4. myisampack, O Gerador de Tabelas Compactadas de Somente Leitura do MySQL ............................................................................................ 307 4.8.5. mysqld-max, om servidor mysqld extendido .............................. 312 vi

Manual de Referncia do MySQL

4.9. Utilitrios e Scripts do Lado do Cliente MySQL ......................................... 314 4.9.1. Viso Geral dos Utilitrios e Scripts do Lado do Cliente .................... 314 4.9.2. mysql, A Ferramenta de Linha de Comando .................................. 316 4.9.3. mysqlcc, The MySQL Control Center ......................................... 324 4.9.4. mysqladmin, Administrando um Servidor MySQL ........................ 326 4.9.5. mysqlbinlog, Executando as Consultas a Partir de um Log Binrio . 328 4.9.6. Usando mysqlcheck para Manuteno de Tabelas e Recuperao em Caso de Falhas ...................................................................................... 329 4.9.7. mysqldump, Descarregando a Estrutura de Tabelas e Dados ............ 332 4.9.8. mysqlhotcopy, Copiando Bancos de Dados e Tabelas do MySQL .. 336 4.9.9. mysqlimport, Importando Dados de Arquivos Texto .................... 338 4.9.10. mysqlshow, Exibindo Bancos de Dados, Tabelas e Colunas ........... 340 4.9.11. mysql_config, Opes para compilao do cliente MySQL ......... 341 4.9.12. perror, Explicando Cdigos de Erros ........................................ 342 4.9.13. Como Executar Comandos SQL a Partir de um Arquivo Texto ......... 342 4.10. Os Arquivos de Log do MySQL ............................................................ 343 4.10.1. O Log de Erros ........................................................................ 343 4.10.2. O Log de Consultas .................................................................. 344 4.10.3. O Log de Atualizaes .............................................................. 344 4.10.4. O Log Binrio ......................................................................... 345 4.10.5. O Log para Consultas Lentas ...................................................... 347 4.10.6. Manuteno do Log de Arquivo .................................................. 348 4.11. Replicao no MySQL ........................................................................ 348 4.11.1. Introduo .............................................................................. 348 4.11.2. Viso Geral da Implementao da Replicao ................................ 349 4.11.3. Detalhes de Implementao da Replicao .................................... 350 4.11.4. Como Configurar a Replicao ................................................... 355 4.11.5. Recursos de Replicao e Problemas Conhecidos ........................... 359 4.11.6. Opes de Inicializao da Replicao ......................................... 361 4.11.7. Instrues SQL para Controle do Servidor Master .......................... 369 4.11.8. Instrues SQL para Controle do Servidor Slave ............................ 370 4.11.9. FAQ da Replicao .................................................................. 378 4.11.10. Problemas com Replicao ....................................................... 383 4.11.11. Relatando Problemas de Replicao ........................................... 384 5. Otimizao do MySQL .................................................................................... 385 5.1. Viso Geral da Otimizao ..................................................................... 385 5.1.1. Limitaes do Projeto MySQL/Trocas ........................................... 385 5.1.2. Portabilidade ............................................................................. 386 5.1.3. Para que Utilizamos o MySQL? .................................................... 387 5.1.4. O Pacote de Benchmark do MySQL .............................................. 387 5.1.5. Utilizando seus Prprios Benchmarks ............................................ 389 5.2. Otimizando SELECTs e Outras Consultas ................................................. 389 5.2.1. Sintaxe de EXPLAIN (Obter informaes sobre uma SELECT) .......... 390 5.2.2. Estimando o Desempenho de uma Consulta .................................... 397 5.2.3. Velocidade das Consultas que Utilizam SELECT ............................. 397 5.2.4. Como o MySQL Otimiza Clusulas WHERE .................................... 398 5.2.5. Como o MySQL Otimiza IS NULL .............................................. 400 5.2.6. Como o MySQL Otimiza Clusulas DISTINCT .............................. 400 5.2.7. Como o MySQL Otimiza LEFT JOIN e RIGHT JOIN .................. 401 5.2.8. Como o MySQL Otimiza Clusulas ORDER BY .............................. 402 5.2.9. Como o MySQL Otimiza Clusulas LIMIT .................................... 403 5.2.10. Performance das Consultas que Utilizam INSERT ......................... 404 5.2.11. Performance das Consultas que Utilizam UPDATE ......................... 406 5.2.12. Performance das Consultas que Utilizam DELETE ......................... 406 5.2.13. Mais Dicas sobre Otimizaes .................................................... 406 5.3. Detalhes sobre Locks ............................................................................ 409 5.3.1. Como o MySQL Trava as Tabelas ................................................. 409 5.3.2. Detalhes sobre Lock de Tabelas .................................................... 409 5.4. Otimizando a Estrutura de Banco de Dados ............................................... 411 5.4.1. Opes do Projeto ...................................................................... 411 5.4.2. Deixando os Dados com o Menor Tamanho Possvel ........................ 411 5.4.3. Como o MySQL Utiliza ndices .................................................... 412 5.4.4. ndices de Colunas ..................................................................... 414 vii

Manual de Referncia do MySQL

5.4.5. ndices de Mltiplas Colunas ....................................................... 415 5.4.6. Como o MySQL Conta as Tabelas Abertas ..................................... 416 5.4.7. Como o MySQL Abre e Fecha as Tabelas ....................................... 416 5.4.8. Desvantagem em Criar um Nmero Grande de Tabelas no Mesmo Banco de Dados .............................................................................................. 417 5.5. Otimizando o Servidor MySQL ............................................................... 417 5.5.1. Sintonia dos Parmetros em Tempo de Sistema/Compilao e na Inicializao .................................................................................................. 417 5.5.2. Parmetros de Sintonia do Servidor ............................................... 418 5.5.3. Como a Compilao e a Ligao Afetam a Velocidade do MySQL ...... 420 5.5.4. Como o MySQL Utiliza a Memria ............................................... 422 5.5.5. Como o MySQL Utiliza o DNS .................................................... 423 5.5.6. Sintaxe de SET .......................................................................... 423 5.6. Detalhes de Disco ................................................................................. 427 5.6.1. Utilizando Links Simblicos ........................................................ 429 6. Referncia de Linguagem do MySQL ................................................................. 432 6.1. Estrutura da Linguagem ......................................................................... 432 6.1.1. Literais: Como Gravar Strings e Numerais ...................................... 432 6.1.2. Nomes de Banco de dados, Tabela, ndice, Coluna e Alias ................. 435 6.1.3. Caso Sensitivo nos Nomes ........................................................... 437 6.1.4. Variveis de Usurio .................................................................. 437 6.1.5. Variveis de Sistema .................................................................. 438 6.1.6. Sintaxe de Comentrios .............................................................. 441 6.1.7. Tratamento de Palavras Reservadas no MySQL ............................... 442 6.2. Tipos de Campos .................................................................................. 444 6.2.1. Tipos Numricos ....................................................................... 449 6.2.2. Tipos de Data e Hora .................................................................. 451 6.2.3. Tipos String .............................................................................. 457 6.2.4. Escolhendo o Tipo Correto para uma Coluna ................................... 462 6.2.5. Usando Tipos de Colunas de Outros Mecanismos de Banco de Dados .. 462 6.2.6. Exigncias de Armazenamento dos Tipos de Coluna ......................... 462 6.3. Funes para Uso em Clusulas SELECT e WHERE .................................... 464 6.3.1. Operadores e Funes de Tipos no Especificados ........................... 464 6.3.2. Funes String .......................................................................... 472 6.3.3. Funes Numricas .................................................................... 483 6.3.4. Funes de Data e Hora .............................................................. 491 6.3.5. Funes de Converso ................................................................ 507 6.3.6. Outras Funes .......................................................................... 509 6.3.7. Funes e Modificadores para Usar com Clusulas GROUP BY .......... 519 6.4. Manipulao de Dados: SELECT, INSERT, UPDATE e DELETE .................. 525 6.4.1. Sintaxe SELECT ........................................................................ 525 6.4.2. Sintaxe de Subquery ................................................................... 532 6.4.3. Sintaxe INSERT ........................................................................ 542 6.4.4. Sintaxe UPDATE ........................................................................ 546 6.4.5. Sintaxe DELETE ........................................................................ 548 6.4.6. Sintaxe TRUNCATE .................................................................... 549 6.4.7. Sintaxe REPLACE ...................................................................... 550 6.4.8. Sintaxe LOAD DATA INFILE .................................................... 550 6.4.9. Sintaxe HANDLER ...................................................................... 557 6.4.10. Sintaxe DO .............................................................................. 558 6.5. Definio de Dados: CREATE, DROP e ALTER .......................................... 558 6.5.1. Sintaxe CREATE DATABASE ...................................................... 559 6.5.2. Sintaxe DROP DATABASE .......................................................... 559 6.5.3. Sintaxe CREATE TABLE ............................................................ 559 6.5.4. Sintaxe ALTER TABLE .............................................................. 568 6.5.5. Sintaxe RENAME TABLE ............................................................ 572 6.5.6. Sintaxe DROP TABLE ................................................................ 572 6.5.7. Sintaxe CREATE INDEX ............................................................ 573 6.5.8. Sintaxe DROP INDEX ................................................................ 573 6.6. Comandos Utilitrios Bsicos do Usurio MySQL ...................................... 574 6.6.1. Sintaxe USE .............................................................................. 574 6.6.2. Sintaxe DESCRIBE (Obtem Informaes Sobre Colunas) .................. 574 6.7. Comandos Transacionais e de Lock do MySQL ......................................... 574 viii

Manual de Referncia do MySQL

6.7.1. Sintaxe de START TRANSACTION, COMMIT e ROLLBACK ............. 574 6.7.2. Instrues que No Podem Ser Desfeitas ........................................ 575 6.7.3. Instrues que Fazem um Commit Implicito ................................... 575 6.7.4. Sintaxe de SAVEPOINT e ROLLBACK TO SAVEPOINT ................ 576 6.7.5. Sintaxe LOCK TABLES e UNLOCK TABLES ................................ 576 6.7.6. Sintaxe SET TRANSACTION ...................................................... 578 6.8. Pesquisa Full-text no MySQL ................................................................. 578 6.8.1. Restries Full-text .................................................................... 582 6.8.2. Ajuste Fino de Pesquisas Full-text no MySQL ................................. 582 6.8.3. TODO de Pesquisas Full-text ....................................................... 583 6.9. Cache de Consultas do MySQL ............................................................... 584 6.9.1. Como a Cache de Consultas Opera ................................................ 584 6.9.2. Configurao da Cache de Consultas ............................................. 586 6.9.3. Opes da Cache de Consultas na SELECT .................................... 587 6.9.4. Estado e Manuteno da Cache de Consultas ................................... 587 7. Tipos de Tabela do MySQL .............................................................................. 589 7.1. Tabelas MyISAM .................................................................................. 590 7.1.1. Espao Necessrio para Chaves .................................................... 592 7.1.2. Formatos de Tabelas MyISAM ...................................................... 592 7.1.3. Problemas com Tabelas MyISAM .................................................. 595 7.2. Tabelas MERGE .................................................................................... 596 7.2.1. Problemas com Tabelas MERGE .................................................... 598 7.3. Tabelas ISAM ...................................................................................... 599 7.4. Tabelas HEAP ...................................................................................... 600 7.5. Tabelas InnoDB .................................................................................. 601 7.5.1. Viso Geral de Tabelas InnoDB .................................................... 601 7.5.2. InnoDB no MySQL Verso 3.23 ................................................... 601 7.5.3. Opes de Inicializao do InnoDB ............................................... 602 7.5.4. Criando Tablespaces no InnoDB ................................................... 607 7.5.5. Criando Tabelas InnoDB ............................................................. 609 7.5.6. Adicionando e Removendo Arquivos de Dados e Log do InnoDB ....... 613 7.5.7. Fazendo Backup e Recuperando um Banco de Dados InnoDB ............ 613 7.5.8. Movendo um Banco de Dados InnoDB para Outra Mquina ............... 616 7.5.9. Modelo Transacional do InnoDB .................................................. 616 7.5.10. Dicas de Ajuste de Desempenho ................................................. 622 7.5.11. Implementao de Multi-versioning ............................................. 626 7.5.12. Estrutura de Tabelas e ndices .................................................... 626 7.5.13. Gerenciamento do Espao de Arquivos e E/S de Disco .................... 628 7.5.14. Tratando Erros ......................................................................... 630 7.5.15. Restries em Tabelas InnoDB ................................................... 630 7.5.16. Histrico de Alteraes do InnoDB ............................................. 631 7.5.17. Informaes de Contato do InnoDB ............................................ 648 7.6. Tabelas BDB ou BerkeleyDB ............................................................... 648 7.6.1. Viso Geral de Tabelas BDB ........................................................ 648 7.6.2. Instalando BDB .......................................................................... 649 7.6.3. Opes de Inicializao do BDB ................................................... 649 7.6.4. Caractersticas de Tabelas BDB: .................................................... 650 7.6.5. Itens a serem corrigidos no BDB num futuro prximo: ....................... 651 7.6.6. Sistemas operacionais suportados pelo BDB .................................... 651 7.6.7. Restries em Tabelas BDB .......................................................... 652 7.6.8. Erros Que Podem Ocorrer Usando Tabelas BDB .............................. 652 8. Introduo ao MaxDB ..................................................................................... 653 8.1. Historia do MaxDB .............................................................................. 653 8.2. Licenciamento e Suporte ........................................................................ 653 8.3. Conceitos Bsicos do MaxDB ................................................................. 653 8.4. Diferenas de Recursos entre o MaxDB e o MySQL ................................... 653 8.5. Interoperability Features between MaxDB and MySQL ............................... 654 8.6. Links Relacionados ao MaxDB ............................................................... 654 8.7. Palavras Reservadas no MaxDB .............................................................. 654 9. Conjunto de Caracteres Nacionais e Unicode ....................................................... 658 9.1. Conjuntos de Caracteres e Collations em Geral .......................................... 658 9.2. Conjunto de Caracteres e Collations no MySQL ......................................... 659 9.3. Determinando o Conjunto de Caracteres e Collation Padres ........................ 659 ix

Manual de Referncia do MySQL

9.3.1. Conjunto de Caracteres e Collations do Servidor .............................. 659 9.3.2. Conjunto de Caracteres e Collation de Banco de Dados ..................... 660 9.3.3. O Conjunto de Caracteres e Collations de Tabela ............................. 661 9.3.4. Conjunto de Caracteres e Collation de Colunas ................................ 661 9.3.5. Exemplos de Atribuies de Conjuntos de Caracteres e Collation ........ 662 9.3.6. Conjunto de Caracteres e Collation de Conexo ............................... 663 9.3.7. Conjunto de Caracteres e Collation de Caracter de String Literal ......... 663 9.3.8. Clusula COLLATE em Vrias Partes de uma Consulta SQL .............. 664 9.3.9. Precedncia da Clusula COLLATE ............................................... 665 9.3.10. Operador BINARY ................................................................... 666 9.3.11. Alguns Casos Especiais Onde a Determinao da Collation e Trabalhosa ........................................................................................................ 666 9.3.12. Collations Devem Ser para o Conjunto de Caracteres Certo .............. 667 9.3.13. Um exemplo do Efeito da Collation ............................................. 667 9.4. Operaes Afetadas pelo Suporte a Conjunto de Caracteres .......................... 667 9.4.1. Strings de Resultados ................................................................. 668 9.4.2. CONVERT() ............................................................................ 668 9.4.3. CAST() .................................................................................. 668 9.4.4. SHOW CHARACTER SET .......................................................... 669 9.4.5. SHOW COLLATION .................................................................. 669 9.4.6. SHOW CREATE DATABASE ...................................................... 670 9.4.7. SHOW FULL COLUMNS ............................................................ 670 9.5. Suporte Unicode .................................................................................. 670 9.6. UTF8 para Metdados ............................................................................ 671 9.7. Compatibilidade com Outros SGBDs ....................................................... 672 9.8. Novo Formato do Arquivo de Configurao do Conjunto de Caracteres .......... 672 9.9. Conjunto de Caracteres Nacional ............................................................. 672 9.10. Atualizando para o MySQL 4.0 ............................................................. 672 9.10.1. Conjunto de Caracteres do MySQL e o Par/Conjunto de Caracter/Collation Correspondente do MySQL 4.1 ............................................................. 673 9.11. Os conjuntos de Caracteres e Collations que o MySQL Suporta ................... 674 9.11.1. O Conjunto de Caracteres Unicode .............................................. 675 9.11.2. Conjunto de Caracteres para Plataformas Especficas ...................... 675 9.11.3. Conjunto de Caracteres do Sul da Europa e Oriente Mdio ............... 675 9.11.4. Os Conjuntos de Caracteres Asiticos .......................................... 675 9.11.5. Os Conjuntos de Caracteres Blticos ............................................ 676 9.11.6. Os Conjuntos de Caracteres Cirlicos ........................................... 676 9.11.7. O Conjunto de Caracteres da Europa Central ................................. 677 9.11.8. Os Conjuntos de Caracteres da Europa Ocidental ........................... 678 10. Extenses Espacias em MySQL ....................................................................... 680 10.1. Introduo ......................................................................................... 680 10.2. O Modelo Geomtrico OpenGIS ............................................................ 681 10.2.1. A Hierarquia da Classe Geometry ............................................. 681 10.2.2. Classe Geometry ................................................................... 682 10.2.3. Classe Point ......................................................................... 683 10.2.4. Classe Curve ......................................................................... 683 10.2.5. Classe LineString ............................................................... 684 10.2.6. Classe Surface ..................................................................... 684 10.2.7. Classe Polygon ..................................................................... 684 10.2.8. Classe GeometryCollection ............................................... 685 10.2.9. Classe MultiPoint ............................................................... 685 10.2.10. Classe MultiCurve ............................................................. 685 10.2.11. Classe MultiLineString (Multi Linhas) ............................... 686 10.2.12. Classe MultiSurface (Multi Superfcies) ............................... 686 10.2.13. Classe MultiPolygon (Multi Polgonos) ................................. 686 10.3. Formatos de Dados Espaciais Suportados ................................................ 687 10.3.1. Formato Well-Known Text (WKT) .............................................. 687 10.3.2. Formato Well-Known Binary (WKB) .......................................... 688 10.4. Criando um Banco de Dados MySQL Habilitado Espacialmente .................. 689 10.4.1. Tipos de Dados Espaciais do MySQL .......................................... 689 10.4.2. Criando Valores Espaciais ......................................................... 689 10.4.3. Criando Colunas Espaciais ......................................................... 693 10.4.4. Entrando com Dados em Colunas Espaciais .................................. 693 x

Manual de Referncia do MySQL

10.4.5. Buscando Dados Espaciais ......................................................... 694 10.5. Analisando Informao Espacial ............................................................ 695 10.5.1. Funes Para Converter Geometrias Entre Formatos Diferentes ........ 695 10.5.2. Funes de Anlise das Propriedades de Geometry ...................... 696 10.5.3. Funes Que Criam Novas Geometrias de Outras Existentes ............ 702 10.5.4. Funes Para Testar Relaes Espaciais Entre Objetos Geomtricos .. 704 10.5.5. Relaes de Retngulo de Limite Mnimo (Minimal Bounding Rectangles - MBR) em Geometrias ....................................................................... 704 10.5.6. Funes que Testam Relacionamentos Espaciais Entre Geometrias .... 705 10.6. Otimizando Anlises Espaciais .............................................................. 706 10.6.1. Criando ndices Espaciais .......................................................... 706 10.6.2. Usando ndice Espacial ............................................................. 707 10.7. Compatibilidade e Conformidade com o MySQL ...................................... 709 10.7.1. Recursos GIS Que Ainda No Esto Implementados ....................... 709 11. Stored Procedures e Funes ........................................................................... 710 11.1. Sintaxe de Stored Procedure ................................................................. 710 11.1.1. Manuteno de Stored Procedures ............................................... 711 11.1.2. SHOW PROCEDURE STATUS e SHOW FUNCTION STATUS ........ 713 11.1.3. CALL ..................................................................................... 713 11.1.4. BEGIN ... END Compound Statement ..................................... 713 11.1.5. Instruo DECLARE ................................................................. 714 11.1.6. Variables in Stored Procedures ................................................... 714 11.1.7. Condies e Handlers ............................................................... 714 11.1.8. Cursors .................................................................................. 716 11.1.9. Flow Control Constructs ............................................................ 717 12. Ferramentas de Clientes e APIs do MySQL ........................................................ 720 12.1. API C do MySQL ............................................................................... 720 12.1.1. Tipos de Dados da API C ........................................................... 720 12.1.2. Viso Geral das Funo da API C ............................................... 723 12.1.3. Descrio das Funes da API C ................................................. 726 12.1.4. Instrues Preparadas da API C .................................................. 763 12.1.5. Tipos de Dados de Instrues Preparadas da API C ......................... 764 12.1.6. Viso Geral das Funes de Instrues Preparadas da API C ............ 766 12.1.7. Descrio das Funes de Instruo Preparada da API C .................. 769 12.1.8. Tratando a Execuo de Mltiplas Consultas na API C .................... 786 12.1.9. Manipulando Valores de Data e Hora na API C .............................. 786 12.1.10. Descrio das Funes de Threads da API C ................................ 787 12.1.11. Descrio das Funes do Servidor Embutido da API C ................. 789 12.1.12. Dvidas e problemas comuns ao utilzar a API C ........................... 790 12.1.13. Construindo Programas Clientes ................................................ 791 12.1.14. Como Fazer um Cliente em Threads ........................................... 792 12.1.15. libmysqld, a Biblioteca do Servidor Embutido MySQL .................. 793 12.2. Suporte ODBC ao MySQL ................................................................... 798 12.2.1. Como Instalar o MyODBC ........................................................ 798 12.2.2. Como Preencher os Vrios Campos no Programa de Administrao do ODBC ............................................................................................. 799 12.2.3. Parmetros de Conexo do MyODBC .......................................... 800 12.2.4. Como Relatar Problemas com o MyODBC ................................... 801 12.2.5. Programas que Funcionam com MyODBC .................................... 801 12.2.6. Como Obter o Valor de uma Coluna AUTO_INCREMENT no ODBC . 806 12.2.7. Relatando Problemas com MyODBC ........................................... 806 12.3. Conectividade Java (JDBC) ao MySQL .................................................. 807 12.4. API PHP do MySQL ........................................................................... 807 12.4.1. Problemas Comuns com MySQL e PHP ....................................... 807 12.5. API Perl do MySQL ............................................................................ 808 12.5.1. DBI com DBD::mysql ........................................................... 808 12.5.2. A interface DBI ....................................................................... 808 12.5.3. Mais Informaes DBI/DBD ....................................................... 815 12.6. API C++ do MySQL ........................................................................... 815 12.6.1. Borland C++ ........................................................................... 815 12.7. API Python do MySQL ........................................................................ 816 12.8. API Tcl do MySQL ............................................................................. 816 12.9. Eiffel Wrapper do MySQL ................................................................... 816 xi

Manual de Referncia do MySQL

13. Tratamento de Erros no MySQL ...................................................................... 817 13.1. Erros Retornados ................................................................................ 817 14. Estendendo o MySQL .................................................................................... 841 14.1. MySQL Internals ................................................................................ 841 14.1.1. Threads MySQL ...................................................................... 841 14.1.2. Pacotes de Teste do MySQL ....................................................... 841 14.2. Adicionando Novas Funes ao MySQL ................................................. 844 14.2.1. Sintaxe CREATE FUNCTION/DROP FUNCTION ........................ 844 14.2.2. Adicionando Novas Funes Definidas Por Usurio ........................ 845 14.2.3. Adicionando uma Nova Funo Nativa ........................................ 852 14.3. Adicionado Novos Procedimentos ao MySQL .......................................... 853 14.3.1. Anlise de Procedimento ........................................................... 854 14.3.2. Escrevendo um Procedimento ..................................................... 854 A. Problemas e Erros Comuns .............................................................................. 855 A.1. Como Determinar o Que Est Causando Problemas .................................... 855 A.2. Erros Comuns Usando o MySQL ............................................................ 856 A.2.1. Erro: Access Denied ............................................................ 856 A.2.2. Erro: MySQL server has gone away .................................. 856 A.2.3. Erro: Can't connect to [local] MySQL server ............ 857 A.2.4. Erro: Client does not support authentication protocol ................................................................................................. 859 A.2.5. Erro: Host '...' is blocked ............................................ 859 A.2.6. Erro: Too many connections .............................................. 860 A.2.7. Erro: Some non-transactional changed tables couldn't be rolled back ........................................................................... 860 A.2.8. Erro: Out of memory ............................................................ 860 A.2.9. Erro: Packet too large ...................................................... 861 A.2.10. Erros de Comunicao / Comunicao Abortada ........................... 861 A.2.11. Erro: The table is full .................................................. 862 A.2.12. Erro: Can't create/write to file ................................ 863 A.2.13. Erro no Cliente: Commands out of sync .............................. 863 A.2.14. Erro: Ignoring user .......................................................... 864 A.2.15. Erro: Table 'xxx' doesn't exist .................................. 864 A.2.16. Erro: Can't initialize character set xxx ................ 864 A.2.17. Arquivo No Encontrado .......................................................... 865 A.3. Assuntos Relacionados a Instalao ........................................................ 866 A.3.1. Problemas de Ligao com a Biblioteca do Cliente MySQL .............. 866 A.3.2. Como Executar o MySQL Como Um Usurio Normal ..................... 866 A.3.3. Problemas com Permisses de Arquivos ........................................ 867 A.4. Assuntos Relacionados a Administrao .................................................. 868 A.4.1. O Que Fazer Se o MySQL Continua Falhando ................................ 868 A.4.2. Como Recuperar uma Senha de Root Esquecida .............................. 870 A.4.3. Como o MySQL Trata de Discos Sem Espao ................................ 871 A.4.4. Onde o MySQL Armazena Arquivos Temporrios .......................... 872 A.4.5. Como Proteger ou AlterarHow to Protect or Change the MySQL Socket File /tmp/mysql.sock ..................................................................... 872 A.4.6. Problemas Com Fuso Horrio ...................................................... 873 A.5. Assuntos Relacionados a Consultas ......................................................... 873 A.5.1. Caso-Sensitivito em Pesquisas ..................................................... 873 A.5.2. Problemas Usando Colunas DATE ................................................ 873 A.5.3. Problemas com Valores NULL ..................................................... 874 A.5.4. Problemas com alias .............................................................. 876 A.5.5. Deletando Linhas de Tabelas Relacionadas .................................... 876 A.5.6. Resolvendo Problemas Com Registros No Encontrados .................. 876 A.5.7. Problemas com Comparao de Ponto Flutuante ............................. 877 A.6. Assuntos Relacionados ao Otimizador ..................................................... 879 A.6.1. Camo evitar o varredura da tabela,,, .............................................. 879 A.7. Assuntos Relacionados a Definies de Tabelas ........................................ 880 A.7.1. Problemas com ALTER TABLE. ................................................. 880 A.7.2. Como Alterar a Ordem das Colunas em Uma Tabela ........................ 880 A.7.3. Problemas com TEMPORARY TABLE ........................................ 881 B. Contribuio de Programas .............................................................................. 882 B.1. APIs .................................................................................................. 882 xii

Manual de Referncia do MySQL

B.2. Conversores ........................................................................................ 884 B.3. Utilitrios ........................................................................................... 885 C. Colaboradores do MySQL ............................................................................... 887 C.1. Desenvolvedores do MySQL ................................................................. 887 C.2. Coolaboradores do MySQL ................................................................... 891 C.3. Responsveis pela Documentao e Traduo ........................................... 895 C.4. Bibliotecas usadas e incluidas com o MySQL ............................................ 896 C.5. Pacotes que suportam o MySQL ............................................................. 897 C.6. Ferramentas que so usadas para criar o MySQL ....................................... 898 C.7. Responsveis pelo Suporte do MySQL .................................................... 898 D. Histrico de Alteraes do MySQL ................................................................... 900 D.1. Alteraes na distribuio 5.0.0 (Development) ......................................... 900 D.2. Alteraes na distribuio 4.1.x (Alpha) ................................................... 900 D.2.1. Alteraes na distribuio 4.1.2 (not released yet) ........................... 901 D.2.2. Alteraes na distribuio 4.1.1 (01 de Dez de 2003) ....................... 902 D.2.3. Alteraes na distribuio 4.1.0 (03 Apr 2003: Alpha) ..................... 906 D.3. Alteraes na distribuio 4.0.x (Production) ............................................ 909 D.3.1. Alteraes na distribuio 4.0.17 (not released yet) .......................... 909 D.3.2. Alteraes na distribuio 4.0.16 (17 Out 2003) .............................. 911 D.3.3. Alteraes na distribuio 4.0.15 (03 Sep 2003) .............................. 913 D.3.4. Alteraes na distribuio 4.0.14 (18 Jul 2003) ............................... 917 D.3.5. Alteraes na distribuio 4.0.13 (16 May 2003) ............................. 921 D.3.6. Alteraes na distribuio 4.0.12 (15 Mar 2003: Production) ............. 925 D.3.7. Alteraes na distribuio 4.0.11 (20 Feb 2003) .............................. 926 D.3.8. Alteraes na distribuio 4.0.10 (29 Jan 2003) .............................. 927 D.3.9. Alteraes na distribuio 4.0.9 (09 Jan 2003) ................................ 928 D.3.10. Alteraes na distribuio 4.0.8 (07 Jan 2003) .............................. 929 D.3.11. Alteraes na distribuio 4.0.7 (20 Dec 2002) .............................. 930 D.3.12. Alteraes na distribuio 4.0.6 (14 Dec 2002: Gamma) ................. 930 D.3.13. Alteraes na distribuio 4.0.5 (13 Nov 2002) ............................. 931 D.3.14. Alteraes na distribuio 4.0.4 (29 Sep 2002) .............................. 934 D.3.15. Alteraes na distribuio 4.0.3 (26 Aug 2002: Beta) ..................... 935 D.3.16. Alteraes na distribuio 4.0.2 (01 Jul 2002) ............................... 937 D.3.17. Alteraes na distribuio 4.0.1 (23 Dec 2001) .............................. 941 D.3.18. Alteraes na distribuio 4.0.0 (Oct 2001: Alpha) ........................ 942 D.4. Alteraes na distribuio 3.23.x (Recent; still supported) ........................... 944 D.4.1. Alteraes na distribuio 3.23.59 (not released yet) ........................ 944 D.4.2. Alteraes na distribuio 3.23.58 (11 Sep 2003) ............................ 945 D.4.3. Alteraes na distribuio 3.23.57 (06 Jun 2003) ............................. 945 D.4.4. Alteraes na distribuio 3.23.56 (13 Mar 2003) ............................ 946 D.4.5. Alteraes na distribuio 3.23.55 (23 Jan 2003) ............................. 947 D.4.6. Alteraes na distribuio 3.23.54 (05 Dec 2002) ............................ 948 D.4.7. Alteraes na distribuio 3.23.53 (09 Oct 2002) ............................ 949 D.4.8. Alteraes na distribuio 3.23.52 (14 Aug 2002) ........................... 950 D.4.9. Alteraes na distribuio 3.23.51 (31 May 2002) ........................... 950 D.4.10. Alteraes na distribuio 3.23.50 (21 Apr 2002) .......................... 951 D.4.11. Alteraes na distribuio 3.23.49 .............................................. 952 D.4.12. Alteraes na distribuio 3.23.48 (07 Feb 2002) ........................... 952 D.4.13. Alteraes na distribuio 3.23.47 (27 Dec 2001) .......................... 953 D.4.14. Alteraes na distribuio 3.23.46 (29 Nov 2001) .......................... 954 D.4.15. Alteraes na distribuio 3.23.45 (22 Nov 2001) .......................... 954 D.4.16. Alteraes na distribuio 3.23.44 (31 Oct 2001) ........................... 955 D.4.17. Alteraes na distribuio 3.23.43 (04 Oct 2001) ........................... 956 D.4.18. Alteraes na distribuio 3.23.42 (08 Sep 2001) ........................... 956 D.4.19. Alteraes na distribuio 3.23.41 (11 Aug 2001) .......................... 957 D.4.20. Alteraes na distribuio 3.23.40 .............................................. 958 D.4.21. Alteraes na distribuio 3.23.39 (12 Jun 2001) ........................... 959 D.4.22. Alteraes na distribuio 3.23.38 (09 May 2001) ......................... 959 D.4.23. Alteraes na distribuio 3.23.37 (17 Apr 2001) .......................... 960 D.4.24. Alteraes na distribuio 3.23.36 (27 Mar 2001) .......................... 961 D.4.25. Alteraes na distribuio 3.23.35 (15 Mar 2001) .......................... 961 D.4.26. Alteraes na distribuio 3.23.34a ............................................. 962 D.4.27. Alteraes na distribuio 3.23.34 (10 Mar 2001) .......................... 962 xiii

Manual de Referncia do MySQL

D.4.28. Alteraes na distribuio 3.23.33 (09 Feb 2001) ........................... 963 D.4.29. Alteraes na distribuio 3.23.32 (22 Jan 2001: Production) ........... 964 D.4.30. Alteraes na distribuio 3.23.31 (17 Jan 2001) ........................... 965 D.4.31. Alteraes na distribuio 3.23.30 (04 Jan 2001) ........................... 965 D.4.32. Alteraes na distribuio 3.23.29 (16 Dec 2000) .......................... 966 D.4.33. Alteraes na distribuio 3.23.28 (22 Nov 2000: Gamma) .............. 968 D.4.34. Alteraes na distribuio 3.23.27 (24 Oct 2000) ........................... 970 D.4.35. Alteraes na distribuio 3.23.26 (18 Oct 2000) ........................... 970 D.4.36. Alteraes na distribuio 3.23.25 (29 Sep 2000) ........................... 971 D.4.37. Alteraes na distribuio 3.23.24 (08 Sep 2000) ........................... 972 D.4.38. Alteraes na distribuio 3.23.23 (01 Sep 2000) ........................... 973 D.4.39. Alteraes na distribuio 3.23.22 (31 Jul 2000) ............................ 974 D.4.40. Alteraes na distribuio 3.23.21 .............................................. 975 D.4.41. Alteraes na distribuio 3.23.20 .............................................. 975 D.4.42. Alteraes na distribuio 3.23.19 .............................................. 976 D.4.43. Alteraes na distribuio 3.23.18 .............................................. 976 D.4.44. Alteraes na distribuio 3.23.17 .............................................. 976 D.4.45. Alteraes na distribuio 3.23.16 .............................................. 977 D.4.46. Alteraes na distribuio 3.23.15 (May 2000: Beta) ...................... 978 D.4.47. Alteraes na distribuio 3.23.14 .............................................. 979 D.4.48. Alteraes na distribuio 3.23.13 .............................................. 979 D.4.49. Alteraes na distribuio 3.23.12 (07 Mar 2000) .......................... 980 D.4.50. Alteraes na distribuio 3.23.11 .............................................. 980 D.4.51. Alteraes na distribuio 3.23.10 .............................................. 981 D.4.52. Alteraes na distribuio 3.23.9 ................................................ 981 D.4.53. Alteraes na distribuio 3.23.8 (02 Jan 2000) ............................. 982 D.4.54. Alteraes na distribuio 3.23.7 (10 Dec 1999) ............................ 983 D.4.55. Alteraes na distribuio 3.23.6 ................................................ 983 D.4.56. Alteraes na distribuio 3.23.5 (20 Oct 1999) ............................ 984 D.4.57. Alteraes na distribuio 3.23.4 (28 Sep 1999) ............................ 985 D.4.58. Alteraes na distribuio 3.23.3 ................................................ 986 D.4.59. Alteraes na distribuio 3.23.2 (09 Aug 1999) ........................... 986 D.4.60. Alteraes na distribuio 3.23.1 ................................................ 987 D.4.61. Alteraes na distribuio 3.23.0 (05 Aug 1999: Alpha) .................. 987 D.5. Alteraes na distribuio 3.22.x (Old; discontinued) ................................. 989 D.5.1. Alteraes na distribuio 3.22.35 ................................................ 989 D.5.2. Alteraes na distribuio 3.22.34 ................................................ 990 D.5.3. Alteraes na distribuio 3.22.33 ................................................ 990 D.5.4. Alteraes na distribuio 3.22.32 (14 Feb 2000) ............................ 990 D.5.5. Alteraes na distribuio 3.22.31 ................................................ 990 D.5.6. Alteraes na distribuio 3.22.30 ................................................ 990 D.5.7. Alteraes na distribuio 3.22.29 (02 Jan 2000) ............................. 991 D.5.8. Alteraes na distribuio 3.22.28 (20 Oct 1999) ............................ 991 D.5.9. Alteraes na distribuio 3.22.27 ................................................ 991 D.5.10. Alteraes na distribuio 3.22.26 (16 Sep 1999) ........................... 991 D.5.11. Alteraes na distribuio 3.22.25 .............................................. 992 D.5.12. Alteraes na distribuio 3.22.24 (05 Jul 1999) ............................ 992 D.5.13. Alteraes na distribuio 3.22.23 (08 Jun 1999) ........................... 992 D.5.14. Alteraes na distribuio 3.22.22 (30 Apr 1999) .......................... 993 D.5.15. Alteraes na distribuio 3.22.21 .............................................. 993 D.5.16. Alteraes na distribuio 3.22.20 (18 Mar 1999) .......................... 993 D.5.17. Alteraes na distribuio 3.22.19 (Mar 1999: Production) .............. 993 D.5.18. Alteraes na distribuio 3.22.18 .............................................. 994 D.5.19. Alteraes na distribuio 3.22.17 .............................................. 994 D.5.20. Alteraes na distribuio 3.22.16 (Feb 1999: Gamma) .................. 994 D.5.21. Alteraes na distribuio 3.22.15 .............................................. 994 D.5.22. Alteraes na distribuio 3.22.14 .............................................. 995 D.5.23. Alteraes na distribuio 3.22.13 .............................................. 995 D.5.24. Alteraes na distribuio 3.22.12 .............................................. 995 D.5.25. Alteraes na distribuio 3.22.11 .............................................. 996 D.5.26. Alteraes na distribuio 3.22.10 .............................................. 996 D.5.27. Alteraes na distribuio 3.22.9 ................................................ 997 D.5.28. Alteraes na distribuio 3.22.8 ................................................ 998 xiv

Manual de Referncia do MySQL

D.5.29. Alteraes na distribuio 3.22.7 (Sep 1998: Beta) ......................... 998 D.5.30. Alteraes na distribuio 3.22.6 ................................................ 999 D.5.31. Alteraes na distribuio 3.22.5 ................................................ 999 D.5.32. Alteraes na distribuio 3.22.4 .............................................. 1001 D.5.33. Alteraes na distribuio 3.22.3 .............................................. 1001 D.5.34. Alteraes na distribuio 3.22.2 .............................................. 1001 D.5.35. Alteraes na distribuio 3.22.1 (Jun 1998: Alpha) ..................... 1002 D.5.36. Alteraes na distribuio 3.22.0 .............................................. 1003 D.6. Alteraes na distribuio 3.21.x .......................................................... 1004 D.6.1. Alteraes na distribuio 3.21.33 .............................................. 1004 D.6.2. Alteraes na distribuio 3.21.32 .............................................. 1004 D.6.3. Alteraes na distribuio 3.21.31 .............................................. 1005 D.6.4. Alteraes na distribuio 3.21.30 .............................................. 1005 D.6.5. Alteraes na distribuio 3.21.29 .............................................. 1006 D.6.6. Alteraes na distribuio 3.21.28 .............................................. 1006 D.6.7. Alteraes na distribuio 3.21.27 .............................................. 1006 D.6.8. Alteraes na distribuio 3.21.26 .............................................. 1006 D.6.9. Alteraes na distribuio 3.21.25 .............................................. 1007 D.6.10. Alteraes na distribuio 3.21.24 ............................................ 1007 D.6.11. Alteraes na distribuio 3.21.23 ............................................ 1007 D.6.12. Alteraes na distribuio 3.21.22 ............................................ 1008 D.6.13. Alteraes na distribuio 3.21.21a ........................................... 1009 D.6.14. Alteraes na distribuio 3.21.21 ............................................ 1009 D.6.15. Alteraes na distribuio 3.21.20 ............................................ 1009 D.6.16. Alteraes na distribuio 3.21.19 ............................................ 1009 D.6.17. Alteraes na distribuio 3.21.18 ............................................ 1009 D.6.18. Alteraes na distribuio 3.21.17 ............................................ 1010 D.6.19. Alteraes na distribuio 3.21.16 ............................................ 1010 D.6.20. Alteraes na distribuio 3.21.15 ............................................ 1011 D.6.21. Alteraes na distribuio 3.21.14b ........................................... 1011 D.6.22. Alteraes na distribuio 3.21.14a ........................................... 1011 D.6.23. Alteraes na distribuio 3.21.13 ............................................ 1012 D.6.24. Alteraes na distribuio 3.21.12 ............................................ 1012 D.6.25. Alteraes na distribuio 3.21.11 ............................................ 1013 D.6.26. Alteraes na distribuio 3.21.10 ............................................ 1014 D.6.27. Alteraes na distribuio 3.21.9 .............................................. 1014 D.6.28. Alteraes na distribuio 3.21.8 .............................................. 1014 D.6.29. Alteraes na distribuio 3.21.7 .............................................. 1015 D.6.30. Alteraes na distribuio 3.21.6 .............................................. 1015 D.6.31. Alteraes na distribuio 3.21.5 .............................................. 1015 D.6.32. Alteraes na distribuio 3.21.4 .............................................. 1016 D.6.33. Alteraes na distribuio 3.21.3 .............................................. 1016 D.6.34. Alteraes na distribuio 3.21.2 .............................................. 1017 D.6.35. Alteraes na distribuio 3.21.0 .............................................. 1018 D.7. Alteraes na distribuio 3.20.x .......................................................... 1019 D.7.1. Alteraes na distribuio 3.20.18 .............................................. 1019 D.7.2. Alteraes na distribuio 3.20.17 .............................................. 1019 D.7.3. Alteraes na distribuio 3.20.16 .............................................. 1020 D.7.4. Alteraes na distribuio 3.20.15 .............................................. 1021 D.7.5. Alteraes na distribuio 3.20.14 .............................................. 1021 D.7.6. Alteraes na distribuio 3.20.13 .............................................. 1021 D.7.7. Alteraes na distribuio 3.20.11 .............................................. 1022 D.7.8. Alteraes na distribuio 3.20.10 .............................................. 1022 D.7.9. Alteraes na distribuio 3.20.9 ................................................ 1023 D.7.10. Alteraes na distribuio 3.20.8 .............................................. 1023 D.7.11. Alteraes na distribuio 3.20.7 .............................................. 1023 D.7.12. Alteraes na distribuio 3.20.6 .............................................. 1023 D.7.13. Alteraes na distribuio 3.20.3 .............................................. 1025 D.7.14. Alteraes na distribuio 3.20.0 .............................................. 1025 D.8. Alteraes na distribuio 3.19.x .......................................................... 1026 D.8.1. Alteraes na distribuio 3.19.5 ................................................ 1026 D.8.2. Alteraes na distribuio 3.19.4 ................................................ 1026 D.8.3. Alteraes na distribuio 3.19.3 ................................................ 1027 xv

Manual de Referncia do MySQL

E. Portando para Outros Sistemas ........................................................................ 1028 E.1. Depurando um Servidor MySQL .......................................................... 1029 E.1.1. Compilando o MYSQL para Depurao ....................................... 1029 E.1.2. Criando Arquivos Trace (Rastreamento) ...................................... 1030 E.1.3. Depurando o mysqld no gdb ...................................................... 1030 E.1.4. Usando Stack Trace ................................................................. 1031 E.1.5. Usando Arquivos de Log para Encontrar a Causa dos Erros no mysqld 1032 E.1.6. Fazendo um Caso de Teste Se Ocorre um Corrompimento de Tabela . 1033 E.2. Depurando um cliente MySQL. ............................................................ 1034 E.3. O Pacote DBUG ................................................................................ 1034 E.4. Mtodos de Lock ............................................................................... 1036 E.5. Comentrios Sobre Threads RTS .......................................................... 1037 E.6. Diferena en Entre Alguns Pacotes de Threads ........................................ 1038 F. Variveis de Ambientes do MySQL ................................................................. 1040 G. Sintaxe de Expresses Regulares do MySQL ..................................................... 1041 H. GPL - Licena Pblica Geral do GNU .............................................................. 1044 ndice Remissivo ............................................................................................. 1049

xvi

PrefaceEste o Manual de Referncia para o Sistema de Banco de Dados MySQL. Este verso se refere a verso 5.0.6-beta do MySQL Server mas tambm se aplica a verses mais antigas (tais como 3.23 e 4.0-produo) j que as alteraes so sempre indicadas. Tambm h referncia a verso 5.0 (desenvolvimento).

xvii

Captulo 1. Informaes GeraisO programa MySQL (R) um servidor robusto de bancos de dados SQL (Structured Query Language - Linguagem Estruturada para Pesquisas) muito rpido, multi-tarefa e multi-usurio. O Servidor MySQL pode ser usado em sistemas de produo com alta carga e misso crtica bem como pode ser embutido em programa de uso em massa. MySQL uma marca registrada da MySQL AB. O programa MySQL de Licena Dupla. Os usurios podem escolher entre usar o programa MySQL como um produto Open Source/Free Software sob os termos da GNU General Public License (http://www.fsf.org/licenses/) ou podem comprar uma licena comercial padro da MySQL AB. See Seco 1.4, Suporte e Licenciamento do MySQL. O site web do MySQL (http://www.mysql.com/) dispe das ltimas informaes sobre o programa MySQL. A seguinte lista descreve algumas sees de particular interesse neste manual: Para informaes sobre a empresa por trs do Servidor do Banco de Dados MySQL, veja Seco 1.3, Viso Geral da MySQL AB. Para discusses das capacidades do Servidor do Banco de Dados MySQL, veja Seco 1.2.2, As Principais Caractersticas do MySQL. Para instrues de instalao, veja Captulo 2, Instalao do MySQL. Para dicas sobre a portabilidade do Servidor do Banco de Dados MySQL para novas arquiteturas ou sistemas operacionais, veja Apndice E, Portando para Outros Sistemas. Para informaes sobre a atualizao da verso 4.0, veja Seco 2.5.1, Atualizando da Verso 4.0 para 4.1. Para informaes sobre a atualizao da verso 3.23, veja Seco 2.5.2, Atualizando da Verso 3.23 para 4.0. Para informaes sobre a atualizao da verso 3.22, veja Seco 2.5.3, Atualizando da verso 3.22 para 3.23. Para um tutorial de introduo ao Servidor do Banco de Dados MySQL, veja Captulo 3, Tutorial de Introduo Do MySQL. Para exemplos de SQL e informaes sobre benchmarks, veja o diretrio de benchmarks (sqlbench na distribuio). Para o histrico de novos recursos e correes de erros, veja Apndice D, Histrico de Alteraes do MySQL. Para uma lista de erros atualmente conhecidos e mal-funcionamento, veja Seco 1.8.6, Erros Conhecidos e Deficincias de Projetos no MySQL. Para projetos futuros, veja Seco 1.6, MySQL e o Futuro (o TODO). Para ver a lista de todos os colaboradores deste projeto, veja Apndice C, Colaboradores do MySQL.

Importante: Relatrios de erros (tambm chamados bugs), bem como dvidas e comentrios, devem ser enviados para a lista de email geral do MySQL. See Seco 1.7.1.1, As Listas de Discusso do MySQL. See Seco 1.7.1.3, Como relatar erros ou problemas. 1

Informaes Gerais

O script mysqlbug deve ser usado para gerar comunicados de erros no Unix. (A distribuio do Windows contm um arquivo mysqlbug.txt no diretrio base que pode ser usado como um template para um relatrio de erro. Em distribuies fonte, o script mysqlbug pode ser encontrado no diretrio scripts. Para distribuies binrias, o mysqlbug pode ser encontrado no diretrio bin (/usr/bin para o pacote RMP do servidor MySQL. Se voc encontrou um erro de segurana no Servidor MySQL, voc deve enviar um email para .

1.1. Sobre Este ManualEste o manual de referncia MySQL; ele documenta o MySQL at a verso 5.0.6-beta. Mudanas funcionais so sempre indicadas com referncia a verso, assim este manual tambm pode ser utilizado caso voc esteja utilizando uma verso mais antiga do MySQL (como 3.23 ou 4.0-produo). Tambm a referncias a verso 5.0 (desenvolvimento). Sendo um manual de referncia, ele no fornece instrues gerais sobre SQL ou conceitos de banco de dados relacionais. Como o Programa da Banco de Dados MySQL est sob constante desenvolvimento, o manual tambm atualizado freqentemente. A verso mais recente deste manual est disponvel em http://www.mysql.com/documentation/ em diferentes formatos, incluindo HTML, PDF, e verses HLP do Windows. O documento original uma arquivo Texinfo. A verso HTML produzida automaticamente usando uma verso modificada do texi2html. A verso texto e Info so produzidas com makeinfo. A verso PostScript produzida usando texi2dvi e dvips. A verso PDF produzida com pdftex. Se voc tiver dificuldades de encontrar informaes no manual, voc pode tentar nossa verso com busca em http://www.mysql.com/doc/. Se voc tiver qualquer sugesto a respeito de adies e correes neste manual, por favor envie-os para a equipe de documentao em . Este manual foi inicialmente escrito por David Axmark e Michael (Monty) Widenius. Atualmente mantido pela Equipe de Documentao da MySQL, que conta com Arjen Lentz, Paul DuBois e Stefan Hinz. Para outros colaboradores, veja Apndice C, Colaboradores do MySQL. A traduao deste manual foi feita por Daniel Coelho Teobaldo e Carlos Henrique Paulino sob a superviso da EAC Software. Os direitos autorais (2003) deste manual pertence a compania Sueca MySQL AB. See Seco 1.4.2, Copyrights e Licenas Usadas pelo MySQL.

1.1.1. Convenes Usadas Neste ManualEste manual utiliza algumas convenes tipogrficas: constant Fonte de largura fixa usada para nomes de comandos e opes; instrues SQL; nomes de bancos de dados, tabelas e colunas; cdigo C e Perl; e variveis de ambiente. Exemplo: ``Para ver como o mysqladmin funciona, execute-o com a opo --help.'' filename Fonte de largura fixa com aspas usada para nomes e caminhos de arquivos. Exemplo: ``A distribuio instalada sobre o diretrio /usr/local.'' 2

Informaes Gerais

c Fonte de largura constante com aspas tambm usada para indicar sequncias de caracteres. Exemplo: ``Para especificar um meta caracter, use o caractere %.''

italic Fonte Itlica usada para dar nfase, como aqui.

boldface Fonte em negrito usada em cabealhos de tabela e indicar nfase especial.

Quando um comando deve ser executado por um programa, ele indicado por um prompt antes do comando. Por exemplo, shell> indica um comando que executado do seu shell atual e mysql> indica um comando que executado no programa cliente mysql; shell> digite um comando shell aqui mysql> digite um comando mysql aqui A ``shell'' seu interpretador de comando. No Unix, ele normalmente um programa como sh ou csh. No Windows, o equivalente o command.com ou cmd.exe, normalmente executado como um console do Windows. Comandos Shell so mostrados usando a sintaxe do Shell Bourne. Se voc usa um shell do estilo csh, pode ser necessrio alterar algum de seus comandos. Por exemplo, a sequncia para configurar uma varivel de ambiente e executar um comando se parece com o listado abaixo na sintaxe Bourne Shell: shell> NOMEVAR=valor algum_comando Para csh ou tcsh, execute a sequncia desta forma: shell> setenv NOMEVAR valor shell> algum_comando Frequentemente, nomes de bancos de dados, tabelas e colunas devem ser substitudos nos comandos. Para indicar que as substituies so necessrias, este manual usa nome_db, nome_tbl e nome_col. Por exemplo, voc pode encontrar uma expresso assim: mysql> SELECT nome_col FROM nome_bd.nome_tbl; Isso significa que se voc estiver trabalhando numa expresso similar, forneceria seu prprio nome de banco de dados, tabela e colunas, talvez assim: mysql> SELECT nome_autor FROM biblio_bd.lista_autor; SQL keywords no caso sensitivas e podem ser escritas em maiscula ou minscula. Este manual utiliza letras maisculas. Em descries de sintaxe, colchetes ([ e ]) so usados para indicar palavras ou clusulas opcionais. Por exemplo, na seguinte instruo, IF EXISTS opcional: DROP TABLE [IF EXISTS] nome_tbl Quando elementos da sintaxe possuem mais de uma alternativa, elas so separados por barras verticais (|). Quando um menbro de um conjunto de opes pode ser escolhido, as alternativas so listadas em colchetes ([ e ]): 3

Informaes Gerais

TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str) Quando um membro de um conjunto de opes deve ser selecionado, as alternativas so listadas dentro de chaves ({ e }): {DESCRIBE | DESC} nome_tbl {nome_col | metacar}

1.2. Viso Geral do Sistema de Gerenciamento de Banco de Dados MySQLMySQL, o mais popular sistema de gerenciamento de banco de dados SQL Open Source, desenvolvido, distribudo e tem suporte da MySQL AB. A MySQL AB uma empresa comercial, fundada pelos desenvolvedores do MySQL, cujos negcios fornecer servios relacionados ao sistema de gerenciamento de banco de dados MySQL. See Seco 1.3, Viso Geral da MySQL AB. O web site do MySQL (http://www.mysql.com/) fornece informaes mais recentes sobre e programa MySQL e a MySQL AB. O MySQL um sistema de gerenciamento de bancos de dados. Um banco de dados uma coleo de dados estruturados. Ele pode ser qualquer coisa desde uma simples lista de compras a uma galeria de imagens ou a grande quantidade de informao da sua rede coorporativa. Para adicionar, acessar, e processar dados armazenados em um banco de dados de um computador, voc necessita de um sistema de gerenciamento de bancos de dados como o Servidor MySQL. Como os computadores so muito bons em lidar com grandes quantidades de dados, o gerenciamento de bancos de dados funciona como a engrenagem central na computao, seja como utilitrios independentes ou como partes de outras aplicaes. O MySQL um sistema de gerenciamento de bancos de dados relacional. Um banco de dados relacional armazena dados em tabelas separadas em vez de colocar todos os dados um s local. Isso proporciona velocidade e flexibilidade. A parte SQL do ``MySQL'' atenda pela ``Structured Query Language - Linguagem Estrutural de Consultas''. SQL linguagem padro mais comum usada para acessar banco de dados e definida pelo Padro ANSI/ISO SQL. (O padro SQL est vem evoluindo desde 1986 e existem diversas verses. Neste manual, ''SQL-92'' se refere ao padro liberado em 1992, ''SQL-99'' se refere ao padro liberado em 1999, e ''SQL:2003'' se refere a verso do que esperamos que seja liberado no meio de 2003. Ns usamos o termo ''o padro SQL'' indicando a verso atual do Padro SQL em qualquer momento). O MySQL um software Open Source. Open Source significa que possvel para qualquer um usar e modificar o programa. Qualquer pessoa pode fazer download do MySQL pela Internet e us-lo sem pagar nada. Se voc quiser, voc pode estudar o cdigo fonte e alter-lo para adequ-lo s suas necessidades. O MySQL usa a GPL (GNU General Public License - Licena Pblica Geral GNU) http://www.fsf.org/licenses, para definir o que voc pode e no pode fazer com o software em diferentes situaes. Se voc sentir desconforto com a GPL ou precisar embutir o MySQL em uma aplicao comercial voc pode adquirir a verso comercial licenciada conosco. See Seco 1.4.3, Licenas do MySQL. Por que usar o Banco de Dados MySQL? O servidor de banco de dados MySQL extremamente rpido, confivel, e fcil de usar. Se isto o que voc est procurando, voc deveria experiment-lo. O Servidor MySQL tambm tem um conjunto de recursos muito prticos desenvolvidos com a cooperao de nossos 4

Informaes Gerais

usurios. Voc pode encontrar comparativos de performance do Servidor MySQL com outros gerenciadores de bancos de dados na nossa pgina de benchmark See Seco 5.1.4, O Pacote de Benchmark do MySQL. O Servidor MySQL foi desenvolvido originalmente para lidar com bancos de dados muito grandes de maneira muito mais rpida que as solues existentes e tem sido usado em ambientes de produo de alta demanda por diversos anos de maneira bem sucedida. Apesar de estar em constante desenvolvimento, o Servidor MySQL oferece hoje um rico e proveitoso conjunto de funes. A conectividade, velocidade, e segurana fazem com que o MySQL seja altamente adaptvel para acessar bancos de dados na Internet. As caractersticas tcnicas do MySQL Para informaes tcnicas avanadas, veja Captulo 6, Referncia de Linguagem do MySQL. O Programa de Banco de Dados MySQL um sistema cliente/servidor que consiste de um servidor SQL multi-tarefa que suporta acessos diferentes, diversos programas clientes e bibliotecas, ferramentas administrativas e diversas interfaces de programao (API's). Tambm concedemos o Servidor MySQL como uma biblioteca multi-tarefa que voc pode ligar sua aplicao para chegar a um produto mais rpido, menor e mais fcilmente gerencivel. MySQL tem muitos softwares de colaboradores disponvel. bem provvel que sua aplicao ou linguagem favorita j suporte o Servidor de Banco de Dados MySQL. A pronncia oficial do MySQL ``Mai Ess Que Ell'' (e no MAI-SEQUEL). Mas ns no ligamos se voc pronunciar MAI-SEQUEL ou de outra forma qualquer.

1.2.1. Histria do MySQLQuando comeamos, tnhamos a inteno de usar o mSQL para conectar s nossas tabelas utilizando nossas rpidas rotinas de baixo nvel (ISAM). Entretanto, depois de alguns testes, chegamos a concluso que o mSQL no era rpido e nem flexvel o suficiente para nossas necessidades. Isto resultou em uma nova interface SQL para nosso banco de dados, mas com praticamente a mesma Interface API do mSQL. Esta API foi escolhida para facilitar a portabilidade para cdigos de terceiros que era escrito para uso com mSQL para ser portado facilmente para uso com o MySQL. A derivao do nome MySQL no bem definida. Nosso diretrio base e um grande nmero de nossas bibliotecas e ferramentas sempre tiveram o prefixo ``my'' por pelo menos 10 anos. A filha de Monty tambm ganhou o nome My. Qual das duas originou o nome do MySQL continua sendo um mistrio, mesmo para ns. O nome do golfinho do MySQL (nosso logo) Sakila. Sakila foi escolhido pelos fundadores da MySQL AB de uma enorme lista de nomes sugeridos pelos usurios em nosso concurso "Name the Dolphin". O nome vencedor foi enviado por Ambrose Twebaze, um desenvolvedor de programas open source de Swaziland, Africa. De acordo com Ambrose, o nome Sakila tem as suas razes em SiSwati, a lngua local de Swaziland. Sakila tambm o nome de uma cidade em Arusha, Tanzania, prxima ao pas de orgem de Ambrose, Uganda.

1.2.2. As Principais Caractersticas do MySQLA seguinte lista descreve algumas das caractersticas mais importantes do Progrma de Banco de Dados MySQL. See Seco 1.5.1, MySQL 4.0 in a Nutshell. Portabilidade e Escrito em C e C++.

5

Informaes Gerais

Testado com um amplo faixa de compiladores diferentes. Funciona em diversas plataformas. See Seco 2.2.3, Sistemas Operacionais suportados pelo MySQL. Utiliza o GNU Automake, Autoconf, e Libtool para portabilidade. APIs para C, C++, Eiffel, Java, Perl, PHP, Python, Ruby e Tcl esto disponveis. See Captulo 12, Ferramentas de Clientes e APIs do MySQL. Suporte total a multi-threads usando threads diretamente no kernel. Isto significa que se pode facilmente usar mltiplas CPUs, se disponvel. Fornece mecanismos de armazenamento transacional e no transacional. Tabelas em disco (MyISAM) baseadas em rvores-B extremamente rpidas com compresso de ndices. relativamente fcil se adicionar outro mecanismo de armazenamento. Isto til se voc quiser adicionar uma interface SQL a um banco de dados caseiro. Um sistema de alocao de memria muito rpido e baseado em processo(thread). Joins muito rpidas usando uma multi-join de leitura nica otimizada. Tabelas hash em memria que so usadas como tabelas temporrias. Funes SQL so implementadas por meio de uma biblioteca de classes altamente otimizada e com o mximo de performance. Geralmente no h nenhuma alocao de memria depois da inicializao da pesquisa. O cdigo do MySQL foi testado com Purify (um detector comercial de falhas de memria) e tambm com o Valgrind, uma ferramenta GPL (http://developer.kde.org/~sewardj/). Disponvel como verso cliente/servidor ou embutida(ligada).

Tipos de Coluna Aceita diversos tipos de campos: tipos inteiros de 1, 2, 3, 4 e 8 bytes com e sem sinal, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET e ENUM. See Seco 6.2, Tipos de Campos. Registros de tamanhos fixos ou variveis.

Comandos e Funes Completo suporte a operadores e funes nas partes SELECT e WHERE das consultas. Por exemplo: mysql> SELECT CONCAT(first_name, " ", last_name) -> FROM nome_tbl -> WHERE income/dependents > 10000 AND age > 30; Suporte pleno s clusulas SQL GROUP BY e ORDER BY. Suporte para funes de agrupamento (COUNT(), COUNT(DISTINCT ...), AVG(), STD(), SUM(), MAX() e MIN()). Suporte para LEFT OUTER JOIN e RIGHT OUTER JOIN com as sintaxes SQL e ODBC. Alias em tabelas e colunas so disponveis como definidos no padro SQL92. DELETE, INSERT, REPLACE, e UPDATE retornam o nmero de linhas que foram alteradas 6

Informaes Gerais

(afetadas). possvel retornar o nmero de linhas com padro coincidentes configurando um parmetro quando estiver conectando ao servidor. O comando especfico do MySQL SHOW pode ser usado para devolver informaes sobre bancos de dados, tabelas e ndices. O comando EXPLAIN pode ser usado para determinar como o otimizador resolve a consulta. Nomes de funes no conflitam com nomes de tabelas ou colunas. Por exemplo, ABS um nome de campo vlido. A nica restrio que para uma chamada de funo, espaos no so permitidos entre o nome da funo e o ( que o segue. See Seco 6.1.7, Tratamento de Palavras Reservadas no MySQL. Voc pode misturar tabelas de bancos de dados diferentes na mesma pesquisa (como na verso 3.22).

Segurana Um sistema de privilgios e senhas que muito flexvel, seguro e que permite verificao baseada em estaes/mquinas. Senhas so seguras porque todo o trfico de senhas criptografado quando voc se conecta ao servidor.

Escalabilidade e limites Lida com bancos de dados enormes. Usamos o Servidor MySQL com bancos de dados que contm 50.000.000 registros e sabemos de usurios que usam o Servidor MySQL com 60.000 tabelas e aproximadamente 5.000.000.000 de linhas. So permitidos at 32 ndices por tabela. Cada ndice pode ser composto de 1 a 16 colunas ou partes de colunas. O tamanho mximo do ndice de 500 bytes (isto pode ser alterado na compilao do MySQL). Um ndice pode usar o prefixo de campo com um tipo CHAR ou VARCHAR.

Conectividade Os clientes podem se conectar ao servidor MySQL usando sockets TCP/IP, em qualquer plataforma. No sistema Windows na famlia NT (NT, 2000 ou XP), os clientes podem se conectar usando named pipes. No sistema Unix, os clientes podem se conectar usando arquivos sockets. A interface Connector/ODBC fornece ao MySQL suporte a progras clientes que usam conexo ODBC (Open-DataBase-Connectivity). Por exemplo, voc pode usar o MS Access para conectar ao seu servidor MySQL. Os clientes podem ser executados no Windows ou Unix. O fonte do Connector/ODBC est disponvel. Todas as funes ODBC so suportadas, assim como muitas outras. See Seco 12.2, Suporte ODBC ao MySQL.

Localizao O servidor pode apresentar mensagem de erros aos clientes em vrias lnguas. See Seco 4.7.2, Mensagens de Erros em Outras Lnguas. Suporte total para vrios conjuntos de caracteres, que incluem ISO-8859-1 (Latin1), big5, ujis e mais. Por exemplo, os caracteres Escandinavos , , so permitidos em nomes de tabelas e colunas. Todos os dados so armazenados no conjunto de caracteres escolhido. Todas as comparaes em colunas de seqncias caso-insensitivo. A ordenao feita de acordo com o conjunto de caracteres escolhido (o modo sueco por padro). possvel alterar isso quando o servidor MySQL iniciado. Para ver um exemplo de vrias ordenaes avanadas, procure pelo cdigo de ordenao Tcheca. O Servidor MySQL suporta diversos conjuntos de caracteres que podem ser especificados em tempo de 7

Informaes Gerais

compilao e execuo. Clientes e Ferramentas O servidor MySQL foi construdo com suporte para instrues SQL