manual My SQL

manual My SQL

(Parte 1 de 4)

MySQL Reference Manual Copyright c© 1997-2003 MySQL AB

1 Informacoes Gerais1
1.1 Sobre Este Manual2
1.1.1 Convencoes Usadas Neste Manual2
MySQL3
1.2.1 Historia do MySQL5
1.2.2 As Principais Caracteristicas do MySQL5
1.2.3 Estabilidade do MySQL8
Ter?9
1.2.5 Compatibilidade Com o Ano 2000 (Y2K)1
1.3 Visao Geral da MySQL AB12
1.3.1.1 Suporte13
1.3.1.2 Treinamento e Certificacao13
1.3.1.3 Consultoria14
1.3.1.4 Licencas Comerciais14
1.3.1.5 Parcerias15
1.3.2 Informacoes para Contato15
1.4 Suporte e Licenciamento do MySQL16
1.4.1 Suporte Oferecido pela MySQL AB16
1.4.2 Copyrights e Licencas Usadas pelo MySQL17
1.4.3 Licencas do MySQL18
Licenca Comercial18
Sob GPL19
19
1.4.4.1 O Logo Original do MySQL20
Usadas Sem Permissao de Alteracao20

Sumario 1.2 Visao Geral do Sistema de Gerenciamento de Banco de Dados 1.2.4 Qual o Tamanho Que as Tabelas do MySQL Podem 1.3.1 O Modelo de Negocio e Servicos da MySQL AB.. 13 1.4.3.1 Usando o Programa MySQL Sob uma 1.4.3.2 Usando o Programa MySQL Sem Custo 1.4.4 Logomarcas e Marcas Registradas da MySQL AB 1.4.4.2 Logomarcas da MySQL que Podem Ser 1.4.4.3 Quando Voce Precisa de Permissao de

20
21
ou Apresentacao21
Companhias e Produtos21
1.5 Mapa de Desenvolvimento do MySQL21
1.5.1.1 Recursos Disponiveis no MySQL 4.02
1.5.1.2 Servidor Embutido MySQL23
1.5.2 MySQL 4.1 in a Nutshell24
1.5.2.1 Recursos Disponiveis no MySQL 4.124
1.5.2.2 Stepwise Rollout26
Imediato26
Desenvolvimento26
1.6 MySQL e o Futuro (o TODO)26
1.6.1 Novos Recursos Planejados Para a Versao 4.126
1.6.2 Novos Recursos Planejados Para a Versao 5.027
1.6.3 Novos Recursos Planejados Para a Versao 5.128
Futuro Proximo28
Futuro a Medio Prazo31
1.6.6 Novos Recursos que Nao Planejamos Fazer32
1.7 Fontes de Informacoes do MySQL3
1.7.1 Listas de Discussao MySQL3
1.7.1.1 As Listas de Discussao do MySQL3
1.7.1.2 Fazendo perguntas ou relatando erros35
1.7.1.3 Como relatar erros ou problemas36
discussao41
(Internet Relay Chat)41
1.8 Qual compatibilidade aos padroes o MySQL oferece ?41
1.8.1 Qual Padrao o MySQL Segue?42
1.8.2 Executando o MySQL no modo ANSI42
1.8.3 Extensoes do MySQL para o Padrao SQL-9243
SQL-9245
1.8.4.1 Subqueries46
1.8.4.2 SELECT INTO TABLE46
1.8.4.3 Transacoes e Operacoes Atomicas46
1.8.4.4 Stored Procedures e Triggers49
1.8.4.5 Chaves Estrangeiras49
1.8.4.6 Views51
1.8.4.7 ‘--’ como Inicio de Comentario51
1.8.5 Como o MySQL Lida com Restricoes52
52
1.8.5.2 Restricoes de NOT NULL53
1.8.5.3 Restricoes de ENUM e SET53

i 1.5.2.3 Pronto para Uso em Desenvolvimento 1.5.3 MySQL 5.0, A Proxima Distribuicao de 1.6.4 Novos Recursos Planejados Para a Versao em um 1.6.5 Novos Recursos Planejados Para a Versao em um 1.7.1.4 Guia para responder questoes na lista de 1.7.2 Suporte a Comunidade MySQL Atrves do IRC 1.8.4 Diferencas do MySQL em Comparacao com o 1.8.5.1 Restricoes de PRIMARY KEY / UNIQUE 1.8.6 Erros Conhecidos e Deficiencias de Projetos no MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Posteriores do MySQL53
MySQL54
2 Instalacao do MySQL60
2.1 Instalacao rapida padrao do MySQL60
2.1.1 Instalando o MySQL no Windows60
2.1.1.1 Exigencias do Sistema Windows61
Windows61
Windows62
2.1.1.4 Selecionando um Servidor Windows63
Me65
ou XP65
2.1.1.8 Executando o MySQL no Windows68
2.1.2 Instalando o MySQL no Linux69
2.1.3 Instalando o MySQL no Mac OS X71
2.1.4 Instalando o MySQL no NetWare73
NetWare74
2.2 Detalhes Gerais de Instalacao75
2.2.1 Como obter o MySQL75
Checksums ou GnuPG75
2.2.3 Sistemas Operacionais suportados pelo MySQL78
2.2.4 Qual versao do MySQL deve ser usada80
2.2.5 Layouts de Instalacao83
2.2.6 Como e quando as atualizacoes sao lancadas?84
Conhecidos nas Distribuicoes84
2.2.8 Binarios MySQL compilados pela MySQL AB86
2.3 Instalando uma distribuicao com fontes do MySQL93
2.3.1 Visao geral da instalacao rapida94
2.3.2 Aplicando patches97
2.3.3 Opcoes tipicas do configure97
100
2.3.5 Lidando com Problemas de Compilacao103
2.3.6 Notas MIT-pthreads106
107

1.8.6.1 Erros da Versao 3.23 Corrigidos em Versoes 1.8.6.2 Open Bugs / Deficiencias de Projeto no 2.1.1.2 Instalando uma Distribuicao Binaria do 2.1.1.3 Preparando o Ambiente MySQL do 2.1.1.5 Iniciando o Servidor pela Primeira Vez.. 64 2.1.1.6 Iniciando o MySQL no Windows 95, 98, ou 2.1.1.7 Iniciando o MySQL no Windows NT, 2000, 2.1.4.1 Instalando o MySQL para Binarios do 2.2.2 Verificando a Integridade do Pacote Usando MD5 2.2.7 Filosofia das Distribuicoes - Nenhum Bug 2.2.9 Instalando uma Distribuicao Binaria do MySQL.. 91 2.3.4 Instalando pela arvore de fontes do desenvolvimento 2.3.7 Instalando o MySQL a partir do Fonte no Windows 2.3.7.1 Construindo o MySQL Usando VC++.. 108

