• Nenhum resultado encontrado

1 Informa¸c˜ oes Gerais . . . . 1

N/A
N/A
Protected

Academic year: 2022

Share "1 Informa¸c˜ oes Gerais . . . . 1"

Copied!
1147
0
0

Texto

(1)

Copyright c ° 1997-2003 MySQL AB

(2)
(3)

Sum´ ario

1 Informa¸c˜ oes Gerais . . . . 1

1.1 Sobre Este Manual . . . . 2

1.1.1 Conven¸c˜oes Usadas Neste Manual . . . . 2

1.2 Vis˜ao Geral do Sistema de Gerenciamento de Banco de Dados MySQL . . . . 3

1.2.1 Hist´oria do MySQL . . . . 5

1.2.2 As Principais Caracter´isticas 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) . . . . 11

1.3 Vis˜ao Geral da MySQL AB . . . . 12

1.3.1 O Modelo de Neg´ocio e Servi¸cos da MySQL AB . . 13

1.3.1.1 Suporte . . . . 13

1.3.1.2 Treinamento e Certifica¸c˜ao . . . . 13

1.3.1.3 Consultoria . . . . 14

1.3.1.4 Licen¸cas Comerciais . . . . 14

1.3.1.5 Parcerias . . . . 15

1.3.2 Informa¸c˜oes para Contato . . . . 15

1.4 Suporte e Licenciamento do MySQL . . . . 16

1.4.1 Suporte Oferecido pela MySQL AB . . . . 16

1.4.2 Copyrights e Licen¸cas Usadas pelo MySQL . . . . 17

1.4.3 Licen¸cas do MySQL . . . . 18

1.4.3.1 Usando o Programa MySQL Sob uma Licen¸ca Comercial . . . . 18

1.4.3.2 Usando o Programa MySQL Sem Custo Sob GPL . . . . 19

1.4.4 Logomarcas e Marcas Registradas da MySQL AB . . . . 19

1.4.4.1 O Logo Original do MySQL . . . . 20

1.4.4.2 Logomarcas da MySQL que Podem Ser Usadas Sem Permiss˜ao de Altera¸c˜ao . . . . 20

1.4.4.3 Quando Vocˆe Precisa de Permiss˜ao de Altera¸c˜ao para Usar as Logomarcas do MySQL? . . . . 20

1.4.4.4 Logomarcas dos Parceiros da MySQL AB . . . . 21

1.4.4.5 Usando a Palavra MySQL em Texto Impresso ou Apresenta¸c˜ao . . . . 21

1.4.4.6 Usando a Palavra MySQL em Nomes de Companhias e Produtos . . . . 21

1.5 Mapa de Desenvolvimento do MySQL. . . . 21

1.5.1 MySQL 4.0 in a Nutshell . . . . 22

(4)

1.5.1.2 Servidor Embutido MySQL . . . . 23

1.5.2 MySQL 4.1 in a Nutshell . . . . 24

1.5.2.1 Recursos Dispon´iveis no MySQL 4.1 . . . . 24

1.5.2.2 Stepwise Rollout . . . . 26

1.5.2.3 Pronto para Uso em Desenvolvimento Imediato . . . . 26

1.5.3 MySQL 5.0, A Pr´oxima Distribui¸c˜ao de Desenvolvimento . . . . 26

1.6 MySQL e o Futuro (o TODO). . . . 26

1.6.1 Novos Recursos Planejados Para a Vers˜ao 4.1 . . . . 26

1.6.2 Novos Recursos Planejados Para a Vers˜ao 5.0 . . . . 27

1.6.3 Novos Recursos Planejados Para a Vers˜ao 5.1 . . . . 28

1.6.4 Novos Recursos Planejados Para a Vers˜ao em um Futuro Pr´oximo . . . . 28

1.6.5 Novos Recursos Planejados Para a Vers˜ao em um Futuro a M´edio Prazo . . . . 31

1.6.6 Novos Recursos que N˜ao Planejamos Fazer . . . . 32

1.7 Fontes de Informa¸c˜oes do MySQL . . . . 33

1.7.1 Listas de Discuss˜ao MySQL . . . . 33

1.7.1.1 As Listas de Discuss˜ao do MySQL . . . . 33

1.7.1.2 Fazendo perguntas ou relatando erros . . . 35

1.7.1.3 Como relatar erros ou problemas . . . . 36

1.7.1.4 Guia para responder quest˜oes na lista de discuss˜ao . . . . 41

1.7.2 Suporte a Comunidade MySQL Atrv´es do IRC (Internet Relay Chat) . . . . 41

1.8 Qual compatibilidade aos padr˜oes o MySQL oferece ? . . . . . 41

1.8.1 Qual Padr˜ao o MySQL Segue?. . . . 42

1.8.2 Executando o MySQL no modo ANSI . . . . 42

1.8.3 Extens˜oes do MySQL para o Padr˜ao SQL-92. . . . . 43

1.8.4 Diferen¸cas do MySQL em Compara¸c˜ao com o SQL-92 . . . . 45

1.8.4.1 Subqueries . . . . 46

1.8.4.2 SELECT INTO TABLE . . . . 46

1.8.4.3 Transa¸c˜oes e Opera¸c˜oes Atˆomicas . . . . 46

1.8.4.4 Stored Procedures e Triggers . . . . 49

1.8.4.5 Chaves Estrangeiras . . . . 49

1.8.4.6 Views . . . . 51

1.8.4.7 ‘--’ como In´icio de Coment´ario . . . . 51

1.8.5 Como o MySQL Lida com Restri¸c˜oes . . . . 52

1.8.5.1 Restri¸c˜oes de PRIMARY KEY / UNIQUE . . . . 52

1.8.5.2 Restri¸c˜oes de NOT NULL . . . . 53

1.8.5.3 Restri¸c˜oes de ENUM e SET. . . . 53

1.8.6 Erros Conhecidos e Deficiˆencias de Projetos no

MySQL . . . . 53

(5)

1.8.6.1 Erros da Vers˜ao 3.23 Corrigidos em Vers˜oes

Posteriores do MySQL . . . . 53

1.8.6.2 Open Bugs / Deficiˆencias de Projeto no MySQL . . . . 54

2 Instala¸c˜ ao do MySQL . . . . 60

2.1 Instala¸c˜ao r´apida padr˜ao do MySQL . . . . 60

2.1.1 Instalando o MySQL no Windows. . . . 60

2.1.1.1 Exigˆencias do Sistema Windows . . . . 61

2.1.1.2 Instalando uma Distribui¸c˜ao Bin´aria do Windows . . . . 61

2.1.1.3 Preparando o Ambiente MySQL do Windows . . . . 62

2.1.1.4 Selecionando um Servidor Windows . . . . 63

2.1.1.5 Iniciando o Servidor pela Primeira Vez . . 64

2.1.1.6 Iniciando o MySQL no Windows 95, 98, ou Me . . . . 65

2.1.1.7 Iniciando o MySQL no Windows NT, 2000, ou XP . . . . 65

2.1.1.8 Executando o MySQL no Windows . . . . . 68

2.1.2 Instalando o MySQL no Linux . . . . 69

2.1.3 Instalando o MySQL no Mac OS X . . . . 71

2.1.4 Instalando o MySQL no NetWare . . . . 73

2.1.4.1 Instalando o MySQL para Bin´arios do NetWare . . . . 74

2.2 Detalhes Gerais de Instala¸c˜ao . . . . 75

2.2.1 Como obter o MySQL . . . . 75

2.2.2 Verificando a Integridade do Pacote Usando MD5 Checksums ou GnuPG . . . . 75

2.2.3 Sistemas Operacionais suportados pelo MySQL . . 78

2.2.4 Qual vers˜ao do MySQL deve ser usada . . . . 80

2.2.5 Layouts de Instala¸c˜ao . . . . 83

2.2.6 Como e quando as atualiza¸c˜oes s˜ao lan¸cadas? . . . . 84

2.2.7 Filosofia das Distribui¸c˜oes - Nenhum Bug Conhecidos nas Distribui¸c˜oes . . . . 84

2.2.8 Bin´arios MySQL compilados pela MySQL AB . . . 86

2.2.9 Instalando uma Distribui¸c˜ao Bin´aria do MySQL. . 91

2.3 Instalando uma distribui¸c˜ao com fontes do MySQL . . . . 93

2.3.1 Vis˜ao geral da instala¸c˜ao r´apida . . . . 94

2.3.2 Aplicando patches . . . . 97

2.3.3 Op¸c˜oes t´ipicas do configure . . . . 97

2.3.4 Instalando pela ´arvore de fontes do desenvolvimento . . . . 100

2.3.5 Lidando com Problemas de Compila¸c˜ao . . . . 103

2.3.6 Notas MIT-pthreads . . . . 106

2.3.7 Instalando o MySQL a partir do Fonte no Windows . . . . 107

2.3.7.1 Construindo o MySQL Usando VC++ . . 108

(6)

partir da ´ Ultima Fonte de Desenvolvimento

. . . . 110

2.4 Configura¸c˜oes e Testes P´os-instala¸c˜ao . . . . 111

2.4.1 Problemas Executando o mysql_install_db. . . . 115

2.4.2 Problemas Inicializando o Servidor MySQL . . . . . 116

2.4.3 Inicializando e parando o MySQL automaticamente. . . . . 118

2.5 Atualizando/Desatualizando o MySQL. . . . 120

2.5.1 Atualizando da Vers˜ao 4.0 para 4.1 . . . . 120

2.5.2 Atualizando da Vers˜ao 3.23 para 4.0 . . . . 123

2.5.3 Atualizando da vers˜ao 3.22 para 3.23. . . . 126

2.5.4 Atualizando da vers˜ao 3.21 para 3.22. . . . 128

2.5.5 Atualizando da vers˜ao 3.20 para 3.21. . . . 129

2.5.6 Atualizando a Tabela de Permiss˜oes . . . . 130

