lndice
Introduccidn
...
Razones para comprar este libro
...i Q u l queda fuera del alcance de este libro?
...iQue necesita?
...iC6m0 utilizar este libro?
...Parte I
.
Uso de MySQL...
1
.
Guia rapida de MySQL...
Comprension de 10s fundamentos de MySQL
...~ Q u C es una base de datos?
...Terminologia sobre bases de datos
...Conexion a una base de datos
...Creacion
yuso de nuestra primera base de datos
...Caso en el que acabemos de instalar MySQL
...Si un administrador necesita concederle permiso
...Uso de la base de datos
...Creacion de una tabla
...Listado de las tablas de una base de datos con SHOW TABLES
...Analisis de la estructura de las tablas con DESCRIBE
...Insercion de nuevos registros en una tabla
...Insercion de datos dentro de una instruccion INSERT
...Insercion de grandes cantidades de datos desde un archivo de texto
...con LOAD DATA
Recuperacion de informacion de una tabla
......
Orden en el que MySQL procesa las condiciones
Correspondencia de patrones
......
Ordenacion
Limitacion del numero de resultados
...Devolucion del valor maximo con MAX()
......
Recuperacion de registros distintos
...
Como contar
Como recuperar la media. el minimo y el total con AVG(
).MIN(
)y SUM(
) ...Realizacion de calculos en una consulta
......
Eliminacion de registros
Como cambiar 10s registros de una tabla
...Eliminacion de tablas y bases de datos
......
Como modificar la estructura de la tabla
Como agregar una columna
...Modificacion de una definicion de columna
......
Como cambiar el nombre de una columna . .
Como el~minar una columna
...Uso de las funciones de fecha
...Como especificar el formato de fecha
...Recuperacion de la fecha y la hora actual
...Creacion de consultas mas avanzadas
......
Como aplicar un nuevo encabezado a una columna con AS
Combinacion de columnas con CONCAT
...Como buscar el dia del aiio
...Como trabajar con varias tablas
......
Combinacion de dos o mas tablas
Realizacion de calculos con fechas
...Agrupacion de una consulta
......
Resumen
2
. Tipos de datos
ytipos de tabla ...
Analisis de 10s distintos tipos de columna
...Tipos de columna numericos
......
Tipos de columnas de cadena
Tipos de columna de fecha y hora
......
Opciones de My SQL
Analisis de 10s distintos tipos de tablas
...Tablas ISAM
...Tablas MyISAM
...Tablas estaticas
...Tablas dinamicas
....
.
Tablas comprlm~das
......
Tablas MERGE 109
Tablas HEAP ... 113
... Tablas InnoDB 115 Tablas DBD ... 116
... Resumen 117 3
.
SQL Avanzado...
119Operadores ... 120
... Operadores logicos 120 ... Operadores aritmeticos 121 Operadores de comparacion ... 123
... Como usar LIKE en equivalencias de patron de SQL 127 Expresiones regulares ... 128
Operadores bit a bit ... 133
... Combinaciones avanzadas 138 .
.
Combinaciones internas ... 140Combinaciones por la izquierda (o combinaciones externas por la izquierda) .... 140
Combinaciones por la derecha (o combinaciones externas por la derecha)
....
143Combinaciones externas completas ... 143
Combinaciones naturales y la palabra clave USING ... 144
... Recuperacion de 10s datos encontrados en una tabla per0 no en la otra 146 Combinacion de resultados con UNION ... 147
Subselecciones ... 149
Como escribir subselecciones como combinaciones ... 149
Como agregar registros a una tabla desde otras tablas con INSERT SELECT ... 15 1 ... Mas sobre la agregacion de registros 152 ... Mas sobre como eliminar registros (DELETE y TRUNCATE) 153 Variable de usuario ... 153
Ejecucion de instrucciones SQL almacenadas en archivos ... 157
Redireccionamiento de la salida hacia un archivo ... 159
Como usar 10s archivos desde la linea de comandos MySQL ... 160
Transacciones y bloqueos ... 160
... Las transacciones en las tablas InnoDB 161 ... Lecturas coherentes 163 Lectura de bloqueos para actualizaciones ... 164
Bloqueos de lectura en mod0 compartido ... 167
... Confirmaciones automaticas 168 Transacciones en tablas DBD ... 171
Otros comportamientos transaccionales ... 173
Bloqueo de tablas ... 175
... Como evitar 10s bloqueos de tabla 181 Niveles de transaccion ... 181
...
Resumen 182
.
r4
.
indices yoptimization
de consultas... 185
...Comprension de 10s indices 186
...
Creacion de un indice 187
Creacion de una clave primaria ... 187 ...
Creacion de un indice primario 190
...
Creacion de un indice de texto completo 191
Uso de 10s indices de texto completo ... 192 ...
Palabras ruido 193
...
Relevancia 194
Busquedas booleanas de texto completo ... 195 ...
Creacion de un indice unico 201
...
Creacion de indices sobre una parte de un campo 202 ...
Como utilizar un campo de increment0 automatico 202
Creacion de un campo de increment0 automatico ... 203 Insertion de registros que contienen un campo de increment0 automatico ... 204
...
Como recuperar y reiniciar el valor de increment0 automatico 205 ...
Mas alla de 10s limites 209
Problemas con LAST-INSERT-ID() ... 209 ...
indices de varias columnas y carnpos de increment0 automatico 211 ...
Eliminacion o modificacion de un indice 213
Tipos de tabla e indices ... 214 Uso eficaz de 10s indices ... 215
. .
.
....
Donde utilizar 10s indices 215
...
Selection
de indices 218...
Uso del sistema de prefijacion mas a la izquierda 218 Como utiliza MySQL 10s indices con EXPLAIN ... 220
...
Realizacion de calculos en una consulta 225
Uso de EXPLAIN con el sistema de preqos a la izquierda ... 227 Optimizacion de las selecciones ... 229
...
Como ayudar a1 optimizador de MySQL con ANALYZE 234
...
Optimizacion de las instrucciones SELECT y seguridad 236 Evaluacion del rendimiento de las funciones ... 237 Optimizacion de actualizaciones, eliminaciones e inserciones ... 238 Resumen ... 240
5 .
Programaci6n con MySQL...
2 4 3Uso de buenas tecnicas de programacion de bases de datos ... 244 Uso de conexiones permanentes ... 245 Como lograr codigo portable y sencillo de mantener ... 245
...
La conexion 246
Consultas de base de datos ... 249 ...
~ C u i n t o trabajo deberia realizar el servidor de la base de datos? 251 Las fases del desarrollo de aplicaciones ... 255
...
Fase
1
: analisis de las necesidades 255...
Determination
de las necesidades del usuario 256...
Deterrninacion de tecnologia necesaria 256
Fase 2: Diseiio de la aplicacion ... 257
... Modelado 257 ... Uso de pseudocodigo 257 Codificacion ... 257
Fase 4: fase de pruebas e implernentacion ... 260
Resumen ... 260
6
.
Como ampliar las funciones de MySQL...
2 6 3 ... Funciones definidas por el usuario 264 ... Funciones UDF estandar 268 ... La funcion init 268 La funcion principal ... 270... La funcion deinit 272 ... Creacion de una UDF estandar de ejemplo 272 Analisis de las funciones agregadas ... 274
Creacion de una UDF agregada de ejemplo ... 275
... Resolucion de problemas de UDF 278 Resumen ... 278
...
Parte I1.
Diseiio de una base de datos 2 8 1...
7.
Comprensi6n de las bases de datos relacionales 2 8 3 Analisis de 10s modelos anteriores a las base de datos ... 284Modelo jerarquico de base de datos ... 284
... Modelo de base de datos en red 286 ... Modelo de base de datos relacional 286 Terminos basicos ... 287
Claves de tabla ... 290
Claves externas ... 290
Introduccion a las vistas ... 292
Resumen ... 295
.
I8
.
Normalizac~on de bases de datos...
2 9 7Concepto de normalizacion ...
Primera forma normal ...
Segunda forma normal ...
Tercera forma normal ...
Forma normal de Boyce-Codd ...
Cuarta forma normal ...
Quinta forma normal y otras formas ...
Concepto de desnormalizacion ...
...
Resumen
9
.
Diseiio de bases de datos...
3 2 1...
Ciclo de vida de las bases de datos 322
...
Fase 1 : Analisis 323
...
Fase 2: Diseiio 324
...
Diseiio conceptual 325
...
Diseiio logic0 y fisico 329
Fase 3: Implementacion ... 333
Fase 4: Pruebas ... 333
Fase 5: Puesta en marcha ... 334
... Fase 6: Mantenimiento 335 ... Un ejemplo del mundo real: un sistema de seguimiento de publicaciones 336 Fase 1 de la base de datos de Poet's Circle: Analisis ... 336
Fase 2 de la base de datos de Poet's Circle: Diseiio ... 337
Fase 2 de la base de datos Poet's Circle: Implementacion ... 341
Fase 4 a 6 de la base de datos Poet's Circle: Prueba. puesta en marcha . . ... y rnantenlrnlento 342 Control de simultaneidad mediante transacciones ... 343
Atomicidad ... 343
... Coherencia 343 Aislamiento ... 344
Durabilidad ... 344
Resumen ... 344
Parte I11
.
Administracibn de MySQL...
3 4 7 10.
Administracibn baisica...
3 4 9 ... Uso de MySQL como administrador 350 Como iniciar y cerrar MySQL ... 352Como iniciar y cerrar MySQL en Unix ... 352
Como iniciar MySQL automaticamente a1 arrancar el sistema ... 354
Como evitar problemas comunes a1 iniciar MySQL en Unix ... 355
Como iniciar y cerrar MySQL en Windows ... 355
Como iniciar MySQL automaticamente ... 356
... Como evitar problemas comunes a1 iniciar MySQL en Windows 358 ... Configuration de My SQL 359 Registro ... 363
El archivo de errores ... 363
El registro de consultas ... 364
El registro de
actualization
binario ... 365El registro de consultas lentas ... 368
Rotacion de registros ... 369
Optimization, analisis, comprobacion y reparacion de tablas ... 372
Optimization
de tablas ... 373Optimization
de tablas con la instruccion OPTIMIZE ... 373Optimizacion de tablas con mysqlcheck ... 374
Optimizacion de tablas con myisamchk ... 374
... Analisis de tablas 375 Analisis de tablas con ANALYZE TABLE ... 376
Analisis de las tablas con mysqlcheck ... 377
Analisis de tablas con myisamchk ... 377
Comprobacion de tablas ... 378
Comprobacion de las tablas con CHECK TABLES ... 379
Comprobacion de tablas con mysqlcheck ... 380
Comprobacion de tablas con myisamchk ... 381
Reparacion de tablas ... 383
Reparacion tablas de tipo diferente a MyISAM ... 384
Reparacion de tablas con REPAIR TABLE ... 384
Reparacion de las tablas con mysqlcheck ... 386
Reparacion de tablas con myisamchk ... 386
Como usar mysqlcheck ... 388
Uso de myisamchk ... 391
Resumen ... 396
...
11.
Copias de seguridad de bases de datos 399 Volcados de seguridad de tablas MylSAM con BACKUP ... 400Uso de BACKUP en Unix ... 400
Uso de BACKUP con Windows ... 403
Restauracion de tablas MyISAM con RESTORE ... 404
Volcados de seguridad de tablas de MyISAM mediante la copia de archivos directamente ... 406
Realizacion de volcados con mysqldump ... 409
Restauracion de una base de datos volcada con mysqldump ... 411
Copias de seguridad con SELECT INTO ... 416
Restauracion de una tabla con LOAD DATA ... 419
~ Q u C ocurriria si algo sale mal? ... 420
Uso de LOAD DATA con opciones ... 421
Aspectos de seguridad relacionados con LOAD DATA LOCAL ... 426
Uso de mysqlimport en lugar de LOAD DATA ... 426
Uso de mysqlhotcopy para realizar copias de seguridad ... 429
Uso del registro de actualizacion binario para restablecer la base de datos
. .
a su posicion mas reciente ... 431Copia de seguridad y restauracion de tablas InnoDB ... 436
Duplicacion como medio de realizar copias de seguridad ... 438
Resumen ... 439
...
12.
Duplicaci6n de base de datos 441 Que es la duplicacion ... 441. .
...
Configuracion de duplication
443. . .
Opciones de duplication . . .
... 444...
Comandos de duplicaclon
448 ...Dificultades de la duplicacion
450Duplicacion de una base de datos ...
450... Duplicacion con un registro binario activo en el principal
457Eliminacion de registros binarios antiguos del servidor principal e inicio de la operacion ...
459Como evitar un exceso de actualizaciones
... 462Como evitar errores clave
... 464Resumen
... 467...
13.
Configurationy optirnizacion de MySQL
4 7 1 ...Optimizacion de las variables msyqld
472Optirnizacion de table-cache
... 477...
Optirnizacion de key-buffer-size
478... Control de un elevado numero de conexiones
479 ...Optirnizacion de las variables delayed-queue- size y back-log
484 ...Optirnizacion de la variable sort-buffer
484 ... Configurationde tablas InnoDB
485 ...Presentacion de las opciones rnysqld
485 ...Descripcion de las variables rnysqld
491Analisis de todas las variables de estado
... 503...
Cambio de valores de variables con el servidor en funcionamiento
508Mejoras en el hardware para acelerar el servidor
... 511...
Memoria
511... Discos
512CPU
... 512. . .
Uso de anallsls comparativos
... 512...
Ejecucion de MySQL en mod0 ANSI
527 ...Uso de distintos lenguajes en MySQL
528 ...Como mostrar mensajes de error en otro idioma
528 ...Utilizacion de un conjunto de caracteres diferente
529 ...Como aiiadir un conjunto de caracteres propio
529Resumen
... 53314
. Seguridad de bases de datos ...
535Seguridad a1 conectarse
... 536.
. Gestion de usuarios y permisos
... 537La base de datos mysql
... 537...
Campos de las tablas
538 ...Como examina MySQL permisos para conceder el acceso
543Como completar las tablas de permiso
... 544Que hacer si no puede conectarse o no tiene permisos ... 564
Que hacer si la tabla de usuarios se daiia ... 565
Otras opciones de GRANT ... 567
Estrategia para gestionar usuarios de forma segura ... 570
... Como evitar la concesion de privilegios peligrosos 571 ... Conexiones SSL 572 .
.
Seguridad de aplicaciones ... 574Seguridad del sistema ... 575
Problemas de seguridad relacionados con LOAD DATA LOCAL ... 575
Resumen ... 576
15
.
Instalaci6n de MySQL...
5 7 9 ... Instalacion de una distribucion fuente o binaria 580 Instalacion de MySQL en Windows ... 581Instalacion de una distribucion binaria en Windows ... 582
Instalacion de MySQL como servicio en Windows NT/2000/XP ... 583
Instalacion de MySQL en Unix ... 584
Instalacion de una distribucion binaria (tar) en Unix ... 584
Instalacion de una distribucion binaria (rpm) en Unix ... 587
... Instalacion desde codigo fuente en Unix 588 ... Cornpilacion optima de My SQL 590 ... Instalacion de varios servidores en el mismo equipo 591 ... Como evitar problemas de instalacion comunes 594 . . . Problemas al iniciar msyqld ... 594
Problemas de compilacion ... 595
Problemas de Windows ... 596
... Actualizacion de MySQL 3.s a MySQL 4 597 ... Resumen 599 16
.
Multiples unidades...
6 0 1 Significado de RAID ... 601RAID 0 ... 602
RAID 1 ... 603
RAID 2 y RAID 3 ... 603
RAID 4 ... 604
RAID 5 ... 604
... RAID 10 605 ... RAID 0+1 605 Otros tipos de RAID ... 606
Uso de enlaces simbolicos ... 606
Vinculacion simbolica de bases de datos ... 607
Vinculacion simbolica de tablas ... 609
Resumen ... 611