110
2.4 Configuracoes e Testes Pos-instalacao1
2.4.1 Problemas Executando o mysql_install_db115
2.4.2 Problemas Inicializando o Servidor MySQL116
118
2.5 Atualizando/Desatualizando o MySQL120
2.5.1 Atualizando da Versao 4.0 para 4.1120
2.5.2 Atualizando da Versao 3.23 para 4.0123
2.5.3 Atualizando da versao 3.2 para 3.23126
2.5.4 Atualizando da versao 3.21 para 3.2128
2.5.5 Atualizando da versao 3.20 para 3.21129
2.5.6 Atualizando a Tabela de Permissoes130
2.5.7 Atualizando para outra arquitetura130
2.5.8 Atualizando o MySQL no Windows132
2.6 Notas especificas para os Sistemas Operacionais132
2.6.1 Notas Windows132
a Windows Utilizando SSH133
no Win32133
134
MySQL para Unix134
2.6.2 Notas Linux (Todas as versoes)137
141
2.6.2.2 Notas Linux x86142
2.6.2.3 Notas Linux SPARC143
2.6.2.4 Notas Linux Alpha143
2.6.2.5 Notas Linux PowerPC144
2.6.2.6 Notas Linux MIPS144
2.6.2.7 Notas Linux IA-64144
2.6.3 Notas Solaris144
2.6.3.1 Notas Solaris 2.7/2.8147
2.6.3.2 Notas Solaris x86148
2.6.4 Notas BSD149
2.6.4.1 Notas FreeBSD149
2.6.4.2 Notas NetBSD150
2.6.4.3 Notas OpenBSD150
2.6.4.4 Notas OpenBSD 2.8151
2.6.4.5 Notas BSDI Versao 2.x151
2.6.4.6 Notas BSD/OS Versao 3.x151
2.6.4.7 Notas BSD/OS Versao 4.x152

2.3.7.2 Criando um Pacote Fonte do Windows a partir da Ultima Fonte de Desenvolvimento 2.4.3 Inicializando e parando o MySQL automaticamente. 2.6.1.1 Conectando em um MySQL Rematamente 2.6.1.2 Distribuindo Dados Entre Diferentes Discos 2.6.1.3 Compilando clientes MySQL no Windows 2.6.1.4 MySQL para Windows Comparado com o 2.6.2.1 Notas Linux para distribuicoes binarias 2.6.5 Notas Mac OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

2.6.5.1 Mac OS X 10.x152
2.6.5.2 Mac OS X Server 1.2 (Rhapsody)153
2.6.6 Notas de Outros Unix153
153
2.6.6.2 Notas HP-UX Versao 10.20154
2.6.6.3 Notas HP-UX Versao 1.x154
2.6.6.4 Notas IBM-AIX155
2.6.6.5 Notas SunOS 4157
2.6.6.6 Notas Alpha-DEC-UNIX (Tru64)157
2.6.6.7 Notas Alpha-DEC-OSF1159
2.6.6.8 Notas SGI Irix160
2.6.6.9 Notas SCO161
2.6.6.10 Notas SCO Unixware Version 7.0163
2.6.7 Notas OS/2163
2.6.8 Notas Novell NetWare164
2.6.9 Notas BeOS164
2.7 Comentarios de Instalacao do Perl165
2.7.1 Instalando Perl no Unix165
2.7.2 Instalaando ActiveState Perl no Windows166
2.7.3 Problemas Usando a Interface Perl DBI/DBD166
3 Tutorial de Introducao Do MySQL169
3.1 Conectando e Desconectando do Servidor169
3.2 Fazendo Consultas170
3.3 Criacao e Utilizacao de um Banco de Dados173
3.3.1 Criando e Selecionando um Banco de Dados174
3.3.2 Criando uma Tabela175
3.3.3 Carregando dados em uma tabela176
3.3.4 Recuperando Informacoes de uma Tabela178
3.3.4.1 Selecionando Todos os Dados178
3.3.4.2 Selecionando Registros Especificos179
3.3.4.3 Selecionando Colunas Especificas180
3.3.4.4 Ordenando Registros181
3.3.4.5 Calculo de Datas183
186
3.3.4.7 Combinacao de padroes186
3.3.4.8 Contando Registros189
3.3.4.9 Utilizando Multiplas Tabelas191
3.4 Obtendo Informacoes Sobre Bancos de Dados e Tabelas193
3.5 Utilizando mysql em Modo Batch194
3.6 Exemplos de Consultas Comuns196
3.6.1 O Valor Maximo para uma Coluna196
Coluna Determinada197
um Certo Campo198
3.6.5 Utilizando Variaveis de Usuario199
3.6.6 Utilizando Chaves Estrangeiras199
3.6.7 Pesquisando em Duas Chaves201
3.6.8 Calculando Visitas Diarias201
3.6.9 Usando AUTO_INCREMENT202
3.7 Consultas de Projetos Gemeos203
3.7.1 Encontrando Todos Gemeos Nao-distribuidos204
Gemeos206
3.8 Utilizando MySQL com Apache207

3.6.4 As Linhas Armazenando o Group-wise Maximo de 3.7.2 Mostrando uma Tabela sobre a Situacao dos Pares

208
4.1 Configurando o MySQL208
4.1.1 Opcoes de Linha de Comando do mysqld208
4.1.2 Arquivo de Opcoes ‘my.cnf’217
220
4.2.1 Executando Multiplos Servidores no Windows221
Comando2
Servicos223
4.2.2 Executando Multiplos Servidores no Unix225
Multi-Servidor226
Acesso do MySQL227
4.3.1 Seguranca Geral227
230
Seguranca231
4.3.4 Detalhes de Seguranca com LOAD DATA LOCAL232
4.3.5 O Que o Sistema de Privilegios Faz233
4.3.6 Como o Sistema de Privilegios Funciona233
4.3.7 Privilegios Fornecidos pelo MySQL237
4.3.8 Conectando ao Servidor MySQL239
Conexao240
Requisicao243
4.3.1 Hashing de Senhas no MySQL 4.1246
4.3.12 Causas dos Erros de Accesso Negado250
4.4 Gerenciamento das Contas dos Usuarios no MySQL255

4 Administracao do Bancos de Dados MySQL 4.2 Executando Multiplos MySQL Servers na Mesma Maquina 4.2.1.1 Iniciando Multiplos Servidores na Linha de 4.2.1.2 Iniciando Multiplos Servidores Como 4.2.3 Usando Programas Clientes em um Ambiente 4.3 Detalhes Gerais de Seguranca e o Sistema de Privilegio de 4.3.2 Como Tornar o MySQL Seguro contra Crackers 4.3.3 Opcoes de Inicializacao para o mysqld em Relacao a 4.3.9 Controle de Acesso, Estagio 1: Verificacao da 4.3.10 Controle de Acesso, Estagio 2: Verificacao da 4.4.1 A Sintaxe de GRANT e REVOKE.................. 255