2.5.7 Atualizando para outra arquitetura . . . . 130

2.5.8 Atualizando o MySQL no Windows . . . . 132

2.6 Notas espec´ificas para os Sistemas Operacionais . . . . 132

2.6.1 Notas Windows . . . . 132

2.6.1.1 Conectando em um MySQL Rematamente a Windows Utilizando SSH . . . . 133

2.6.1.2 Distribuindo Dados Entre Diferentes Discos no Win32 . . . . 133

2.6.1.3 Compilando clientes MySQL no Windows . . . . 134

2.6.1.4 MySQL para Windows Comparado com o MySQL para Unix . . . . 134

2.6.2 Notas Linux (Todas as vers˜oes) . . . . 137

2.6.2.1 Notas Linux para distribui¸c˜oes bin´arias . . . . 141

2.6.2.2 Notas Linux x86 . . . . 142

2.6.2.3 Notas Linux SPARC . . . . 143

2.6.2.4 Notas Linux Alpha . . . . 143

2.6.2.5 Notas Linux PowerPC . . . . 144

2.6.2.6 Notas Linux MIPS . . . . 144

2.6.2.7 Notas Linux IA-64 . . . . 144

2.6.3 Notas Solaris . . . . 144

2.6.3.1 Notas Solaris 2.7/2.8 . . . . 147

2.6.3.2 Notas Solaris x86 . . . . 148

2.6.4 Notas BSD . . . . 149

2.6.4.1 Notas FreeBSD . . . . 149

2.6.4.2 Notas NetBSD . . . . 150

2.6.4.3 Notas OpenBSD . . . . 150

2.6.4.4 Notas OpenBSD 2.8 . . . . 151

2.6.4.5 Notas BSDI Vers˜ao 2.x . . . . 151

2.6.4.6 Notas BSD/OS Vers˜ao 3.x . . . . 151

2.6.4.7 Notas BSD/OS Vers˜ao 4.x . . . . 152

2.6.5 Notas Mac OS X . . . . 152

(7)

2.6.5.1 Mac OS X 10.x . . . . 152

2.6.5.2 Mac OS X Server 1.2 (Rhapsody) . . . . . 153

2.6.6 Notas de Outros Unix. . . . 153

2.6.6.1 Notas HP-UX para distribui¸c˜oes bin´arias . . . . 153

2.6.6.2 Notas HP-UX Vers˜ao 10.20 . . . . 154

2.6.6.3 Notas HP-UX Vers˜ao 11.x . . . . 154

2.6.6.4 Notas IBM-AIX . . . . 155

2.6.6.5 Notas SunOS 4 . . . . 157

2.6.6.6 Notas Alpha-DEC-UNIX (Tru64) . . . . . 157

2.6.6.7 Notas Alpha-DEC-OSF1 . . . . 159

2.6.6.8 Notas SGI Irix . . . . 160

2.6.6.9 Notas SCO . . . . 161

2.6.6.10 Notas SCO Unixware Version 7.0 . . . . . 163

2.6.7 Notas OS/2 . . . . 163

2.6.8 Notas Novell NetWare . . . . 164

2.6.9 Notas BeOS. . . . 164

2.7 Coment´arios de Instala¸c˜ao do Perl . . . . 165

2.7.1 Instalando Perl no Unix . . . . 165

2.7.2 Instalaando ActiveState Perl no Windows . . . . 166

2.7.3 Problemas Usando a Interface Perl DBI/DBD . . . . 166

3 Tutorial de Introdu¸c˜ ao Do MySQL . . . . 169

3.1 Conectando e Desconectando do Servidor . . . . 169

3.2 Fazendo Consultas . . . . 170

3.3 Cria¸c˜ao e Utiliza¸c˜ao de um Banco de Dados . . . . 173

3.3.1 Criando e Selecionando um Banco de Dados . . . . 174

3.3.2 Criando uma Tabela . . . . 175

3.3.3 Carregando dados em uma tabela . . . . 176

3.3.4 Recuperando Informa¸c˜oes de uma Tabela . . . . 178

3.3.4.1 Selecionando Todos os Dados . . . . 178

3.3.4.2 Selecionando Registros Espec´ificos . . . . . 179

3.3.4.3 Selecionando Colunas Espec´ificas . . . . 180

3.3.4.4 Ordenando Registros . . . . 181

3.3.4.5 C´alculo de Datas . . . . 183

3.3.4.6 Trabalhando com Valores Nulos (NULL) . . . . 186

3.3.4.7 Combina¸c˜ao de padr˜oes. . . . 186

3.3.4.8 Contando Registros . . . . 189

3.3.4.9 Utilizando M´ ultiplas Tabelas. . . . 191

3.4 Obtendo Informa¸c˜oes Sobre Bancos de Dados e Tabelas . . 193

3.5 Utilizando mysql em Modo Batch . . . . 194

3.6 Exemplos de Consultas Comuns . . . . 196

3.6.1 O Valor M´aximo para uma Coluna . . . . 196

3.6.2 O Registro que Armazena o Valor M´aximo para uma Coluna Determinada . . . . 197

3.6.3 M´aximo da Coluna por Grupo . . . . 197

(8)

um Certo Campo . . . . 198

3.6.5 Utilizando Vari´aveis de Usu´ario . . . . 199

3.6.6 Utilizando Chaves Estrangeiras . . . . 199

3.6.7 Pesquisando em Duas Chaves. . . . 201

3.6.8 Calculando Visitas Di´arias . . . . 201

3.6.9 Usando AUTO_INCREMENT . . . . 202

3.7 Consultas de Projetos Gˆemeos . . . . 203

3.7.1 Encontrando Todos Gˆemeos N˜ao-distribu´idos . . . 204

3.7.2 Mostrando uma Tabela sobre a Situa¸c˜ao dos Pares Gˆemeos . . . . 206

3.8 Utilizando MySQL com Apache . . . . 207

4 Administra¸c˜ ao do Bancos de Dados MySQL . . . . 208

4.1 Configurando o MySQL . . . . 208

4.1.1 Op¸c˜oes de Linha de Comando do mysqld . . . . 208

4.1.2 Arquivo de Op¸c˜oes ‘my.cnf’ . . . . 217

4.2 Executando M´ ultiplos MySQL Servers na Mesma M´aquina . . . . 220

4.2.1 Executando M´ ultiplos Servidores no Windows . . 221

4.2.1.1 Iniciando M´ ultiplos Servidores na Linha de Comando . . . . 222

4.2.1.2 Iniciando M´ ultiplos Servidores Como Servi¸cos . . . . 223

4.2.2 Executando M´ ultiplos Servidores no Unix . . . . 225

4.2.3 Usando Programas Clientes em um Ambiente Multi-Servidor . . . . 226

4.3 Detalhes Gerais de Seguran¸ca e o Sistema de Privil´egio de Acesso do MySQL . . . . 227

4.3.1 Seguran¸ca Geral . . . . 227

4.3.2 Como Tornar o MySQL Seguro contra Crackers . . . . 230

4.3.3 Op¸c˜oes de Inicializa¸c˜ao para o mysqld em Rela¸c˜ao a Seguran¸ca. . . . . 231

4.3.4 Detalhes de Seguran¸ca com LOAD DATA LOCAL . . . 232

4.3.5 O Que o Sistema de Privil´egios Faz . . . . 233

4.3.6 Como o Sistema de Privil´egios Funciona. . . . 233

4.3.7 Privil´egios Fornecidos pelo MySQL . . . . 237

4.3.8 Conectando ao Servidor MySQL . . . . 239

4.3.9 Controle de Acesso, Est´agio 1: Verifica¸c˜ao da Conex˜ao . . . . 240

4.3.10 Controle de Acesso, Est´agio 2: Verifica¸c˜ao da Requisi¸c˜ao . . . . 243

4.3.11 Hashing de Senhas no MySQL 4.1 . . . . 246

4.3.12 Causas dos Erros de Accesso Negado . . . . 250

4.4 Gerenciamento das Contas dos Usu´arios no MySQL. . . . 255

4.4.1 A Sintaxe de GRANT e REVOKE . . . . 255

(9)

4.4.2 Nomes de Usu´arios e Senhas do MySQL . . . . 260

4.4.3 Quando as Altera¸c˜oes nos Privil´egios tem Efeito . . . . 261

4.4.4 Configurando os Privil´egios Iniciais do MySQL. . 261

4.4.5 Adicionando Novos Usu´arios ao MySQL . . . . 262

4.4.6 Deletando Usu´arios do MySQL . . . . 265

4.4.7 Limitando os Recursos dos Usu´arios. . . . 266

4.4.8 Configurando Senhas . . . . 267

4.4.9 Mantendo Sua Senha Segura . . . . 268

4.4.10 Usando Conex˜oes Seguras . . . . 269

4.4.10.1 Conceitos Basicos . . . . 269

4.4.10.2 Exigˆencias . . . . 269

4.4.10.3 Configurando Certificados SSL para o MySQL . . . . 270

4.4.10.4 Op¸c˜oes SSL do GRANT . . . . 274

4.4.10.5 Op¸c˜oes SSL de Linha de Comando . . . 275

4.5 Preven¸c˜ao de Disastres e Recupera¸c˜ao . . . . 276

4.5.1 Backups dos Bancos de Dados . . . . 276

4.5.2 Sintaxe de BACKUP TABLE . . . . 278

4.5.3 Sintaxe de RESTORE TABLE. . . . 278

4.5.4 Sintaxe de CHECK TABLE . . . . 279

4.5.5 Sintaxe do REPAIR TABLE . . . . 280

4.5.6 Utilizando myisamchk para Manuten¸c˜ao de Tabelas e Recupera¸c˜ao em Caso de Falhas . . . . 281

4.5.6.1 Sintaxe do myisamchk . . . . 282

4.5.6.2 Op¸c˜oes Gerais do myisamchk . . . . 283

4.5.6.3 Op¸c˜oes de Verifica¸c˜ao do myisamchk . . . 284

4.5.6.4 Op¸c˜oes de Reparos do myisamchk . . . . . 285

4.5.6.5 Outras Op¸c˜oes do myisamchk . . . . 287

4.5.6.6 Uso de Mem´oria do myisamchk . . . . 287

4.5.6.7 Uso do myisamchk para Recupera¸c˜ao em Caso de Falhas . . . . 288

4.5.6.8 Como Verificar Erros em Tabelas . . . . 289

4.5.6.9 Como Reparar Tabelas . . . . 290

4.5.6.10 Otimiza¸c˜ao de Tabelas . . . . 292

4.5.7 Configurando um Regime de Manuten¸c˜ao das Tabelas . . . . 292

4.5.8 Obtendo Informa¸c˜oes sobre as Tabelas . . . . 293

4.6 Adiministra¸c˜ao do Banco de Dados e Referˆencia de Linguagem . . . . 299

4.6.1 Sintaxe de OPTIMIZE TABLE. . . . 299

4.6.2 Sintaxe de ANALYZE TABLE. . . . 299

4.6.3 Sintaxe de CHECKSUM TABLE. . . . 300

4.6.4 Sintaxe de FLUSH . . . . 300

4.6.5 Sintaxe de RESET . . . . 302

4.6.6 Sintaxe de PURGE MASTER LOGS. . . . 302

4.6.7 Sintaxe de KILL . . . . 302

4.6.8 Sintaxe de SHOW . . . . 303

(10)

Dados, Tabelas, Colunas e ´Indices . . . . 304

4.6.8.2 SHOW TABLE STATUS . . . . 305

4.6.8.3 SHOW STATUS . . . . 306

4.6.8.4 SHOW VARIABLES . . . . 309

4.6.8.5 SHOW [BDB] LOGS. . . . 321

4.6.8.6 SHOW PROCESSLIST . . . . 321

4.6.8.7 SHOW GRANTS . . . . 323

4.6.8.8 SHOW CREATE TABLE . . . . 323

4.6.8.9 SHOW WARNINGS | ERRORS . . . . 323

4.6.8.10 SHOW TABLE TYPES . . . . 325

4.6.8.11 SHOW PRIVILEGES . . . . 326

4.7 Localiza¸c˜ao do MySQL e Utiliza¸c˜ao Internacional . . . . 326

4.7.1 O Conjunto de Caracteres Utilizado para Dados e Ordena¸c˜ao . . . . 326

4.7.1.1 German character set . . . . 327

4.7.2 Mensagens de Erros em Outras L´inguas . . . . 328

4.7.3 Adicionando um Novo Conjunto de Caracteres . . 328

4.7.4 Os Vetores de Defini¸c˜oes de Caracteres . . . . 330

4.7.5 Suporte `a Ordena¸c˜ao de Strings . . . . 330

4.7.6 Suporte `a Caracteres Multi-byte . . . . 331

4.7.7 Problemas com Conjuntos de Caracteres . . . . 331

4.8 Utilit´arios e Scripts do Lado do Servidor MySQL . . . . 331

4.8.1 Vis˜ao Geral dos Scripts e Utilit´arios do Lado Servidor. . . . 331

4.8.2 mysqld-safe, o wrapper do mysqld . . . . 332

4.8.3 mysqld_multi, programa para gerenciar m´ ultiplos servidores MySQL . . . . 334

4.8.4 myisampack, O Gerador de Tabelas Compactadas de Somente Leitura do MySQL . . . . 337

4.8.5 mysqld-max, om servidor mysqld extendido . . . . . 344

4.9 Utilit´arios e Scripts do Lado do Cliente MySQL . . . . 346

4.9.1 Vis˜ao Geral dos Utilit´arios e Scripts do Lado do Cliente . . . . 346

4.9.2 mysql, A Ferramenta de Linha de Comando . . . . 347

4.9.3 mysqlcc, The MySQL Control Center . . . . 355

4.9.4 mysqladmin, Administrando um Servidor MySQL . . . . 357

4.9.5 mysqlbinlog, Executando as Consultas a Partir de um Log Bin´ario . . . . 358

4.9.6 Usando mysqlcheck para Manuten¸c˜ao de Tabelas e Recupera¸c˜ao em Caso de Falhas . . . . 360

4.9.7 mysqldump, Descarregando a Estrutura de Tabelas e Dados . . . . 362

4.9.8 mysqlhotcopy, Copiando Bancos de Dados e Tabelas do MySQL . . . . 366

4.9.9 mysqlimport, Importando Dados de Arquivos Texto

. . . . 368

(11)

4.9.10 mysqlshow, Exibindo Bancos de Dados, Tabelas e

Colunas . . . . 370

4.9.11 mysql_config, Op¸c˜oes para compila¸c˜ao do cliente MySQL . . . . 371

4.9.12 perror, Explicando C´odigos de Erros . . . . 372

4.9.13 Como Executar Comandos SQL a Partir de um Arquivo Texto . . . . 372

4.10 Os Arquivos de Log do MySQL . . . . 372

4.10.1 O Log de Erros. . . . 373

4.10.2 O Log de Consultas . . . . 373

4.10.3 O Log de Atualiza¸c˜oes . . . . 374

4.10.4 O Log Bin´ario . . . . 375

4.10.5 O Log para Consultas Lentas . . . . 378

4.10.6 Manuten¸c˜ao do Log de Arquivo. . . . 378

4.11 Replica¸c˜ao no MySQL . . . . 379

4.11.1 Introdu¸c˜ao . . . . 379

4.11.2 Vis˜ao Geral da Implementa¸c˜ao da Replica¸c˜ao . . 380

4.11.3 Detalhes de Implementa¸c˜ao da Replica¸c˜ao . . . . . 381

4.11.4 Como Configurar a Replica¸c˜ao. . . . 386

4.11.5 Recursos de Replica¸c˜ao e Problemas Conhecidos . . . . 390

4.11.6 Op¸c˜oes de Inicializa¸c˜ao da Replica¸c˜ao . . . . 392

4.11.7 Instru¸c˜oes SQL para Controle do Servidor Master . . . . 400

4.11.7.1 PURGE MASTER LOGS . . . . 401

4.11.7.2 RESET MASTER . . . . 401

4.11.7.3 SET SQL_LOG_BIN . . . . 401

4.11.7.4 SHOW BINLOG EVENTS . . . . 401

4.11.7.5 SHOW MASTER STATUS . . . . 402

4.11.7.6 SHOW MASTER LOGS . . . . 402

4.11.7.7 SHOW SLAVE HOSTS . . . . 402

4.11.8 Instru¸c˜oes SQL para Controle do Servidor Slave . . . . 402

4.11.8.1 CHANGE MASTER TO . . . . 402

4.11.8.2 LOAD DATA FROM MASTER . . . . 405

4.11.8.3 LOAD TABLE tbl_name FROM MASTER . . . 405

4.11.8.4 MASTER_POS_WAIT() . . . . 405

4.11.8.5 RESET SLAVE . . . . 406

4.11.8.6 SET GLOBAL SQL_SLAVE_SKIP_COUNTER . . . . 406

4.11.8.7 SHOW SLAVE STATUS . . . . 406

4.11.8.8 START SLAVE . . . . 409

4.11.8.9 STOP SLAVE . . . . 410

4.11.9 FAQ da Replica¸c˜ao . . . . 411

4.11.10 Problemas com Replica¸c˜ao . . . . 416

4.11.11 Relatando Problemas de Replica¸c˜ao. . . . 417

(12)

5.1 Vis˜ao Geral da Otimiza¸c˜ao. . . . 419

5.1.1 Limita¸c˜oes do Projeto MySQL/Trocas . . . . 419

5.1.2 Portabilidade. . . . 420

5.1.3 Para que Utilizamos o MySQL?. . . . 421

5.1.4 O Pacote de Benchmark do MySQL . . . . 422

5.1.5 Utilizando seus Pr´oprios Benchmarks . . . . 423

5.2 Otimizando SELECTs e Outras Consultas . . . . 424

5.2.1 Sintaxe de EXPLAIN (Obter informa¸c˜oes sobre uma SELECT) . . . . 425

5.2.2 Estimando o Desempenho de uma Consulta. . . . . 432

5.2.3 Velocidade das Consultas que Utilizam SELECT. . 432

5.2.4 Como o MySQL Otimiza Cl´ausulas WHERE . . . . 433

5.2.5 Como o MySQL Otimiza IS NULL . . . . 434

5.2.6 Como o MySQL Otimiza Cl´ausulas DISTINCT . . . 435

5.2.7 Como o MySQL Otimiza LEFT JOIN e RIGHT JOIN . . . . 436

5.2.8 Como o MySQL Otimiza Cl´ausulas ORDER BY . . . 437

5.2.9 Como o MySQL Otimiza Cl´ausulas LIMIT . . . . 438

5.2.10 Performance das Consultas que Utilizam INSERT . . . . 439

5.2.11 Performance das Consultas que Utilizam UPDATE . . . . 441

5.2.12 Performance das Consultas que Utilizam DELETE . . . . 441

5.2.13 Mais Dicas sobre Otimiza¸c˜oes . . . . 441

5.3 Detalhes sobre Locks . . . . 444

5.3.1 Como o MySQL Trava as Tabelas. . . . 444

5.3.2 Detalhes sobre Lock de Tabelas . . . . 445

5.4 Otimizando a Estrutura de Banco de Dados . . . . 447

5.4.1 Op¸c˜oes do Projeto . . . . 447

5.4.2 Deixando os Dados com o Menor Tamanho Poss´ivel . . . . 447

5.4.3 Como o MySQL Utiliza ´Indices . . . . 448

5.4.4 ´Indices de Colunas . . . . 450

5.4.5 ´Indices de M´ ultiplas Colunas . . . . 451

5.4.6 Como o MySQL Conta as Tabelas Abertas . . . . . 452

5.4.7 Como o MySQL Abre e Fecha as Tabelas . . . . 452