4.4.2 Nomes de Usuarios e Senhas do MySQL260
261
4.4.5 Adicionando Novos Usuarios ao MySQL262
4.4.6 Deletando Usuarios do MySQL265
4.4.7 Limitando os Recursos dos Usuarios266
4.4.8 Configurando Senhas267
4.4.9 Mantendo Sua Senha Segura268
4.4.10 Usando Conexoes Seguras269
4.4.10.1 Conceitos Basicos269
4.4.10.2 Exigencias269
MySQL270
4.4.10.4 Opcoes SSL do GRANT274
4.4.10.5 Opcoes SSL de Linha de Comando275
4.5 Prevencao de Disastres e Recuperacao276
4.5.1 Backups dos Bancos de Dados276
4.5.2 Sintaxe de BACKUP TABLE278
4.5.3 Sintaxe de RESTORE TABLE278
4.5.4 Sintaxe de CHECK TABLE279
4.5.5 Sintaxe do REPAIR TABLE280
Recuperacao em Caso de Falhas281
4.5.6.1 Sintaxe do myisamchk282
4.5.6.2 Opcoes Gerais do myisamchk283
4.5.6.3 Opcoes de Verificacao do myisamchk284
4.5.6.4 Opcoes de Reparos do myisamchk285
4.5.6.5 Outras Opcoes do myisamchk287
4.5.6.6 Uso de Memoria do myisamchk287
Caso de Falhas288
4.5.6.8 Como Verificar Erros em Tabelas289
4.5.6.9 Como Reparar Tabelas290
4.5.6.10 Otimizacao de Tabelas292
Tabelas292
4.5.8 Obtendo Informacoes sobre as Tabelas293
299
4.6.1 Sintaxe de OPTIMIZE TABLE299
4.6.2 Sintaxe de ANALYZE TABLE299
4.6.3 Sintaxe de CHECKSUM TABLE300
4.6.4 Sintaxe de FLUSH300
4.6.5 Sintaxe de RESET302
4.6.6 Sintaxe de PURGE MASTER LOGS302
4.6.7 Sintaxe de KILL302

vii 4.4.3 Quando as Alteracoes nos Privilegios tem Efeito 4.4.4 Configurando os Privilegios Iniciais do MySQL.. 261 4.4.10.3 Configurando Certificados SSL para o 4.5.6 Utilizando myisamchk para Manutencao de Tabelas e 4.5.6.7 Uso do myisamchk para Recuperacao em 4.5.7 Configurando um Regime de Manutencao das 4.6 Adiministracao do Banco de Dados e Referencia de Linguagem 4.6.8 Sintaxe de SHOW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 viii

Dados, Tabelas, Colunas e Indices304
4.6.8.2 SHOW TABLE STATUS305
4.6.8.3 SHOW STATUS306
4.6.8.4 SHOW VARIABLES309
4.6.8.5 SHOW [BDB] LOGS321
4.6.8.6 SHOW PROCESSLIST321
4.6.8.7 SHOW GRANTS323
4.6.8.8 SHOW CREATE TABLE323
4.6.8.9 SHOW WARNINGS | ERRORS323
4.6.8.10 SHOW TABLE TYPES325
4.6.8.1 SHOW PRIVILEGES326
4.7 Localizacao do MySQL e Utilizacao Internacional326
Ordenacao326
4.7.1.1 German character set327
4.7.2 Mensagens de Erros em Outras Linguas328
4.7.4 Os Vetores de Definicoes de Caracteres330
4.7.5 Suporte a Ordenacao de Strings330
4.7.6 Suporte a Caracteres Multi-byte331
4.7.7 Problemas com Conjuntos de Caracteres331
4.8 Utilitarios e Scripts do Lado do Servidor MySQL331
Servidor331
4.8.2 mysqld-safe, o wrapper do mysqld332
servidores MySQL334
Somente Leitura do MySQL337
4.8.5 mysqld-max, om servidor mysqld extendido344
4.9 Utilitarios e Scripts do Lado do Cliente MySQL346
Cliente346
4.9.2 mysql, A Ferramenta de Linha de Comando347
4.9.3 mysqlcc, The MySQL Control Center355
357
um Log Binario358
Recuperacao em Caso de Falhas360
Dados362
do MySQL366

4.6.8.1 Recuperando Informacoes sobre Bancos de 4.7.1 O Conjunto de Caracteres Utilizado para Dados e 4.7.3 Adicionando um Novo Conjunto de Caracteres.. 328 4.8.1 Visao Geral dos Scripts e Utilitarios do Lado 4.8.3 mysqld_multi, programa para gerenciar multiplos 4.8.4 myisampack, O Gerador de Tabelas Compactadas de 4.9.1 Visao Geral dos Utilitarios e Scripts do Lado do 4.9.4 mysqladmin, Administrando um Servidor MySQL 4.9.5 mysqlbinlog, Executando as Consultas a Partir de 4.9.6 Usando mysqlcheck para Manutencao de Tabelas e 4.9.7 mysqldump, Descarregando a Estrutura de Tabelas e 4.9.8 mysqlhotcopy, Copiando Bancos de Dados e Tabelas 4.9.9 mysqlimport, Importando Dados de Arquivos Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

Colunas370
MySQL371
4.9.12 perror, Explicando Codigos de Erros372
Arquivo Texto372
4.10 Os Arquivos de Log do MySQL372
4.10.1 O Log de Erros373
4.10.2 O Log de Consultas373
4.10.3 O Log de Atualizacoes374
4.10.4 O Log Binario375
4.10.5 O Log para Consultas Lentas378
4.10.6 Manutencao do Log de Arquivo378
4.1 Replicacao no MySQL379
4.1.1 Introducao379
4.1.3 Detalhes de Implementacao da Replicacao381
4.1.4 Como Configurar a Replicacao386
390
4.1.6 Opcoes de Inicializacao da Replicacao392
400
4.1.7.1 PURGE MASTER LOGS401
4.1.7.2 RESET MASTER401
4.1.7.3 SET SQL_LOG_BIN401
4.1.7.4 SHOW BINLOG EVENTS401
4.1.7.5 SHOW MASTER STATUS402
4.1.7.6 SHOW MASTER LOGS402
4.1.7.7 SHOW SLAVE HOSTS402
402
4.1.8.1 CHANGE MASTER TO402
4.1.8.2 LOAD DATA FROM MASTER405
4.1.8.3 LOAD TABLE tbl_name FROM MASTER405
4.1.8.4 MASTER_POS_WAIT()405
4.1.8.5 RESET SLAVE406
406
4.1.8.7 SHOW SLAVE STATUS406
4.1.8.8 START SLAVE409
4.1.8.9 STOP SLAVE410
4.1.9 FAQ da Replicacao41
4.1.10 Problemas com Replicacao416

4.9.10 mysqlshow, Exibindo Bancos de Dados, Tabelas e 4.9.1 mysql_config, Opcoes para compilacao do cliente 4.9.13 Como Executar Comandos SQL a Partir de um 4.1.2 Visao Geral da Implementacao da Replicacao.. 380 4.1.5 Recursos de Replicacao e Problemas Conhecidos 4.1.7 Instrucoes SQL para Controle do Servidor Master 4.1.8 Instrucoes SQL para Controle do Servidor Slave 4.1.8.6 SET GLOBAL SQL_SLAVE_SKIP_COUNTER 4.1.1 Relatando Problemas de Replicacao.......... 417

5 Otimizacao do MySQL419
5.1 Visao Geral da Otimizacao419
5.1.1 Limitacoes do Projeto MySQL/Trocas419
5.1.2 Portabilidade420
5.1.3 Para que Utilizamos o MySQL?421
5.1.4 O Pacote de Benchmark do MySQL422
5.1.5 Utilizando seus Proprios Benchmarks423
5.2 Otimizando SELECTs e Outras Consultas424
SELECT)425
5.2.2 Estimando o Desempenho de uma Consulta432
5.2.4 Como o MySQL Otimiza Clausulas WHERE433
5.2.5 Como o MySQL Otimiza IS NULL434
5.2.6 Como o MySQL Otimiza Clausulas DISTINCT435
436
5.2.8 Como o MySQL Otimiza Clausulas ORDER BY437
5.2.9 Como o MySQL Otimiza Clausulas LIMIT438
439
441
441
5.2.13 Mais Dicas sobre Otimizacoes441
5.3 Detalhes sobre Locks4
5.3.1 Como o MySQL Trava as Tabelas4
5.3.2 Detalhes sobre Lock de Tabelas445
5.4 Otimizando a Estrutura de Banco de Dados447
5.4.1 Opcoes do Projeto447
447
5.4.3 Como o MySQL Utiliza Indices448
5.4.4 Indices de Colunas450
5.4.5 Indices de Multiplas Colunas451
5.4.6 Como o MySQL Conta as Tabelas Abertas452
5.4.7 Como o MySQL Abre e Fecha as Tabelas452
Tabelas no Mesmo Banco de Dados453
5.5 Otimizando o Servidor MySQL454
Sistema/Compilacao e na Inicializacao454
5.5.2 Parametros de Sintonia do Servidor454
Velocidade do MySQL457
5.5.4 Como o MySQL Utiliza a Memoria458