5.4.8 Desvantagem em Criar um N´ umero Grande de Tabelas no Mesmo Banco de Dados . . . . 453

5.5 Otimizando o Servidor MySQL . . . . 454

5.5.1 Sintonia dos Parˆametros em Tempo de Sistema/Compila¸c˜ao e na Inicializa¸c˜ao . . . . 454

5.5.2 Parˆametros de Sintonia do Servidor . . . . 454

5.5.3 Como a Compila¸c˜ao e a Liga¸c˜ao Afetam a Velocidade do MySQL . . . . 457

5.5.4 Como o MySQL Utiliza a Mem´oria . . . . 458

5.5.5 Como o MySQL Utiliza o DNS . . . . 460

(13)

5.5.6 Sintaxe de SET . . . . 460

5.6 Detalhes de Disco . . . . 465

5.6.1 Utilizando Links Simb´olicos . . . . 466

5.6.1.1 Utilizando Links Simb´olicos para Bancos de Dados . . . . 466

5.6.1.2 Utilizando Links Simb´olicos para Tabelas . . . . 467

6 Referˆ encia de Linguagem do MySQL . . . . 469

6.1 Estrutura da Linguagem . . . . 469

6.1.1 Literais: Como Gravar Strings e Numerais . . . . 469

6.1.1.1 Strings . . . . 469

6.1.1.2 N´ umeros . . . . 471

6.1.1.3 Valores Hexadecimais . . . . 471

6.1.1.4 Valores NULL. . . . 471

6.1.2 Nomes de Banco de dados, Tabela, ´Indice, Coluna e Alias . . . . 472

6.1.3 Caso Sensitivo nos Nomes . . . . 473

6.1.4 Vari´aveis de Usu´ario . . . . 474

6.1.5 Vari´aveis de Sistema . . . . 475

6.1.6 Sintaxe de Coment´arios . . . . 478

6.1.7 Tratamento de Palavras Reservadas no MySQL . . . . 479

6.2 Tipos de Campos . . . . 481

6.2.1 Tipos Num´ericos . . . . 487

6.2.2 Tipos de Data e Hora . . . . 489

6.2.2.1 Assuntos referentes ao ano 2000 (Y2K) e Tipos de Data . . . . 490

6.2.2.2 Os Tipos DATETIME, DATE e TIMESTAMP . . . . 491

6.2.2.3 O Tipo TIME . . . . 495

6.2.2.4 O Tipo YEAR . . . . 496

6.2.3 Tipos String . . . . 496

6.2.3.1 Os Tipos CHAR e VARCHAR . . . . 497

6.2.3.2 Os Tipos BLOB e TEXT . . . . 497

6.2.3.3 O Tipo ENUM . . . . 499

6.2.3.4 O Tipo SET. . . . 500

6.2.4 Escolhendo o Tipo Correto para uma Coluna . . . 501

6.2.5 Usando Tipos de Colunas de Outros Mecanismos de Banco de Dados . . . . 501

6.2.6 Exigˆencias de Armazenamento dos Tipos de Coluna . . . . 502

6.3 Fun¸c˜oes para Uso em Cl´ausulas SELECT e WHERE . . . . 503

6.3.1 Operadores e Fun¸c˜oes de Tipos n˜ao Especificados . . . . 504

6.3.1.1 Parenteses . . . . 504

6.3.1.2 Operadores de Compara¸c˜ao . . . . 504

6.3.1.3 Operadores Logicos . . . . 508

(14)

6.3.2 Fun¸c˜oes String . . . . 511

6.3.2.1 Fun¸c˜oes de Compara¸c˜ao de Strings . . . . 519

6.3.2.2 Caso Sensitivo . . . . 522

6.3.3 Fun¸c˜oes Num´ericas . . . . 522

6.3.3.1 Opera¸c˜oes Aritim´eticas . . . . 522

6.3.3.2 Fun¸c˜oes Matematicas . . . . 523

6.3.4 Fun¸c˜oes de Data e Hora . . . . 529

6.3.5 Fun¸c˜oes de Convers˜ao . . . . 543

6.3.6 Outras Fun¸c˜oes . . . . 545

6.3.6.1 Fun¸c˜oes Bin´arias . . . . 545

6.3.6.2 Fun¸c˜oes Diversas . . . . 546

6.3.7 Fun¸c˜oes e Modificadores para Usar com Cl´ausulas GROUP BY . . . . 555

6.3.7.1 Fun¸c˜oes GROUP BY . . . . 555

6.3.7.2 Modificadores GROUP BY . . . . 558

6.3.7.3 GROUP BY com Campos Escondidos . . . . 561

6.4 Manipula¸c˜ao de Dados: SELECT, INSERT, UPDATE e DELETE . . . . 561

6.4.1 Sintaxe SELECT . . . . 562

6.4.1.1 Sintaxe JOIN . . . . 567

6.4.1.2 Sintaxe UNION . . . . 569

6.4.2 Sintaxe de Subquery . . . . 569

6.4.2.1 A Subquery como um Operandop Escalar . . . . 570

6.4.2.2 Compara¸c˜oes Usando Subquery . . . . 571

6.4.2.3 Subqueries with ANY, IN, and SOME . . . . 571

6.4.2.4 Subqueries with ALL . . . . 572

6.4.2.5 Correlated Subqueries . . . . 572

6.4.2.6 EXISTS and NOT EXISTS . . . . 573

6.4.2.7 Row Subqueries . . . . 573

6.4.2.8 Subqueries in the FROM clause . . . . 574

6.4.2.9 Subquery Errors . . . . 575

6.4.2.10 Optimizing Subqueries . . . . 576

6.4.2.11 Rewriting Subqueries for Earlier MySQL Versions . . . . 577

6.4.3 Sintaxe INSERT . . . . 578

6.4.3.1 Sintaxe INSERT ... SELECT . . . . 581

6.4.3.2 Sintaxe INSERT DELAYED . . . . 581

6.4.4 Sintaxe UPDATE . . . . 583

6.4.5 Sintaxe DELETE . . . . 584

6.4.6 Sintaxe TRUNCATE. . . . 586

6.4.7 Sintaxe REPLACE . . . . 586

6.4.8 Sintaxe LOAD DATA INFILE . . . . 587

6.4.9 Sintaxe HANDLER . . . . 595

6.4.10 Sintaxe DO . . . . 596

6.5 Defini¸c˜ao de Dados: CREATE, DROP e ALTER . . . . 596

6.5.1 Sintaxe CREATE DATABASE . . . . 596

(15)

6.5.2 Sintaxe DROP DATABASE . . . . 596

6.5.3 Sintaxe CREATE TABLE. . . . 597

6.5.3.1 Altera¸c˜ao de Especifica¸c˜oes de Colunas . . . . 606

6.5.4 Sintaxe ALTER TABLE . . . . 607

6.5.5 Sintaxe RENAME TABLE. . . . 611

6.5.6 Sintaxe DROP TABLE . . . . 611

6.5.7 Sintaxe CREATE INDEX. . . . 612

6.5.8 Sintaxe DROP INDEX . . . . 613

6.6 Comandos Utilit´arios B´asicos do Usu´ario MySQL . . . . 613

6.6.1 Sintaxe USE . . . . 613

6.6.2 Sintaxe DESCRIBE (Obtem Informa¸c˜oes Sobre Colunas) . . . . 613

6.7 Comandos Transacionais e de Lock do MySQL . . . . 614

6.7.1 Sintaxe de START TRANSACTION, COMMIT e ROLLBACK . . . . 614

6.7.2 Instru¸c˜oes que N˜ao Podem Ser Desfeitas. . . . 615

6.7.3 Instru¸c˜oes que Fazem um Commit Implicito . . . . 615

6.7.4 Sintaxe de SAVEPOINT e ROLLBACK TO SAVEPOINT . . . . 615

6.7.5 Sintaxe LOCK TABLES e UNLOCK TABLES . . . . 616

6.7.6 Sintaxe SET TRANSACTION . . . . 618

6.8 Pesquisa Full-text no MySQL . . . . 618

6.8.1 Restri¸c˜oes Full-text . . . . 622

6.8.2 Ajuste Fino de Pesquisas Full-text no MySQL . . 623

6.8.3 TODO de Pesquisas Full-text. . . . 624

6.9 Cache de Consultas do MySQL. . . . 624

6.9.1 Como a Cache de Consultas Opera. . . . 625

6.9.2 Configura¸c˜ao da Cache de Consultas . . . . 626

6.9.3 Op¸c˜oes da Cache de Consultas na SELECT . . . . 627

6.9.4 Estado e Manuten¸c˜ao da Cache de Consultas . . . 627

7 Tipos de Tabela do MySQL . . . . 629

7.1 Tabelas MyISAM . . . . 629

7.1.1 Espa¸co Necess´ario para Chaves . . . . 632

7.1.2 Formatos de Tabelas MyISAM . . . . 633

7.1.2.1 Caracter´isticas de Tabelas Est´aticas (Tamanho Fixo) . . . . 633

7.1.2.2 Caracter´isticas de Tabelas Dinˆamicas . . 633

7.1.2.3 Caracter´isticas de Tabelas Compactadas . . . . 634

7.1.3 Problemas com Tabelas MyISAM. . . . 635

7.1.3.1 Tabelas MyISAM Corrompidas . . . . 635

7.1.3.2 O Cliente est´a usando a tabela ou n˜ao a fechou de forma apropriada . . . . 636

7.2 Tabelas MERGE . . . . 636

7.2.1 Problemas com Tabelas MERGE . . . . 639

7.3 Tabelas ISAM . . . . 640

(16)

7.5 Tabelas InnoDB . . . . 642

7.5.1 Vis˜ao Geral de Tabelas InnoDB. . . . 642

7.5.2 InnoDB no MySQL Vers˜ao 3.23. . . . 642

7.5.3 Op¸c˜oes de Inicializa¸c˜ao do InnoDB. . . . 643