x 5.2.1 Sintaxe de EXPLAIN (Obter informacoes sobre uma 5.2.3 Velocidade das Consultas que Utilizam SELECT.. 432 5.2.7 Como o MySQL Otimiza LEFT JOIN e RIGHT JOIN 5.2.10 Performance das Consultas que Utilizam INSERT 5.2.1 Performance das Consultas que Utilizam UPDATE 5.2.12 Performance das Consultas que Utilizam DELETE 5.4.2 Deixando os Dados com o Menor Tamanho Possivel 5.4.8 Desvantagem em Criar um Numero Grande de 5.5.1 Sintonia dos Parametros em Tempo de 5.5.3 Como a Compilacao e a Ligacao Afetam a 5.5.5 Como o MySQL Utiliza o DNS ................ 460

5.5.6 Sintaxe de SET460
5.6 Detalhes de Disco465
5.6.1 Utilizando Links Simbolicos466
Dados466
467
6 Referencia de Linguagem do MySQL469
6.1 Estrutura da Linguagem469
6.1.1 Literais: Como Gravar Strings e Numerais469
6.1.1.1 Strings469
6.1.1.2 Numeros471
6.1.1.3 Valores Hexadecimais471
6.1.1.4 Valores NULL471
Alias472
6.1.3 Caso Sensitivo nos Nomes473
6.1.4 Variaveis de Usuario474
6.1.5 Variaveis de Sistema475
6.1.6 Sintaxe de Comentarios478
479
6.2 Tipos de Campos481
6.2.1 Tipos Numericos487
6.2.2 Tipos de Data e Hora489
Tipos de Data490
491
6.2.2.3 O Tipo TIME495
6.2.2.4 O Tipo YEAR496
6.2.3 Tipos String496
6.2.3.1 Os Tipos CHAR e VARCHAR497
6.2.3.2 Os Tipos BLOB e TEXT497
6.2.3.3 O Tipo ENUM499
6.2.3.4 O Tipo SET500
6.2.4 Escolhendo o Tipo Correto para uma Coluna501
Banco de Dados501
502
6.3 Funcoes para Uso em Clausulas SELECT e WHERE503
504
6.3.1.1 Parenteses504
6.3.1.2 Operadores de Comparacao504

xi 5.6.1.1 Utilizando Links Simbolicos para Bancos de 5.6.1.2 Utilizando Links Simbolicos para Tabelas 6.1.2 Nomes de Banco de dados, Tabela, Indice, Coluna e 6.1.7 Tratamento de Palavras Reservadas no MySQL 6.2.2.1 Assuntos referentes ao ano 2000 (Y2K) e 6.2.2.2 Os Tipos DATETIME, DATE e TIMESTAMP 6.2.5 Usando Tipos de Colunas de Outros Mecanismos de 6.2.6 Exigencias de Armazenamento dos Tipos de Coluna 6.3.1 Operadores e Funcoes de Tipos nao Especificados 6.3.1.3 Operadores Logicos . . . . . . . . . . . . . . . . . . 508

6.3.1.4 Funcoes de Fluxo de Controle510
6.3.2 Funcoes String511
6.3.2.1 Funcoes de Comparacao de Strings519
6.3.2.2 Caso Sensitivo522
6.3.3 Funcoes Numericas522
6.3.3.1 Operacoes Aritimeticas522
6.3.3.2 Funcoes Matematicas523
6.3.4 Funcoes de Data e Hora529
6.3.5 Funcoes de Conversao543
6.3.6 Outras Funcoes545
6.3.6.1 Funcoes Binarias545
6.3.6.2 Funcoes Diversas546
GROUP BY5
6.3.7.1 Funcoes GROUP BY5
6.3.7.2 Modificadores GROUP BY558
6.3.7.3 GROUP BY com Campos Escondidos561
561
6.4.1 Sintaxe SELECT562
6.4.1.1 Sintaxe JOIN567
6.4.1.2 Sintaxe UNION569
6.4.2 Sintaxe de Subquery569
570
6.4.2.2 Comparacoes Usando Subquery571
6.4.2.3 Subqueries with ANY, IN, and SOME571
6.4.2.4 Subqueries with ALL572
6.4.2.5 Correlated Subqueries572
6.4.2.6 EXISTS and NOT EXISTS573
6.4.2.7 Row Subqueries573
6.4.2.8 Subqueries in the FROM clause574
6.4.2.9 Subquery Errors575
6.4.2.10 Optimizing Subqueries576
Versions577
6.4.3 Sintaxe INSERT578
6.4.3.1 Sintaxe INSERTSELECT........... 581
6.4.3.2 Sintaxe INSERT DELAYED581
6.4.4 Sintaxe UPDATE583
6.4.5 Sintaxe DELETE584
6.4.6 Sintaxe TRUNCATE586
6.4.7 Sintaxe REPLACE586
6.4.8 Sintaxe LOAD DATA INFILE587
6.4.9 Sintaxe HANDLER595
6.4.10 Sintaxe DO596
6.5 Definicao de Dados: CREATE, DROP e ALTER596

xii 6.3.7 Funcoes e Modificadores para Usar com Clausulas 6.4 Manipulacao de Dados: SELECT, INSERT, UPDATE e DELETE 6.4.2.1 A Subquery como um Operandop Escalar 6.4.2.1 Rewriting Subqueries for Earlier MySQL 6.5.1 Sintaxe CREATE DATABASE . . . . . . . . . . . . . . . . . . . . . 596

6.5.2 Sintaxe DROP DATABASE596
6.5.3 Sintaxe CREATE TABLE597
606
6.5.4 Sintaxe ALTER TABLE607
6.5.5 Sintaxe RENAME TABLE611
6.5.6 Sintaxe DROP TABLE611
6.5.7 Sintaxe CREATE INDEX612
6.5.8 Sintaxe DROP INDEX613
6.6 Comandos Utilitarios Basicos do Usuario MySQL613
6.6.1 Sintaxe USE613
Colunas)613
6.7 Comandos Transacionais e de Lock do MySQL614
614
6.7.2 Instrucoes que Nao Podem Ser Desfeitas615
6.7.3 Instrucoes que Fazem um Commit Implicito615
615
6.7.5 Sintaxe LOCK TABLES e UNLOCK TABLES616
6.7.6 Sintaxe SET TRANSACTION618
6.8 Pesquisa Full-text no MySQL618
6.8.1 Restricoes Full-text622
6.8.2 Ajuste Fino de Pesquisas Full-text no MySQL623
6.8.3 TODO de Pesquisas Full-text624
6.9 Cache de Consultas do MySQL624
6.9.1 Como a Cache de Consultas Opera625
6.9.2 Configuracao da Cache de Consultas626
6.9.3 Opcoes da Cache de Consultas na SELECT627
6.9.4 Estado e Manutencao da Cache de Consultas627
7 Tipos de Tabela do MySQL629
7.1 Tabelas MyISAM629
7.1.1 Espaco Necessario para Chaves632
7.1.2 Formatos de Tabelas MyISAM633
(Tamanho Fixo)633
634
7.1.3 Problemas com Tabelas MyISAM635
7.1.3.1 Tabelas MyISAM Corrompidas635
fechou de forma apropriada636
7.2 Tabelas MERGE636
7.2.1 Problemas com Tabelas MERGE639
7.4 Tabelas HEAP640
7.5 Tabelas InnoDB642
7.5.1 Visao Geral de Tabelas InnoDB642
7.5.2 InnoDB no MySQL Versao 3.23642
7.5.3 Opcoes de Inicializacao do InnoDB643
7.5.4 Criando Tablespaces no InnoDB650
Do Banco de Dados651
7.5.5 Criando Tabelas InnoDB651
InnoDB652
7.5.5.2 Restricoes FOREIGN KEY652
do InnoDB655
InnoDB655
7.5.7.1 Forcando a recuperacao657
7.5.7.2 Ponto de Verificacao658
Maquina658
7.5.9 Modelo Transacional do InnoDB659
7.5.9.1 InnoDB e SETTRANSACTION ISOLATION
LEVEL659
7.5.9.2 Leitura Consistente sem Lock661
7.5.9.3 Lock de Leitura SELECTFOR UPDATE e
SELECTLOCK IN SHARE MODE .......... 661
Problemas com Fantasmas662
SQL no InnoDB662
7.5.9.6 Deteccao de Deadlock e Rollback663
Consistente Funciona no InnoDB664
7.5.9.8 Como lidar com deadlocks?665
7.5.10 Dicas de Ajuste de Desempenho6
667
7.5.1 Implementacao de Multi-versioning669
7.5.12 Estrutura de Tabelas e Indices670
7.5.12.1 Estrutura Fisica do Indice671
7.5.12.2 Buffer de Insercao671
7.5.12.3 Indices Hash Adaptativos672
7.5.12.4 Estrutura dos Registros Fisicos672
AUTO_INCREMENT no InnoDB672
Disco673

xiv 7.5.4.1 Se Alguma Coisa Der Errado Na Criacao 7.5.5.1 Convertendo Tabelas MyISAM para 7.5.6 Adicionando e Removendo Arquivos de Dados e Log 7.5.7 Fazendo Backup e Recuperando um Banco de Dados 7.5.8 Movendo um Banco de Dados InnoDB para Outra 7.5.9.4 Lock da Chave Seguinte: Evitando 7.5.9.5 Locks Definidos por Diferentes Instrucoes 7.5.9.7 Um Exemplo de Como a Leitura 7.5.10.1 SHOW INNODB STATUS e o Monitor InnoDB 7.5.12.5 Como Funciona uma Coluna 7.5.13 Gerenciamento do Espaco de Arquivos e E/S de 7.5.13.1 E/S de Disco . . . . . . . . . . . . . . . . . . . . . . . 673

674
7.5.13.3 Desfragmentando uma Tabela675
7.5.14 Tratando Erros675
7.5.15 Restricoes em Tabelas InnoDB675
7.5.16 Historico de Alteracoes do InnoDB677
677
677
2003677
2003677
678
679
2003679
2003680
2003680
2003681
de 2003681
de 2003681
de 2003682
2003682
2003683
de 2002683
de 2002683
Dezembro de 2002684
de 2002684
de 2002685

xvi

2002687
de 2002687
2002689
2002689
2002689
de 2002690
de 2002690
Dezembro de 2001691
de 2001692
Novembro de 2001692
Novembro de 2001692
Novembro de 2001693
de 2001693
de 2001694
de 2001694
2001694
2001694
2001694
7.5.17 Informacoes de Contato do InnoDB694
7.6 Tabelas BDB ou BerkeleyDB695
7.6.1 Visao Geral de Tabelas BDB695
7.6.2 Instalando BDB695
7.6.3 Opcoes de Inicializacao do BDB696
7.6.4 Caracteristicas de Tabelas BDB:697
698
7.6.6 Sistemas operacionais suportados pelo BDB698
7.6.7 Restricoes em Tabelas BDB699

7.5.16.2 MySQL/InnoDB-4.0.3, 28 de Agosto de 7.5.16.23 MySQL/InnoDB-3.23.52, 16 de Agosto 7.5.16.24 MySQL/InnoDB-4.0.2, 10 de Julho de 7.5.16.25 MySQL/InnoDB-3.23.51, 12 de Junho de 7.5.16.26 MySQL/InnoDB-3.23.50, 23 de Abril de 7.5.16.27 MySQL/InnoDB-3.23.49, 17 de Fevereiro 7.5.16.28 MySQL/InnoDB-3.23.48, 09 de Fevereiro 7.5.16.29 MySQL/InnoDB-3.23.47, 28 de 7.5.16.30 MySQL/InnoDB-4.0.1, 23 de Dezembro 7.5.16.31 MySQL/InnoDB-3.23.46, 30 de 7.5.16.32 MySQL/InnoDB-3.23.45, 23 de 7.5.16.3 MySQL/InnoDB-3.23.4, 02 de 7.5.16.34 MySQL/InnoDB-3.23.43, 04 de Outubro 7.5.16.35 MySQL/InnoDB-3.23.42, 09 de Setembro 7.5.16.36 MySQL/InnoDB-3.23.41, 13 de Agosto 7.5.16.37 MySQL/InnoDB-3.23.40, 16 de Julho de 7.5.16.38 MySQL/InnoDB-3.23.39, 13 de Junho de 7.5.16.39 MySQL/InnoDB-3.23.38, 12 de Maio de 7.6.5 Itens a serem corrigidos no BDB num futuro proximo: 7.6.8 Erros Que Podem Ocorrer Usando Tabelas BDB.. 699

8 Introducao ao MaxDB701
8.1 Historia do MaxDB701
8.2 Licenciamento e Suporte701
8.3 Conceitos Basicos do MaxDB701
8.4 Diferencas de Recursos entre o MaxDB e o MySQL701
8.5 Interoperability Features between MaxDB and MySQL702
8.6 MaxDB-related Links702
8.7 Reserved Words in MaxDB703
8.8 Funcoes705
8.9 Tipos de Colunas705

xvii

707
9.1 Conjuntos de Caracteres e Collations em Geral707
9.2 Conjunto de Caracteres e Collations no MySQL708
708
708
Dados709
710
e Collation711
712
String Literal713
SQL714
9.3.9 Precedencia da Clausula COLLATE714
9.3.10 Operador BINARY715
Collation e Trabalhosa715
Caracteres Certo716
9.3.13 Um exemplo do Efeito da Collation716
716
9.4.1 Strings de Resultados717
9.4.2 CONVERT()717
9.4.3 CAST()717
9.4.4 SHOW CHARACTER SET718
9.4.5 SHOW COLLATION718
9.4.6 SHOW CREATE DATABASE719