7.5.4 Criando Tablespaces no InnoDB . . . . 650

7.5.4.1 Se Alguma Coisa Der Errado Na Cria¸c˜ao Do Banco de Dados . . . . 651

7.5.5 Criando Tabelas InnoDB . . . . 651

7.5.5.1 Convertendo Tabelas MyISAM para InnoDB . . . . 652

7.5.5.2 Restri¸c˜oes FOREIGN KEY . . . . 652

7.5.6 Adicionando e Removendo Arquivos de Dados e Log do InnoDB . . . . 655

7.5.7 Fazendo Backup e Recuperando um Banco de Dados InnoDB . . . . 655

7.5.7.1 For¸cando a recupera¸c˜ao . . . . 657

7.5.7.2 Ponto de Verifica¸c˜ao . . . . 658

7.5.8 Movendo um Banco de Dados InnoDB para Outra M´aquina . . . . 658

7.5.9 Modelo Transacional do InnoDB . . . . 659

7.5.9.1 InnoDB e SET ... TRANSACTION ISOLATION LEVEL ... . . . . 659

7.5.9.2 Leitura Consistente sem Lock . . . . 661

7.5.9.3 Lock de Leitura SELECT ... FOR UPDATE e SELECT ... LOCK IN SHARE MODE . . . . 661

7.5.9.4 Lock da Chave Seguinte: Evitando Problemas com Fantasmas . . . . 662

7.5.9.5 Locks Definidos por Diferentes Instru¸c˜oes SQL no InnoDB . . . . 662

7.5.9.6 Detec¸c˜ao de Deadlock e Rollback . . . . 663

7.5.9.7 Um Exemplo de Como a Leitura Consistente Funciona no InnoDB . . . . 664

7.5.9.8 Como lidar com deadlocks? . . . . 665

7.5.10 Dicas de Ajuste de Desempenho . . . . 666

7.5.10.1 SHOW INNODB STATUS e o Monitor InnoDB . . . . 667

7.5.11 Implementa¸c˜ao de Multi-versioning . . . . 669

7.5.12 Estrutura de Tabelas e ´Indices . . . . 670

7.5.12.1 Estrutura F´isica do ´Indice . . . . 671

7.5.12.2 Buffer de Inser¸c˜ao . . . . 671

7.5.12.3 ´Indices Hash Adaptativos . . . . 672

7.5.12.4 Estrutura dos Registros F´isicos . . . . 672

7.5.12.5 Como Funciona uma Coluna AUTO_INCREMENT no InnoDB . . . . 672

7.5.13 Gerenciamento do Espa¸co de Arquivos e E/S de Disco . . . . 673

7.5.13.1 E/S de Disco . . . . 673

(17)

7.5.13.2 Gerenciamento do Espa¸co de Arquivo

. . . . 674

7.5.13.3 Desfragmentando uma Tabela . . . . 675

7.5.14 Tratando Erros . . . . 675

7.5.15 Restri¸c˜oes em Tabelas InnoDB . . . . 675

7.5.16 Hist´orico de Altera¸c˜oes do InnoDB. . . . 677

7.5.16.1 MySQL/InnoDB-4.1.1, December 4, 2003 . . . . 677

7.5.16.2 MySQL/InnoDB-4.0.16, October 22, 2003 . . . . 677

7.5.16.3 MySQL/InnoDB-3.23.58, September 15, 2003 . . . . 677

7.5.16.4 MySQL/InnoDB-4.0.15, September 10, 2003 . . . . 677

7.5.16.5 MySQL/InnoDB-4.0.14, Junho de 2003 . . . . 678

7.5.16.6 MySQL/InnoDB-3.23.57, June 20, 2003 . . . . 679

7.5.16.7 MySQL/InnoDB-4.0.13, 20 de Maio de 2003 . . . . 679

7.5.16.8 MySQL/InnoDB-4.1.0, 03 de Abril de 2003 . . . . 680

7.5.16.9 MySQL/InnoDB-3.23.56, 17 de Mar¸co de 2003 . . . . 680

7.5.16.10 MySQL/InnoDB-4.0.12, 18 Mar¸co de 2003 . . . . 681

7.5.16.11 MySQL/InnoDB-4.0.11, 25 de Fevereiro de 2003 . . . . 681

7.5.16.12 MySQL/InnoDB-4.0.10, 04 de Fevereiro de 2003 . . . . 681

7.5.16.13 MySQL/InnoDB-3.23.55, 24 de Janeiro de 2003 . . . . 682

7.5.16.14 MySQL/InnoDB-4.0.9, 14 de Janeiro de 2003 . . . . 682

7.5.16.15 MySQL/InnoDB-4.0.8, 07 de Janeiro de 2003 . . . . 683

7.5.16.16 MySQL/InnoDB-4.0.7, 26 de Dezembro de 2002 . . . . 683

7.5.16.17 MySQL/InnoDB-4.0.6, 19 de Dezembro de 2002 . . . . 683

7.5.16.18 MySQL/InnoDB-3.23.54, 12 de Dezembro de 2002 . . . . 684

7.5.16.19 MySQL/InnoDB-4.0.5, 18 de Novembro de 2002 . . . . 684

7.5.16.20 MySQL/InnoDB-3.23.53, 09 de Outubro de 2002 . . . . 685

7.5.16.21 MySQL/InnoDB-4.0.4, 02 de Outubro de

2002 . . . . 686

(18)

2002 . . . . 687

7.5.16.23 MySQL/InnoDB-3.23.52, 16 de Agosto de 2002 . . . . 687

7.5.16.24 MySQL/InnoDB-4.0.2, 10 de Julho de 2002 . . . . 689

7.5.16.25 MySQL/InnoDB-3.23.51, 12 de Junho de 2002 . . . . 689

7.5.16.26 MySQL/InnoDB-3.23.50, 23 de Abril de 2002 . . . . 689

7.5.16.27 MySQL/InnoDB-3.23.49, 17 de Fevereiro de 2002 . . . . 690

7.5.16.28 MySQL/InnoDB-3.23.48, 09 de Fevereiro de 2002 . . . . 690

7.5.16.29 MySQL/InnoDB-3.23.47, 28 de Dezembro de 2001 . . . . 691

7.5.16.30 MySQL/InnoDB-4.0.1, 23 de Dezembro de 2001 . . . . 692

7.5.16.31 MySQL/InnoDB-3.23.46, 30 de Novembro de 2001 . . . . 692

7.5.16.32 MySQL/InnoDB-3.23.45, 23 de Novembro de 2001 . . . . 692

7.5.16.33 MySQL/InnoDB-3.23.44, 02 de Novembro de 2001 . . . . 693

7.5.16.34 MySQL/InnoDB-3.23.43, 04 de Outubro de 2001 . . . . 693

7.5.16.35 MySQL/InnoDB-3.23.42, 09 de Setembro de 2001 . . . . 694

7.5.16.36 MySQL/InnoDB-3.23.41, 13 de Agosto de 2001 . . . . 694

7.5.16.37 MySQL/InnoDB-3.23.40, 16 de Julho de 2001 . . . . 694

7.5.16.38 MySQL/InnoDB-3.23.39, 13 de Junho de 2001 . . . . 694

7.5.16.39 MySQL/InnoDB-3.23.38, 12 de Maio de 2001 . . . . 694

7.5.17 Informa¸c˜oes de Contato do InnoDB. . . . 694

7.6 Tabelas BDB ou BerkeleyDB . . . . 695

7.6.1 Vis˜ao Geral de Tabelas BDB. . . . 695

7.6.2 Instalando BDB . . . . 695

7.6.3 Op¸c˜oes de Inicializa¸c˜ao do BDB. . . . 696

7.6.4 Caracter´isticas de Tabelas BDB: . . . . 697

7.6.5 Itens a serem corrigidos no BDB num futuro pr´oximo: . . . . 698

7.6.6 Sistemas operacionais suportados pelo BDB. . . . 698

7.6.7 Restri¸c˜oes em Tabelas BDB . . . . 699

7.6.8 Erros Que Podem Ocorrer Usando Tabelas BDB . . 699

(19)

8 Introdu¸c˜ ao ao MaxDB . . . . 701

8.1 Historia do MaxDB . . . . 701

8.2 Licenciamento e Suporte . . . . 701

8.3 Conceitos B´asicos do MaxDB . . . . 701

8.4 Diferen¸cas de Recursos entre o MaxDB e o MySQL . . . . 701

8.5 Interoperability Features between MaxDB and MySQL . . . 702

8.6 MaxDB-related Links . . . . 702

8.7 Reserved Words in MaxDB . . . . 703

8.8 Fun¸c˜oes . . . . 705

8.9 Tipos de Colunas . . . . 705

9 Conjunto de Caracteres Nacionais e Unicode . . . . 707

9.1 Conjuntos de Caracteres e Collations em Geral . . . . 707

9.2 Conjunto de Caracteres e Collations no MySQL . . . . 708

9.3 Determinando o Conjunto de Caracteres e Collation Padr˜oes . . . . 708

9.3.1 Conjunto de Caracteres e Collations do Servidor . . . . 708

9.3.2 Conjunto de Caracteres e Collation de Banco de Dados . . . . 709

9.3.3 O Conjunto de Caracteres e Collations de Tabela . . . . 710

9.3.4 Conjunto de Caracteres e Collation de Colunas . . 710

9.3.5 Exemplos de Atribui¸c˜oes de Conjuntos de Caracteres e Collation . . . . 711

9.3.6 Conjunto de Caracteres e Collation de Conex˜ao . . . . 712

9.3.7 Conjunto de Caracteres e Collation de Caracter de String Literal . . . . 713

9.3.8 Cl´ausula COLLATE em V´arias Partes de uma Consulta SQL . . . . 714

9.3.9 Precedˆencia da Cl´ausula COLLATE . . . . 714

9.3.10 Operador BINARY . . . . 715

9.3.11 Alguns Casos Especiais Onde a Determina¸c˜ao da Collation e Trabalhosa . . . . 715

9.3.12 Collations Devem Ser para o Conjunto de Caracteres Certo . . . . 716

9.3.13 Um exemplo do Efeito da Collation . . . . 716

9.4 Opera¸c˜oes Afetadas pelo Suporte a Conjunto de Caracteres . . . . 716

9.4.1 Strings de Resultados . . . . 717

9.4.2 CONVERT() . . . . 717

9.4.3 CAST() . . . . 717

9.4.4 SHOW CHARACTER SET . . . . 718

9.4.5 SHOW COLLATION . . . . 718

9.4.6 SHOW CREATE DATABASE. . . . 719

9.4.7 SHOW FULL COLUMNS . . . . 719

(20)

9.6 UTF8 para Metdados. . . . 720

9.7 Compatibilidade com Outros SGBDs . . . . 721

9.8 Novo Formato do Arquivo de Configura¸c˜ao do Conjunto de Caracteres . . . . 721

9.9 Conjunto de Caracteres Nacional . . . . 721

9.10 Atualizando para o MySQL 4.0. . . . 722

9.10.1 Conjunto de Caracteres do MySQL e o Par/Conjunto de Caracter/Collation Correspondente do MySQL 4.1 . . . . 723

9.11 Os conjuntos de Caracteres e Collations que o MySQL Suporta . . . . 723

9.11.1 O Conjunto de Caracteres Unicode. . . . 725

9.11.2 Conjunto de Caracteres para Plataformas Espec´ificas . . . . 725

9.11.3 Conjunto de Caracteres do Sul da Europa e Oriente M´edio . . . . 725

9.11.4 Os Conjuntos de Caracteres Asi´aticos . . . . 725

9.11.5 Os Conjuntos de Caracteres B´alticos . . . . 726

9.11.6 Os Conjuntos de Caracteres Cir´ilicos . . . . 726

9.11.7 O Conjunto de Caracteres da Europa Central . . 727

9.11.8 Os Conjuntos de Caracteres da Europa Ocidental . . . . 728

10 Extens˜ oes Espacias em MySQL . . . . 730

10.1 Introdu¸c˜ao . . . . 730

10.2 O Modelo Geom´atrico OpenGIS . . . . 730

10.2.1 A Hierarquia da Classe Geometry . . . . 731

10.2.2 Classe Geometry. . . . 732

10.2.3 Classe Point . . . . 733

10.2.4 Classe Curve . . . . 733

10.2.5 Classe LineString . . . . 734

10.2.6 Classe Surface . . . . 734

10.2.7 Classe Polygon . . . . 734

10.2.8 Classe GeometryCollection . . . . 735

10.2.9 Classe MultiPoint . . . . 735

10.2.10 Classe MultiCurve . . . . 735

10.2.11 Classe MultiLineString (Multi Linhas) . . . . . 736

10.2.12 Classe MultiSurface (Multi Superf´icies) . . . . . 736

10.2.13 Classe MultiPolygon (Multi Pol´igonos) . . . . 736

10.3 Formatos de Dados Espaciais Suportados . . . . 737

10.3.1 Formato Well-Known Text (WKT). . . . 737

10.3.2 Formato Well-Known Binary (WKB). . . . 738

10.4 Criando um Banco de Dados MySQL Habilitado Espacialmente . . . . 738

10.4.1 Tipos de Dados Espaciais do MySQL . . . . 739

10.4.2 Criando Valores Espaciais . . . . 739

(21)

10.4.2.1 Criando Valores Geometry Usando

Fun¸c˜oes WKT . . . . 739

10.4.2.2 Criando Valores Geometry Usando Fun¸c˜oes WKB . . . . 740

10.4.2.3 Criando uma Valor de Geometira Usando Fun¸c˜oes Espec´ificas do MySQL . . . . 741

10.4.3 Criando Colunas Espaciais . . . . 742

10.4.4 Entrando com Dados em Colunas Espaciais . . . . 743

10.4.5 Buscando Dados Espaciais . . . . 744

10.4.5.1 Buscando Dados Espaciais em um Formato Interno . . . . 744

10.4.5.2 Buscando Dados Espaciais no Formato WKT . . . . 744

10.4.5.3 Buscando Dados Espaciais no Formato WKB . . . . 744

10.5 Analisando Informa¸c˜ao Espacial . . . . 744

10.5.1 Fun¸c˜oes Para Converter Geometrias Entre Formatos Diferentes . . . . 745

10.5.2 Fun¸c˜oes de An´alise das Propriedades de Geometry . . . . 745

10.5.2.1 Fun¸c˜oes de An´alise das Propriedades de Geometry em Geral . . . . 746

10.5.2.2 Fun¸c˜oes de An´alise das Propriedades de Point . . . . 747

10.5.2.3 Fun¸c˜oes de An´alise das Propriedades de LineString . . . . 748

10.5.2.4 Fun¸c˜oes de An´alise das Propriedades de MultiLineString . . . . 749

10.5.2.5 Fun¸c˜oes de An´alise das Propriedades de Polygon . . . . 750

10.5.2.6 Fun¸c˜oes de An´alise das Propriedades de MultiPolygon . . . . 751

10.5.2.7 Fun¸c˜oes de An´alise das Propriedades de GeometryCollection . . . . 751

10.5.3 Fun¸c˜oes Que Criam Novas Geometrias de Outras Existentes . . . . 752

10.5.3.1 Fun¸c˜oes de Geometria Que Produzem Novas Geometrias . . . . 752

10.5.3.2 Operadores Espaciais . . . . 752

10.5.4 Fun¸c˜oes Para Testar Rela¸c˜oes Espaciais Entre Objetos Geom´etricos . . . . 753

10.5.5 Rela¸c˜oes de Retˆangulo de Limite M´inimo (Minimal Bounding Rectangles - MBR) em Geometrias . . . . . 753

10.5.6 Fun¸c˜oes que Testam Relacionamentos Espaciais Entre Geometrias . . . . 754

10.6 Otimizando An´alises Espaciais . . . . 755

10.6.1 Criando ´Indices Espaciais . . . . 755

10.6.2 Usando ´Indice Espacial . . . . 756

(22)

10.7.1 Recursos GIS Que Ainda N˜ao Est˜ao Implementados . . . . 758

11 Stored Procedures e Fun¸c˜ oes . . . . 760

11.1 Sintaxe de Stored Procedure . . . . 760 11.1.1 Maintaining Stored Procedures . . . . 761 11.1.1.1 CREATE PROCEDURE and CREATE FUNCTION

. . . . 761 11.1.1.2 ALTER PROCEDURE and ALTER FUNCTION

. . . . 763 11.1.1.3 DROP PROCEDURE and DROP FUNCTION. . 763 11.1.1.4 SHOW CREATE PROCEDURE and SHOW CREATE

FUNCTION . . . . 763 11.1.2 SHOW PROCEDURE STATUS and SHOW FUNCTION

STATUS . . . . 764

11.1.3 CALL . . . . 764

11.1.4 BEGIN ... END Compound Statement . . . . 764

11.1.5 DECLARE Statement . . . . 764

11.1.6 Variables in Stored Procedures . . . . 764

11.1.6.1 DECLARE Local Variables . . . . 765

11.1.6.2 Variable SET Statement . . . . 765

11.1.6.3 SELECT ... INTO Statement . . . . 765

11.1.7 Conditions and Handlers . . . . 765

11.1.7.1 DECLARE Conditions . . . . 765

11.1.7.2 DECLARE Handlers . . . . 765

11.1.8 Cursors . . . . 767

11.1.8.1 Declaring Cursors . . . . 768

11.1.8.2 Cursor OPEN Statement . . . . 768

11.1.8.3 Cursor FETCH Statement . . . . 768

11.1.8.4 Cursor CLOSE Statement . . . . 768

11.1.9 Flow Control Constructs . . . . 768

11.1.9.1 IF Statement . . . . 768

11.1.9.2 CASE Statement . . . . 768

11.1.9.3 LOOP Statement . . . . 769

11.1.9.4 LEAVE Statement . . . . 769

11.1.9.5 ITERATE Statement . . . . 769

11.1.9.6 REPEAT Statement . . . . 770

11.1.9.7 WHILE Statement . . . . 770

(23)

12 Ferramentas de Clientes e APIs do MySQL . . . . 772

12.1 API C do MySQL . . . . 772

12.1.1 Tipos de Dados da API C . . . . 772

12.1.2 Vis˜ao Geral das Fun¸c˜ao da API C . . . . 775

12.1.3 Descri¸c˜ao das Fun¸c˜oes da API C . . . . 779

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.11 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.22 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.33 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.42 mysql_real_connect() . . . . 809

(24)

12.1.3.44 mysql_real_query() . . . . 813 12.1.3.45 mysql_reload() . . . . 813 12.1.3.46 mysql_row_seek(). . . . 814 12.1.3.47 mysql_row_tell(). . . . 814 12.1.3.48 mysql_select_db() . . . . 815 12.1.3.49 mysql_set_server_option() . . . . 815 12.1.3.50 mysql_shutdown(). . . . 816 12.1.3.51 mysql_sqlstate(). . . . 817 12.1.3.52 mysql_ssl_set() . . . . 817 12.1.3.53 mysql_stat() . . . . 818 12.1.3.54 mysql_store_result() . . . . 818 12.1.3.55 mysql_thread_id() . . . . 820 12.1.3.56 mysql_use_result() . . . . 820 12.1.3.57 mysql_commit() . . . . 821 12.1.3.58 mysql_rollback(). . . . 822 12.1.3.59 mysql_autocommit() . . . . 822 12.1.3.60 mysql_more_results() . . . . 822 12.1.3.61 mysql_next_result() . . . . 823 12.1.4 Instru¸c˜oes Preparadas da API C . . . . 824 12.1.5 Tipos de Dados de Instru¸c˜oes Preparadas da API C . . . . 824 12.1.6 Vis˜ao Geral das Fun¸c˜oes de Instru¸c˜oes Preparadas