9 Conjunto de Caracteres Nacionais e Unicode 9.3 Determinando o Conjunto de Caracteres e Collation Padroes 9.3.1 Conjunto de Caracteres e Collations do Servidor 9.3.2 Conjunto de Caracteres e Collation de Banco de 9.3.3 O Conjunto de Caracteres e Collations de Tabela 9.3.4 Conjunto de Caracteres e Collation de Colunas.. 710 9.3.5 Exemplos de Atribuicoes de Conjuntos de Caracteres 9.3.6 Conjunto de Caracteres e Collation de Conexao 9.3.7 Conjunto de Caracteres e Collation de Caracter de 9.3.8 Clausula COLLATE em Varias Partes de uma Consulta 9.3.1 Alguns Casos Especiais Onde a Determinacao da 9.3.12 Collations Devem Ser para o Conjunto de 9.4 Operacoes Afetadas pelo Suporte a Conjunto de Caracteres 9.4.7 SHOW FULL COLUMNS . . . . . . . . . . . . . . . . . . . . . . . . . . . 719

9.5 Suporte Unicode719
9.6 UTF8 para Metdados720
9.7 Compatibilidade com Outros SGBDs721
Caracteres721
9.9 Conjunto de Caracteres Nacional721
9.10 Atualizando para o MySQL 4.0722

xviii 9.8 Novo Formato do Arquivo de Configuracao do Conjunto de 9.10.1 Conjunto de Caracteres do MySQL e o

do MySQL 4.1723
Suporta723
9.1.1 O Conjunto de Caracteres Unicode725
Especificas725
Medio725
9.1.4 Os Conjuntos de Caracteres Asiaticos725
9.1.5 Os Conjuntos de Caracteres Balticos726
9.1.6 Os Conjuntos de Caracteres Cirilicos726
728
10 Extensoes Espacias em MySQL730
10.1 Introducao730
10.2 O Modelo Geomatrico OpenGIS730
10.2.1 A Hierarquia da Classe Geometry731
10.2.2 Classe Geometry732
10.2.3 Classe Point733
10.2.4 Classe Curve733
10.2.5 Classe LineString734
10.2.6 Classe Surface734
10.2.7 Classe Polygon734
10.2.8 Classe GeometryCollection735
10.2.9 Classe MultiPoint735
10.2.10 Classe MultiCurve735
10.2.1 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 Suportados737
10.3.1 Formato Well-Known Text (WKT)737
10.3.2 Formato Well-Known Binary (WKB)738
Espacialmente738
10.4.1 Tipos de Dados Espaciais do MySQL739

Par/Conjunto de Caracter/Collation Correspondente 9.1 Os conjuntos de Caracteres e Collations que o MySQL 9.1.2 Conjunto de Caracteres para Plataformas 9.1.3 Conjunto de Caracteres do Sul da Europa e Oriente 9.1.7 O Conjunto de Caracteres da Europa Central.. 727 9.1.8 Os Conjuntos de Caracteres da Europa Ocidental 10.4 Criando um Banco de Dados MySQL Habilitado 10.4.2 Criando Valores Espaciais . . . . . . . . . . . . . . . . . . . . 739 xix

Funcoes WKT739
Funcoes WKB740
Funcoes Especificas do MySQL741
10.4.3 Criando Colunas Espaciais742
10.4.4 Entrando com Dados em Colunas Espaciais743
10.4.5 Buscando Dados Espaciais744
Formato Interno744
WKT744
WKB744
10.5 Analisando Informacao Espacial744
Diferentes745
745
Geometry em Geral746
Point747
LineString748
MultiLineString749
Polygon750
MultiPolygon751
GeometryCollection751
Existentes752
Novas Geometrias752
10.5.3.2 Operadores Espaciais752
Objetos Geometricos753
Bounding Rectangles - MBR) em Geometrias753
Entre Geometrias754
10.6 Otimizando Analises Espaciais755
10.6.1 Criando Indices Espaciais755