da API C . . . . 827 12.1.7 Descri¸c˜ao das Fun¸c˜oes de Instru¸c˜ao Preparada da

API C . . . . 829 12.1.7.1 mysql_prepare() . . . . 829 12.1.7.2 mysql_param_count() . . . . 831 12.1.7.3 mysql_get_metadata() . . . . 831 12.1.7.4 mysql_bind_param() . . . . 832 12.1.7.5 mysql_execute() . . . . 833 12.1.7.6 mysql_stmt_affected_rows() . . . . 837 12.1.7.7 mysql_bind_result() . . . . 838 12.1.7.8 mysql_stmt_store_result() . . . . 839 12.1.7.9 mysql_stmt_data_seek() . . . . 840 12.1.7.10 mysql_stmt_row_seek() . . . . 840 12.1.7.11 mysql_stmt_row_tell() . . . . 841 12.1.7.12 mysql_stmt_num_rows() . . . . 841 12.1.7.13 mysql_fetch() . . . . 842 12.1.7.14 mysql_send_long_data() . . . . 847 12.1.7.15 mysql_stmt_close() . . . . 849 12.1.7.16 mysql_stmt_errno() . . . . 850 12.1.7.17 mysql_stmt_error() . . . . 850 12.1.7.18 mysql_stmt_sqlstate() . . . . 851 12.1.8 Tratando a Execu¸c˜ao de M´ ultiplas Consultas na

API C . . . . 851 12.1.9 Manipulando Valores de Data e Hora na API C

. . . . 852

(25)

12.1.10 Descri¸c˜ao das Fun¸c˜oes de Threads da API C. . 854 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 12.1.11 Descri¸c˜ao das Fun¸c˜oes do Servidor Embutido da

API C . . . . 855 12.1.11.1 mysql_server_init() . . . . 855 12.1.11.2 mysql_server_end() . . . . 856 12.1.12 D´ uvidas e problemas comuns ao utilzar a API C

. . . . 857 12.1.12.1 Porque Algumas Vezes

mysql_store_result() Retorna NULL Ap´os mysql_query() Returnar com Sucesso? . . . . 857 12.1.12.2 Que Resultados Posso Onbetr de uma

Consulta? . . . . 857 12.1.12.3 Como Posso Obter a ID ´ Unica para a

Ultima Linha Inserida? ´ . . . . 857 12.1.12.4 Problemas com Liga¸c˜ao na API C . . . 858 12.1.13 Construindo Programas Clientes . . . . 858 12.1.14 Como Fazer um Cliente em Threads . . . . 859 12.1.15 libmysqld, a Biblioteca do Servidor Embutido

MySQL . . . . 860 12.1.15.1 Vis˜ao Geral da Biblioteca do Servidor

MySQL Embutido . . . . 860 12.1.15.2 Compilando Programas com libmysqld

. . . . 861 12.1.15.3 Restri¸c˜oes no Uso de um Servidor

MySQL Embutido . . . . 861 12.1.15.4 Usando Arquivo de Op¸c˜oes com o

Servidor Embutido . . . . 861 12.1.15.5 Itens a Fazer no Servidor Embutido

(TODO) . . . . 862 12.1.15.6 Um Exemplo Simples de Servidor

Embutido . . . . 862 12.1.15.7 Licensiando o Servidor Embutido . . . 866 12.2 Suporte ODBC ao MySQL. . . . 866 12.2.1 Como Instalar o MyODBC . . . . 866 12.2.2 Como Preencher os V´arios Campos no Programa de Administra¸c˜ao do ODBC . . . . 867 12.2.3 Parˆametros de Conex˜ao do MyODBC . . . . 868 12.2.4 Como Relatar Problemas com o MyODBC . . . . 869 12.2.5 Programas que Funcionam com MyODBC . . . . . 870 12.2.6 Como Obter o Valor de uma Coluna

AUTO_INCREMENT no ODBC . . . . 874

12.2.7 Relatando Problemas com MyODBC. . . . 875

12.3 Conectividade Java (JDBC) ao MySQL . . . . 876

12.4 API PHP do MySQL . . . . 876

(26)

12.5 API Perl do MySQL . . . . 876 12.5.1 DBI com DBD::mysql . . . . 877 12.5.2 A interface DBI . . . . 877 12.5.3 Mais Informa¸c˜oes DBI/DBD . . . . 883 12.6 API C++ do MySQL . . . . 883 12.6.1 Borland C++ . . . . 883 12.7 API Python do MySQL . . . . 884 12.8 API Tcl do MySQL . . . . 884 12.9 Eiffel Wrapper do MySQL . . . . 884

13 Tratamento de Erros no MySQL . . . . 885

13.1 Erros Retornados . . . . 885

14 Estendendo o MySQL . . . . 892

14.1 MySQL Internals. . . . 892 14.1.1 Threads MySQL. . . . 892 14.1.2 Pacotes de Teste do MySQL. . . . 892 14.1.2.1 Executando o Pacote de Testes do MySQL . . . . 893 14.1.2.2 Extendendo o Pacote de Teste do MySQL

. . . . 893 14.1.2.3 Relatando Bugs no Pacote de Teste do

MySQL . . . . 894 14.2 Adicionando Novas Fun¸c˜oes ao MySQL . . . . 895 14.2.1 Sintaxe CREATE FUNCTION/DROP FUNCTION . . . . . 896 14.2.2 Adicionando Novas Fun¸c˜oes Definidas Por Usu´ario

. . . . 896 14.2.2.1 Sequˆencia de Chamadas UDF para

Fun¸c˜oes Simples . . . . 898 14.2.2.2 Sequˆencia de Chamadas UDF para

Fun¸c˜oes Agregadas . . . . 899 14.2.2.3 Processando Argumentos . . . . 900 14.2.2.4 Valor de Retorno e Tartamento de Erros

. . . . 902 14.2.2.5 Compilando e Instalando Fun¸c˜oes

Definidas Por Usu´ario . . . . 902

14.2.3 Adicionando uma Nova Fun¸c˜ao Nativa . . . . 904

14.3 Adicionado Novos Procedimentos ao MySQL . . . . 905

14.3.1 An´alise de Procedimento . . . . 905

14.3.2 Escrevendo um Procedimento. . . . 906

(27)

Apˆ endice A Problemas e Erros Comuns . . . . . 907

A.1 Como Determinar o Que Est´a Causando Problemas . . . . . 907 A.2 Erros Comuns Usando o MySQL . . . . 908 A.2.1 Erro: Access Denied . . . . 908 A.2.2 Erro: MySQL server has gone away. . . . 908 A.2.3 Erro: Can’t connect to [local] MySQL server

. . . . 909 A.2.4 Erro: Client does not support authentication

protocol . . . . 911 A.2.5 Erro: Host ’...’ is blocked . . . . 912 A.2.6 Erro: Too many connections . . . . 912 A.2.7 Erro: Some non-transactional changed tables

couldn’t be rolled back . . . . 912 A.2.8 Erro: Out of memory . . . . 913 A.2.9 Erro: Packet too large . . . . 913 A.2.10 Erros de Comunica¸c˜ao / Comunica¸c˜ao Abortada

. . . . 914 A.2.11 Erro: The table is full . . . . 915 A.2.12 Erro: Can’t create/write to file . . . . 915 A.2.13 Erro no Cliente: Commands out of sync . . . . 916 A.2.14 Erro: Ignoring user . . . . 916 A.2.15 Erro: Table ’xxx’ doesn’t exist . . . . 916 A.2.16 Erro: Can’t initialize character set xxx. . 917 A.2.17 Arquivo N˜ao Encontrado . . . . 917 A.3 Assuntos Relacionados a Instala¸c˜ao . . . . 918

A.3.1 Problemas de Liga¸c˜ao com a Biblioteca do Cliente MySQL . . . . 918 A.3.2 Como Executar o MySQL Como Um Usu´ario

Normal . . . . 919 A.3.3 Problemas com Permiss˜oes de Arquivos . . . . 920 A.4 Assuntos Relacionados a Administra¸c˜ao . . . . 920 A.4.1 O Que Fazer Se o MySQL Continua Falhando . . 921 A.4.2 Como Recuperar uma Senha de Root Esquecida

. . . . 923 A.4.3 Como o MySQL Trata de Discos Sem Espa¸co . . 924 A.4.4 Onde o MySQL Armazena Arquivos Tempor´arios

. . . . 924 A.4.5 Como Proteger ou AlterarHow to Protect or Change the MySQL Socket File ‘/tmp/mysql.sock’ . . . . 925 A.4.6 Problemas Com Fuso Hor´ario . . . . 926 A.5 Assuntos Relacionados a Consultas. . . . 926 A.5.1 Caso-Sensitivito em Pesquisas . . . . 926 A.5.2 Problemas Usando Colunas DATE . . . . 926 A.5.3 Problemas com Valores NULL . . . . 928 A.5.4 Problemas com alias . . . . 929 A.5.5 Deletando Linhas de Tabelas Relacionadas . . . . . 929 A.5.6 Resolvendo Problemas Com Registros N˜ao

Encontrados . . . . 930

(28)

. . . . 930 A.6 Assuntos Relacionados ao Otimizador . . . . 932 A.6.1 Camo evitar o varredura da tabela,,,. . . . 933 A.7 Assuntos Relacionados a Defini¸c˜oes de Tabelas . . . . 933 A.7.1 Problemas com ALTER TABLE. . . . . 933 A.7.2 Como Alterar a Ordem das Colunas em Uma Tabela . . . . 934 A.7.3 Problemas com TEMPORARY TABLE . . . . 934

Apˆ endice B Colaboradores do MySQL . . . . 936