10.4.2.1 Criando Valores Geometry Usando 10.4.2.2 Criando Valores Geometry Usando 10.4.2.3 Criando uma Valor de Geometira Usando 10.4.5.1 Buscando Dados Espaciais em um 10.4.5.2 Buscando Dados Espaciais no Formato 10.4.5.3 Buscando Dados Espaciais no Formato 10.5.1 Funcoes Para Converter Geometrias Entre Formatos 10.5.2 Funcoes de Analise das Propriedades de Geometry 10.5.2.1 Funcoes de Analise das Propriedades de 10.5.2.2 Funcoes de Analise das Propriedades de 10.5.2.3 Funcoes de Analise das Propriedades de 10.5.2.4 Funcoes de Analise das Propriedades de 10.5.2.5 Funcoes de Analise das Propriedades de 10.5.2.6 Funcoes de Analise das Propriedades de 10.5.2.7 Funcoes de Analise das Propriedades de 10.5.3 Funcoes Que Criam Novas Geometrias de Outras 10.5.3.1 Funcoes de Geometria Que Produzem 10.5.4 Funcoes Para Testar Relacoes Espaciais Entre 10.5.5 Relacoes de Retangulo de Limite Minimo (Minimal 10.5.6 Funcoes que Testam Relacionamentos Espaciais 10.6.2 Usando Indice Espacial . . . . . . . . . . . . . . . . . . . . . . 756

10.7 Compatibilidade e Conformidade com o MySQL758
758
1 Stored Procedures e Funcoes760
1.1 Sintaxe de Stored Procedure760
1.1.1 Maintaining Stored Procedures761
761
763
FUNCTION763
STATUS764
1.1.3 CALL764
1.1.4 BEGINEND Compound Statement ......... 764
1.1.5 DECLARE Statement764
1.1.6 Variables in Stored Procedures764
1.1.6.1 DECLARE Local Variables765
1.1.6.2 Variable SET Statement765
1.1.6.3 SELECTINTO Statement ......... 765
1.1.7 Conditions and Handlers765
1.1.7.1 DECLARE Conditions765
1.1.7.2 DECLARE Handlers765
1.1.8 Cursors767
1.1.8.1 Declaring Cursors768
1.1.8.2 Cursor OPEN Statement768
1.1.8.3 Cursor FETCH Statement768
1.1.8.4 Cursor CLOSE Statement768
1.1.9 Flow Control Constructs768
1.1.9.1 IF Statement768
1.1.9.2 CASE Statement768
1.1.9.3 LOOP Statement769
1.1.9.4 LEAVE Statement769
1.1.9.5 ITERATE Statement769
1.1.9.6 REPEAT Statement770

x 10.7.1 Recursos GIS Que Ainda Nao Estao Implementados 1.1.1.1 CREATE PROCEDURE and CREATE FUNCTION 1.1.1.2 ALTER PROCEDURE and ALTER FUNCTION 1.1.1.3 DROP PROCEDURE and DROP FUNCTION.. 763 1.1.1.4 SHOW CREATE PROCEDURE and SHOW CREATE 1.1.2 SHOW PROCEDURE STATUS and SHOW FUNCTION 1.1.9.7 WHILE Statement. . . . . . . . . . . . . . . . . . . . 770 xxi

772
12.1 API C do MySQL772
12.1.1 Tipos de Dados da API C772
12.1.2 Visao Geral das Funcao da API C775
12.1.3 Descricao das Funcoes da API C779
12.1.3.1 mysql_affected_rows()780
12.1.3.2 mysql_change_user()781
12.1.3.3 mysql_character_set_name()782
12.1.3.4 mysql_close()782
12.1.3.5 mysql_connect()783
12.1.3.6 mysql_create_db()783
12.1.3.7 mysql_data_seek()784
12.1.3.8 mysql_debug()785
12.1.3.9 mysql_drop_db()785
12.1.3.10 mysql_dump_debug_info()786
12.1.3.1 mysql_eof()786
12.1.3.12 mysql_errno()788
12.1.3.13 mysql_error()788
12.1.3.14 mysql_escape_string()789
12.1.3.15 mysql_fetch_field()789
12.1.3.16 mysql_fetch_fields()790
12.1.3.17 mysql_fetch_field_direct()791
12.1.3.18 mysql_fetch_lengths()792
12.1.3.19 mysql_fetch_row()792
12.1.3.20 mysql_field_count()794
12.1.3.21 mysql_field_seek()795
12.1.3.2 mysql_field_tell()795
12.1.3.23 mysql_free_result()796
12.1.3.24 mysql_get_client_info()796
12.1.3.25 mysql_get_host_info()796
12.1.3.26 mysql_get_proto_info()797
12.1.3.27 mysql_get_server_info()797
12.1.3.28 mysql_get_server_version()798
12.1.3.29 mysql_info()798
12.1.3.30 mysql_init()799
12.1.3.31 mysql_insert_id()799
12.1.3.32 mysql_kill()800
12.1.3.3 mysql_list_dbs()801
12.1.3.34 mysql_list_fields()801
12.1.3.35 mysql_list_processes()802
12.1.3.36 mysql_list_tables()802
12.1.3.37 mysql_num_fields()803
12.1.3.38 mysql_num_rows()805
12.1.3.39 mysql_options()805
12.1.3.40 mysql_ping()807
12.1.3.41 mysql_query()808
12.1.3.43 mysql_real_escape_string()811
12.1.3.4 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.5 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()823
12.1.4 Instrucoes Preparadas da API C824
824
da API C827
API C829
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.1 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()851
API C851
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()855
API C855
12.1.1.1 mysql_server_init()855
12.1.1.2 mysql_server_end()856
857
mysql_query() Returnar com Sucesso?857
Consulta?857
Ultima Linha Inserida?857
12.1.12.4 Problemas com Ligacao na API C858
12.1.13 Construindo Programas Clientes858
12.1.14 Como Fazer um Cliente em Threads859
MySQL860
MySQL Embutido860
861
MySQL Embutido861
Servidor Embutido861
(TODO)862
Embutido862
12.1.15.7 Licensiando o Servidor Embutido866
12.2 Suporte ODBC ao MySQL866
12.2.1 Como Instalar o MyODBC866
Administracao do ODBC867
12.2.3 Parametros de Conexao do MyODBC868
12.2.4 Como Relatar Problemas com o MyODBC869
12.2.5 Programas que Funcionam com MyODBC870
AUTO_INCREMENT no ODBC874
12.2.7 Relatando Problemas com MyODBC875
12.3 Conectividade Java (JDBC) ao MySQL876

12.1.10 Descricao das Funcoes de Threads da API C.. 854 12.1.1 Descricao das Funcoes do Servidor Embutido da 12.1.12 Duvidas e problemas comuns ao utilzar a API C 12.1.12.1 Porque Algumas Vezes mysql_store_result() Retorna NULL Apos 12.1.12.2 Que Resultados Posso Onbetr de uma 12.1.12.3 Como Posso Obter a ID Unica para a 12.1.15 libmysqld, a Biblioteca do Servidor Embutido 12.1.15.1 Visao Geral da Biblioteca do Servidor 12.1.15.2 Compilando Programas com libmysqld 12.1.15.3 Restricoes no Uso de um Servidor 12.1.15.4 Usando Arquivo de Opcoes com o 12.1.15.5 Itens a Fazer no Servidor Embutido 12.1.15.6 Um Exemplo Simples de Servidor 12.2.2 Como Preencher os Varios Campos no Programa de 12.2.6 Como Obter o Valor de uma Coluna 12.4 API PHP do MySQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876

12.4.1 Problemas Comuns com MySQL e PHP876
12.5 API Perl do MySQL876
12.5.1 DBI com DBD::mysql877
12.5.2 A interface DBI877
12.5.3 Mais Informacoes DBI/DBD883
12.6 API C++ do MySQL883
12.6.1 Borland C++883
12.7 API Python do MySQL884
12.8 API Tcl do MySQL884
12.9 Eiffel Wrapper do MySQL884
13 Tratamento de Erros no MySQL885
13.1 Erros Retornados885
14 Estendendo o MySQL892
14.1 MySQL Internals892
14.1.1 Threads MySQL892
14.1.2 Pacotes de Teste do MySQL892
893
893
MySQL894
14.2 Adicionando Novas Funcoes ao MySQL895
14.2.1 Sintaxe CREATE FUNCTION/DROP FUNCTION896
896
Funcoes Simples898
Funcoes Agregadas899
14.2.2.3 Processando Argumentos900
902
Definidas Por Usuario902
14.2.3 Adicionando uma Nova Funcao Nativa904
14.3 Adicionado Novos Procedimentos ao MySQL905
14.3.1 Analise de Procedimento905

xxiv 14.1.2.1 Executando o Pacote de Testes do MySQL 14.1.2.2 Extendendo o Pacote de Teste do MySQL 14.1.2.3 Relatando Bugs no Pacote de Teste do 14.2.2 Adicionando Novas Funcoes Definidas Por Usuario 14.2.2.1 Sequencia de Chamadas UDF para 14.2.2.2 Sequencia de Chamadas UDF para 14.2.2.4 Valor de Retorno e Tartamento de Erros 14.2.2.5 Compilando e Instalando Funcoes 14.3.2 Escrevendo um Procedimento................. 906

Apendice A Problemas e Erros Comuns907
A.1 Como Determinar o Que Esta Causando Problemas907
A.2 Erros Comuns Usando o MySQL908
A.2.1 Erro: Access Denied908
A.2.2 Erro: MySQL server has gone away908
909

xxv A.2.3 Erro: Can’t connect to [local] MySQL server

protocol911
A.2.5 Erro: Host ’...’ is blocked912
A.2.6 Erro: Too many connections912
couldn’t be rolled back912
A.2.8 Erro: Out of memory913
A.2.9 Erro: Packet too large913
914
A.2.1 Erro: The table is full915
A.2.12 Erro: Can’t create/write to file915
A.2.13 Erro no Cliente: Commands out of sync916
A.2.14 Erro: Ignoring user916
A.2.15 Erro: Table ’x’ doesn’t exist916
A.2.17 Arquivo Nao Encontrado917
A.3 Assuntos Relacionados a Instalacao918

A.2.4 Erro: Client does not support authentication A.2.7 Erro: Some non-transactional changed tables A.2.10 Erros de Comunicacao / Comunicacao Abortada A.2.16 Erro: Can’t initialize character set x.. 917

MySQL918

A.3.1 Problemas de Ligacao com a Biblioteca do Cliente

Normal919
A.3.3 Problemas com Permissoes de Arquivos920
A.4 Assuntos Relacionados a Administracao920

A.3.2 Como Executar o MySQL Como Um Usuario

923
A.4.3 Como o MySQL Trata de Discos Sem Espaco924
924

A.4.1 O Que Fazer Se o MySQL Continua Falhando.. 921 A.4.2 Como Recuperar uma Senha de Root Esquecida A.4.4 Onde o MySQL Armazena Arquivos Temporarios

the MySQL Socket File ‘/tmp/mysql.sock’925
A.4.6 Problemas Com Fuso Horario926
A.5 Assuntos Relacionados a Consultas926
A.5.1 Caso-Sensitivito em Pesquisas926
A.5.2 Problemas Usando Colunas DATE926
A.5.3 Problemas com Valores NULL928
A.5.4 Problemas com alias929
A.5.5 Deletando Linhas de Tabelas Relacionadas929

xxvi

930
A.6 Assuntos Relacionados ao Otimizador932
A.6.1 Camo evitar o varredura da tabela,,,933
A.7 Assuntos Relacionados a Definicoes de Tabelas933
A.7.1 Problemas com ALTER TABLE933
934
A.7.3 Problemas com TEMPORARY TABLE934
Apendice B Colaboradores do MySQL936
B.1 Desenvolvedores do MySQL936
B.2 Coolaboradores do MySQL939
B.3 Responsaveis pela Documentacao e Traducao943
B.4 Bibliotecas usadas e incluidas com o MySQL944
B.5 Pacotes que suportam o MySQL945
B.6 Ferramentas que sao usadas para criar o MySQL946
B.7 Responsaveis pelo Suporte do MySQL946

A.5.7 Problemas com Comparacao de Ponto Flutuante A.7.2 Como Alterar a Ordem das Colunas em Uma Tabela

948
C.1 Alteracoes na distribuicao 5.0.0 (Development)948
C.2 Alteracoes na distribuicao 4.1.x (Alpha)948

Apendice C Historico de Alteracoes do MySQL

949

C.2.1 Alteracoes na distribuicao 4.1.2 (not released yet)

950

C.2.2 Alteracoes na distribuicao 4.1.1 (01 de Dez de 2003)

Alpha)954
C.3 Alteracoes na distribuicao 4.0.x (Production)956