B.1 Desenvolvedores do MySQL . . . . 936 B.2 Coolaboradores do MySQL . . . . 939 B.3 Respons´aveis pela Documenta¸c˜ao e Tradu¸c˜ao . . . . 943 B.4 Bibliotecas usadas e incluidas com o MySQL . . . . 944 B.5 Pacotes que suportam o MySQL . . . . 945 B.6 Ferramentas que s˜ao usadas para criar o MySQL . . . . 946 B.7 Respons´aveis pelo Suporte do MySQL . . . . 946

Apˆ endice C Hist´ orico de Altera¸c˜ oes do MySQL . . . . 948

C.1 Altera¸c˜oes na distribui¸c˜ao 5.0.0 (Development) . . . . 948 C.2 Altera¸c˜oes na distribui¸c˜ao 4.1.x (Alpha) . . . . 948

C.2.1 Altera¸c˜oes na distribui¸c˜ao 4.1.2 (not released yet) . . . . 949 C.2.2 Altera¸c˜oes na distribui¸c˜ao 4.1.1 (01 de Dez de 2003)

. . . . 950 C.2.3 Altera¸c˜oes na distribui¸c˜ao 4.1.0 (03 Apr 2003:

Alpha) . . . . 954 C.3 Altera¸c˜oes na distribui¸c˜ao 4.0.x (Production) . . . . 956

C.3.1 Altera¸c˜oes na distribui¸c˜ao 4.0.17 (not released yet) . . . . 957 C.3.2 Altera¸c˜oes na distribui¸c˜ao 4.0.16 (17 Out 2003)

. . . . 959 C.3.3 Altera¸c˜oes na distribui¸c˜ao 4.0.15 (03 Sep 2003)

. . . . 961 C.3.4 Altera¸c˜oes na distribui¸c˜ao 4.0.14 (18 Jul 2003) . . 965 C.3.5 Altera¸c˜oes na distribui¸c˜ao 4.0.13 (16 May 2003)

. . . . 969 C.3.6 Altera¸c˜oes na distribui¸c˜ao 4.0.12 (15 Mar 2003:

Production) . . . . 972 C.3.7 Altera¸c˜oes na distribui¸c˜ao 4.0.11 (20 Feb 2003)

. . . . 974 C.3.8 Altera¸c˜oes na distribui¸c˜ao 4.0.10 (29 Jan 2003)

. . . . 975

C.3.9 Altera¸c˜oes na distribui¸c˜ao 4.0.9 (09 Jan 2003) . . 976

(29)

C.3.10 Altera¸c˜oes na distribui¸c˜ao 4.0.8 (07 Jan 2003) . . . . 977 C.3.11 Altera¸c˜oes na distribui¸c˜ao 4.0.7 (20 Dec 2002)

. . . . 977 C.3.12 Altera¸c˜oes na distribui¸c˜ao 4.0.6 (14 Dec 2002:

Gamma) . . . . 978 C.3.13 Altera¸c˜oes na distribui¸c˜ao 4.0.5 (13 Nov 2002)

. . . . 979 C.3.14 Altera¸c˜oes na distribui¸c˜ao 4.0.4 (29 Sep 2002)

. . . . 981 C.3.15 Altera¸c˜oes na distribui¸c˜ao 4.0.3 (26 Aug 2002:

Beta) . . . . 983 C.3.16 Altera¸c˜oes na distribui¸c˜ao 4.0.2 (01 Jul 2002) . . 985 C.3.17 Altera¸c˜oes na distribui¸c˜ao 4.0.1 (23 Dec 2001)

. . . . 988 C.3.18 Altera¸c˜oes na distribui¸c˜ao 4.0.0 (Oct 2001: Alpha)

. . . . 989 C.4 Altera¸c˜oes na distribui¸c˜ao 3.23.x (Recent; still supported)

. . . . 991 C.4.1 Altera¸c˜oes na distribui¸c˜ao 3.23.59 (not released yet)

. . . . 991 C.4.2 Altera¸c˜oes na distribui¸c˜ao 3.23.58 (11 Sep 2003)

. . . . 992 C.4.3 Altera¸c˜oes na distribui¸c˜ao 3.23.57 (06 Jun 2003)

. . . . 992 C.4.4 Altera¸c˜oes na distribui¸c˜ao 3.23.56 (13 Mar 2003)

. . . . 993 C.4.5 Altera¸c˜oes na distribui¸c˜ao 3.23.55 (23 Jan 2003)

. . . . 994 C.4.6 Altera¸c˜oes na distribui¸c˜ao 3.23.54 (05 Dec 2002)

. . . . 995 C.4.7 Altera¸c˜oes na distribui¸c˜ao 3.23.53 (09 Oct 2002)

. . . . 996 C.4.8 Altera¸c˜oes na distribui¸c˜ao 3.23.52 (14 Aug 2002)

. . . . 997 C.4.9 Altera¸c˜oes na distribui¸c˜ao 3.23.51 (31 May 2002)

. . . . 997 C.4.10 Altera¸c˜oes na distribui¸c˜ao 3.23.50 (21 Apr 2002)

. . . . 998 C.4.11 Altera¸c˜oes na distribui¸c˜ao 3.23.49 . . . . 999 C.4.12 Altera¸c˜oes na distribui¸c˜ao 3.23.48 (07 Feb 2002)

. . . . 999 C.4.13 Altera¸c˜oes na distribui¸c˜ao 3.23.47 (27 Dec 2001)

. . . . 1000 C.4.14 Altera¸c˜oes na distribui¸c˜ao 3.23.46 (29 Nov 2001)

. . . . 1000 C.4.15 Altera¸c˜oes na distribui¸c˜ao 3.23.45 (22 Nov 2001)

. . . . 1001

(30)

. . . . 1001 C.4.17 Altera¸c˜oes na distribui¸c˜ao 3.23.43 (04 Oct 2001)

. . . . 1002 C.4.18 Altera¸c˜oes na distribui¸c˜ao 3.23.42 (08 Sep 2001)

. . . . 1003 C.4.19 Altera¸c˜oes na distribui¸c˜ao 3.23.41 (11 Aug 2001)

. . . . 1004 C.4.20 Altera¸c˜oes na distribui¸c˜ao 3.23.40 . . . . 1004 C.4.21 Altera¸c˜oes na distribui¸c˜ao 3.23.39 (12 Jun 2001)

. . . . 1005 C.4.22 Altera¸c˜oes na distribui¸c˜ao 3.23.38 (09 May 2001)

. . . . 1005 C.4.23 Altera¸c˜oes na distribui¸c˜ao 3.23.37 (17 Apr 2001)

. . . . 1006 C.4.24 Altera¸c˜oes na distribui¸c˜ao 3.23.36 (27 Mar 2001)

. . . . 1007 C.4.25 Altera¸c˜oes na distribui¸c˜ao 3.23.35 (15 Mar 2001)

. . . . 1007 C.4.26 Altera¸c˜oes na distribui¸c˜ao 3.23.34a . . . . 1008 C.4.27 Altera¸c˜oes na distribui¸c˜ao 3.23.34 (10 Mar 2001)

. . . . 1008 C.4.28 Altera¸c˜oes na distribui¸c˜ao 3.23.33 (09 Feb 2001)

. . . . 1009 C.4.29 Altera¸c˜oes na distribui¸c˜ao 3.23.32 (22 Jan 2001:

Production) . . . . 1010 C.4.30 Altera¸c˜oes na distribui¸c˜ao 3.23.31 (17 Jan 2001)

. . . . 1010 C.4.31 Altera¸c˜oes na distribui¸c˜ao 3.23.30 (04 Jan 2001)

. . . . 1011 C.4.32 Altera¸c˜oes na distribui¸c˜ao 3.23.29 (16 Dec 2000)

. . . . 1012 C.4.33 Altera¸c˜oes na distribui¸c˜ao 3.23.28 (22 Nov 2000:

Gamma) . . . . 1013 C.4.34 Altera¸c˜oes na distribui¸c˜ao 3.23.27 (24 Oct 2000)

. . . . 1015 C.4.35 Altera¸c˜oes na distribui¸c˜ao 3.23.26 (18 Oct 2000)

. . . . 1015 C.4.36 Altera¸c˜oes na distribui¸c˜ao 3.23.25 (29 Sep 2000)

. . . . 1016 C.4.37 Altera¸c˜oes na distribui¸c˜ao 3.23.24 (08 Sep 2000)

. . . . 1017 C.4.38 Altera¸c˜oes na distribui¸c˜ao 3.23.23 (01 Sep 2000)

. . . . 1018 C.4.39 Altera¸c˜oes na distribui¸c˜ao 3.23.22 (31 Jul 2000)

. . . . 1019

C.4.40 Altera¸c˜oes na distribui¸c˜ao 3.23.21 . . . . 1019

C.4.41 Altera¸c˜oes na distribui¸c˜ao 3.23.20 . . . . 1020

Referências

Documentos relacionados

discussão, não havendo manifestações, a vice-presidente passou ao regime de votação. A vice-presidente passou a palavra ao conselheiro

Durante uma das aulas da disciplina Iniciação à Produção Monográfica lecionada pela professora Mestra Paula Sampaio durante o segundo semestre do 2° ano de licenciatura em

6 Consideraremos que a narrativa de Lewis Carroll oscila ficcionalmente entre o maravilhoso e o fantástico, chegando mesmo a sugerir-se com aspectos do estranho,

A correspondˆencia entre n´ umeros reais e pontos de uma reta orientada, garantida pela afirma¸c˜ ao acima, nos per- mite identificar cada ponto da reta com sua coordenada..

O Sapo estava assistindo TV uma tarde, quando viu um comercial de tênis próprios para andar de skate. O sujeito do comercial calçava o tênis, fazia um 360 kickflip no meio-fio,

(Orgs.) Polifonias: clínica, política e criação.. Le Paradoxe de

3.8 O transporte efetuado por outro meio de transporte, antes ou depois do transporte ferroviário ou entre dois serviços de transporte ferroviário, encontra-se

Exemplo: mina Kiruna - LKAB (Suécia) LHDs transportam minério do realce a ore passes Trens transportam em nível para os britadores Silos alimentam os skips