C.2.3 Alteracoes na distribuicao 4.1.0 (03 Apr 2003:

957

C.3.1 Alteracoes na distribuicao 4.0.17 (not released yet)

959

C.3.2 Alteracoes na distribuicao 4.0.16 (17 Out 2003)

961

C.3.3 Alteracoes na distribuicao 4.0.15 (03 Sep 2003)

969

C.3.4 Alteracoes na distribuicao 4.0.14 (18 Jul 2003).. 965 C.3.5 Alteracoes na distribuicao 4.0.13 (16 May 2003)

Production)972

C.3.6 Alteracoes na distribuicao 4.0.12 (15 Mar 2003:

974

C.3.7 Alteracoes na distribuicao 4.0.1 (20 Feb 2003)

975

C.3.8 Alteracoes na distribuicao 4.0.10 (29 Jan 2003) C.3.9 Alteracoes na distribuicao 4.0.9 (09 Jan 2003) .. 976 xxvii

977

C.3.10 Alteracoes na distribuicao 4.0.8 (07 Jan 2003)

977

C.3.1 Alteracoes na distribuicao 4.0.7 (20 Dec 2002)

Gamma)978

C.3.12 Alteracoes na distribuicao 4.0.6 (14 Dec 2002:

979

C.3.13 Alteracoes na distribuicao 4.0.5 (13 Nov 2002)

981

C.3.14 Alteracoes na distribuicao 4.0.4 (29 Sep 2002)

Beta)983

C.3.15 Alteracoes na distribuicao 4.0.3 (26 Aug 2002:

988

C.3.16 Alteracoes na distribuicao 4.0.2 (01 Jul 2002).. 985 C.3.17 Alteracoes na distribuicao 4.0.1 (23 Dec 2001)

989

C.3.18 Alteracoes na distribuicao 4.0.0 (Oct 2001: Alpha)

991

C.4 Alteracoes na distribuicao 3.23.x (Recent; still supported)

991

C.4.1 Alteracoes na distribuicao 3.23.59 (not released yet)

992

C.4.2 Alteracoes na distribuicao 3.23.58 (1 Sep 2003)

992

C.4.3 Alteracoes na distribuicao 3.23.57 (06 Jun 2003)

993

C.4.4 Alteracoes na distribuicao 3.23.56 (13 Mar 2003)

994

C.4.5 Alteracoes na distribuicao 3.23.5 (23 Jan 2003)

995

C.4.6 Alteracoes na distribuicao 3.23.54 (05 Dec 2002)

996

C.4.7 Alteracoes na distribuicao 3.23.53 (09 Oct 2002)

997

C.4.8 Alteracoes na distribuicao 3.23.52 (14 Aug 2002)

997

C.4.9 Alteracoes na distribuicao 3.23.51 (31 May 2002)

998
C.4.1 Alteracoes na distribuicao 3.23.499
9

C.4.10 Alteracoes na distribuicao 3.23.50 (21 Apr 2002) C.4.12 Alteracoes na distribuicao 3.23.48 (07 Feb 2002)

1000

C.4.13 Alteracoes na distribuicao 3.23.47 (27 Dec 2001)

1000

C.4.14 Alteracoes na distribuicao 3.23.46 (29 Nov 2001)

xxviii

1001

C.4.16 Alteracoes na distribuicao 3.23.4 (31 Oct 2001)

1002

C.4.17 Alteracoes na distribuicao 3.23.43 (04 Oct 2001)

1003

C.4.18 Alteracoes na distribuicao 3.23.42 (08 Sep 2001)

1004
C.4.20 Alteracoes na distribuicao 3.23.401004
1005

C.4.19 Alteracoes na distribuicao 3.23.41 (1 Aug 2001) C.4.21 Alteracoes na distribuicao 3.23.39 (12 Jun 2001)

1005

C.4.2 Alteracoes na distribuicao 3.23.38 (09 May 2001)

1006

C.4.23 Alteracoes na distribuicao 3.23.37 (17 Apr 2001)

1007

C.4.24 Alteracoes na distribuicao 3.23.36 (27 Mar 2001)

1007
C.4.26 Alteracoes na distribuicao 3.23.34a1008
1008

C.4.25 Alteracoes na distribuicao 3.23.35 (15 Mar 2001) C.4.27 Alteracoes na distribuicao 3.23.34 (10 Mar 2001)

1009

C.4.28 Alteracoes na distribuicao 3.23.3 (09 Feb 2001)

Production)1010

C.4.29 Alteracoes na distribuicao 3.23.32 (2 Jan 2001:

1010

C.4.30 Alteracoes na distribuicao 3.23.31 (17 Jan 2001)

1011

C.4.31 Alteracoes na distribuicao 3.23.30 (04 Jan 2001)

1012

C.4.32 Alteracoes na distribuicao 3.23.29 (16 Dec 2000)

Gamma)1013

C.4.3 Alteracoes na distribuicao 3.23.28 (2 Nov 2000:

1015

C.4.34 Alteracoes na distribuicao 3.23.27 (24 Oct 2000)

1015

C.4.35 Alteracoes na distribuicao 3.23.26 (18 Oct 2000)

1016

C.4.36 Alteracoes na distribuicao 3.23.25 (29 Sep 2000)

1017

C.4.37 Alteracoes na distribuicao 3.23.24 (08 Sep 2000)

(Parte 1 de 4)

Comentários