MySQL 5.0 Manual de referencia

image

Es el manual oficial de referencia de este gran gestor de base de datos , el temario es extremadamente extenso, el pdf cuenta con 1392 Paginas de rico contenido, les será de gran utilidad.

Descarga Megaupload

Descarga pagina Oficial

Tabla de contenidos
Prefacio ……………………………………………………………………………………………………………………
1. Información general ………………………………………………………………………………………………………..1
1.1. Sobre este manual ………………………………………………………………………………………………….1
1.2. Convenciones utilizadas en este manual …………………………………………………………………………..2
1.3. Panorámica de MySQL AB ……………………………………………………………………………………….3
1.4. Panorámica del sistema de gestión de base de datos MySQL …………………………………………………….3
1.4.1. Historia de MySQL ………………………………………………………………………………………4
1.4.2. Las principales características de MySQL ……………………………………………………………….5
1.4.3. Estabilidad de MySQL ……………………………………………………………………………………7
1.4.4. Dimensiones máximas de las tablas MySQL …………………………………………………………….7
1.4.5. Conformidad con el efecto 2000 …………………………………………………………………………8
1.5. Mapa de desarrollo de MySQL ……………………………………………………………………………………9
1.5.1. El servidor MySQL incrustado (embedded) ……………………………………………………………..9
1.5.2. Qué hay de nuevo en MySQL 5.0 ……………………………………………………………………… 10
1.6. Fuentes de información acerca de MySQL ……………………………………………………………………… 10
1.6.1. Listas de correo de MySQL ……………………………………………………………………………. 10
1.6.2. Soporte por IRC (Internet Relay Chat) de la comunidad MySQL …………………………………….. 15
1.6.3. Soporte por parte de la comunidad en los foros de MySQL …………………………………………… 16
1.7. Cumplimiento de los estándares por parte de MySQL …………………………………………………………. 16
1.7.1. Estándares utilizados por MySQL ……………………………………………………………………… 16
1.7.2. Selección de modos SQL ………………………………………………………………………………. 17
1.7.3. Ejecutar MySQL en modo ANSI ………………………………………………………………………. 17
1.7.4. Extensiones MySQL al estándar SQL …………………………………………………………………. 17
1.7.5. Diferencias en MySQL del estándar SQL ……………………………………………………………… 19
1.7.6. Cómo trata MySQL las restricciones (Constraints) ……………………………………………………. 24
2. Instalar MySQL ………………………………………………………………………………………………………….. 27
2.1. Cuestiones generales sobre la instalación ………………………………………………………………………. 27
2.1.1. Sistemas operativos que MySQL soporta ……………………………………………………………… 27
2.1.2. Escoger la distribución MySQL a instalar …………………………………………………………….. 29
2.1.3. Cómo obtener MySQL …………………………………………………………………………………. 37
2.1.4. Comprobar la integridad de paquetes con sumas de verificación MD5 o GnuPG …………………….. 37
2.1.5. Conformación de la instalación ………………………………………………………………………… 40
2.2. Instalación MySQL estándar con una distribución binaria ……………………………………………………… 41
2.3. Instalar MySQL en Windows …………………………………………………………………………………… 41
2.3.1. Requisitos de Windows ………………………………………………………………………………… 42
2.3.2. Elección de un paquete de instalación …………………………………………………………………. 42
2.3.3. Instalación de MySQL con un instalador automático …………………………………………………. 43
2.3.4. Usar el asistente de instalación de MySQL ……………………………………………………………. 43
2.3.5. Utilización del asistente de configuración …………………………………………………………….. 45
2.3.6. Instalar MySQL partiendo de un archivo Zip Noinstall ……………………………………………….. 48
2.3.7. Descomprimir el fichero de instalación ……………………………………………………………….. 49
2.3.8. Creación de un fichero de opciones ……………………………………………………………………. 49
2.3.9. Seleccionar un tipo de servidor MySQL ………………………………………………………………. 50
2.3.10. Arrancar el servidor la primera vez …………………………………………………………………… 50
2.3.11. Arrancar MySQL desde la línea de comandos de Windows …………………………………………. 51
2.3.12. Arrancar MySQL como un servicio de Windows ……………………………………………………. 52
2.3.13. Comprobar la instalación de MySQL Installation ……………………………………………………. 54
2.3.14. Resolución de problemas en la instalación de MySQL bajo Windows ………………………………. 54
2.3.15. Aumentar la versión de MySQL en Windows ……………………………………………………….. 55
2.3.16. Comparación entre MySQL en Windows y MySQL en Unix ……………………………………….. 56
2.4. Instalar MySQL en Linux ………………………………………………………………………………………. 58
2.5. Instalar MySQL en Mac OS X ………………………………………………………………………………….. 60
2.6. Instalar MySQL sobre NetWare ………………………………………………………………………………… 62
2.7. Instalación de MySQL en otros sistemas similares a Unix ……………………………………………………… 63
2.8. Instalación de MySQL usando una distribución de código fuente ……………………………………………… 66
2.8.1. Panorámica de la instalación de código fuente ………………………………………………………… 66
2.8.2. Opciones típicas de configure ……………………………………………………………………… 68
2.8.3. Instalar desde el árbol de código fuente de desarrollo …………………………………………………. 71
2.8.4. Problemas en la compilación de MySQL ……………………………………………………………… 73
2.8.5. Notas sobre MIT-pthreads ……………………………………………………………………………… 75
2.8.6. Instalar MySQL desde el código fuente en Windows …………………………………………………. 76
2.8.7. Compilar los clientes de MySQL en Windows ………………………………………………………… 79
2.9. Puesta en marcha y comprobación después de la instalación …………………………………………………… 79
2.9.1. Pasos a seguir después de la instalación en Windows …………………………………………………. 80
2.9.2. Pasos a seguir después de la instalación en Unix ……………………………………………………… 80
2.9.3. Hacer seguras las cuentas iniciales de MySQL ………………………………………………………… 89
2.10. Aumentar la versión de MySQL ………………………………………………………………………………. 91
2.10.1. Aumentar la versión de 4.1 a 5.0 ……………………………………………………………………… 92
2.10.2. Aumentar la versión de las tablas de privilegios ……………………………………………………… 94
2.10.3. Copiar bases de datos MySQL a otra máquina ……………………………………………………….. 95
2.11. Bajar la versión de MySQL ……………………………………………………………………………………. 96
2.11.1. Volver a la versión 4.1 ……………………………………………………………………………….. 96
2.12. Notas específicas sobre sistemas operativos …………………………………………………………………… 97
2.12.1. Notas sobre Linux …………………………………………………………………………………….. 97
2.12.2. Notas sobre Mac OS X ……………………………………………………………………………….102
2.12.3. Notas sobre Solaris …………………………………………………………………………………..103
2.12.4. Notas sobre BSD ……………………………………………………………………………………..106
2.12.5. Notas sobre otros Unix ……………………………………………………………………………….108
2.12.6. Notas sobre OS/2 ……………………………………………………………………………………..120
2.13. Notas sobre la instalación de Perl ……………………………………………………………………………..120
2.13.1. Instalación de Perl en Unix …………………………………………………………………………..121
2.13.2. Instalar ActiveState Perl en Windows ………………………………………………………………..122
2.13.3. Problemas en la utilización de la interfaz Perl DBI/DBD …………………………………………….122
3. Curso (tutorial) de MySQL ………………………………………………………………………………………………125
3.1. Conectarse al y desconectarse del servidor ……………………………………………………………………..125
3.2. Entrar consultas …………………………………………………………………………………………………125
3.3. Crear y utilizar una base de datos ……………………………………………………………………………….128
3.3.1. Crear y seleccionar una base de datos …………………………………………………………………129
3.3.2. Crear una tabla …………………………………………………………………………………………129
3.3.3. Cargar datos en una tabla ………………………………………………………………………………130
3.3.4. Extraer información de una tabla ………………………………………………………………………131
3.4. Obtener información sobre bases de datos y tablas …………………………………………………………….141
3.5. Usar mysql en modo batch …………………………………………………………………………………….142
3.6. Ejemplos de consultas comunes ………………………………………………………………………………..143
3.6.1. El valor máximo de una columna ……………………………………………………………………..143
3.6.2. El registro que tiene el valor máximo de determinada columna ………………………………………144
3.6.3. Máximo de columna por grupo ………………………………………………………………………..144
3.6.4. Los registros de un grupo que tienen el máximo valor en alguna columna ……………………………144
3.6.5. Utilización de variables de usuario …………………………………………………………………….144
3.6.6. Usar claves foráneas (foreign keys) ……………………………………………………………………144
3.6.7. Buscar usando dos claves ………………………………………………………………………………146
3.6.8. Calcular visitas diarias …………………………………………………………………………………146
3.6.9. Utilización de AUTO_INCREMENT …………………………………………………………………..146
3.7. Consultas del proyecto Mellizos (Twin) ………………………………………………………………………..147
3.7.1. Encontrar todos los mellizos no repartidos …………………………………………………………….148
3.7.2. Mostrar una tabla de estado de mellizos ……………………………………………………………….149
3.8. Usar MySQL con Apache ………………………………………………………………………………………150
4. Usar los programas MySQL ……………………………………………………………………………………………..151
4.1. Panorámica de programas MySQL ……………………………………………………………………………..151
4.2. Invocar programas MySQL …………………………………………………………………………………….152
4.3. Especificar opciones de programa ………………………………………………………………………………152
4.3.1. Usar opciones en la línea de comandos ………………………………………………………………..153
4.3.2. Usar ficheros de opciones ……………………………………………………………………………..154
4.3.3. Usar variables de entorno para especificar opciones ………………………………………………….157
4.3.4. Utilización de opciones para establecer variables de programa ……………………………………….158
5. Administración de bases de datos ………………………………………………………………………………………..159
5.1. El servidor MySQL y scripts de arranque del servidor …………………………………………………………159
5.1.1. Panorámica de los programas scripts y las utilidades del lado del servidor (server-side) …………….159
5.1.2. El servidor extendido de MySQL mysqld-max ……………………………………………………..160
5.1.3. El script de arranque del servidor mysqld_safe ……………………………………………………162
5.1.4. El script mysql.server para el arranque del servidor ……………………………………………..164
5.1.5. El programa mysqld_multi para gestionar múltiples servidores MySQL …………………………165
5.2. El gestor de instancias de MySQL ……………………………………………………………………………..167
5.2.1. Arrancar el servidor MySQL con el gestor de instancias MySQL …………………………………….168
5.2.2. Conexión al gestor de instancias de MySQL y creación de cuentas de usuario ……………………….168
5.2.3. Opciones de los comandos del gestor de instancias MySQL ………………………………………….169
5.2.4. Ficheros de configuración del gestor de instancias de MySQL ……………………………………….169
5.2.5. Los comandos que reconoce el gestor de instancias de MySQL ………………………………………170
5.3. Configuración del servidor MySQL …………………………………………………………………………….172
5.3.1. Opciones del comando mysqld ………………………………………………………………………172
5.3.2. El modo SQL del servidor ……………………………………………………………………………..180
5.3.3. Variables de sistema del servidor ……………………………………………………………………..183
5.3.4. Variables de estado del servidor ……………………………………………………………………….206
5.4. El proceso de cierre del servidor MySQL ………………………………………………………………………214
5.5. Cuestiones de seguridad general ………………………………………………………………………………..215
5.5.1. Guía de seguridad general ……………………………………………………………………………..215
5.5.2. Hacer que MySQL sea seguro contra ataques …………………………………………………………217
5.5.3. Opciones de arranque para mysqld relacionadas con la seguridad ………………………………….219
5.5.4. Cuestiones relacionadas con la seguridad y LOAD DATA LOCAL …………………………………..220
5.6. El sistema de privilegios de acceso de MySQL ………………………………………………………………..220
5.6.1. Qué hace el sistema de privilegios …………………………………………………………………….220
5.6.2. Cómo funciona el sistema de privilegios ………………………………………………………………221
5.6.3. Privilegios de los que provee MySQL …………………………………………………………………224
5.6.4. Conectarse al servidor MySQL ………………………………………………………………………..227
5.6.5. Control de acceso, nivel 1: Comprobación de la conexión ……………………………………………228
5.6.6. Control de acceso, nivel 2: comprobación de solicitudes ……………………………………………..231
5.6.7. Cuándo tienen efecto los camios de privilegios ……………………………………………………….232
5.6.8. Causas de errores Access denied …………………………………………………………………233
5.6.9. Hashing de contraseñas en MySQL 4.1 ……………………………………………………………….236
5.7. Gestión de la cuenta de usuario MySQL ……………………………………………………………………….240
5.7.1. Nombres de usuario y contraseñas de MySQL ………………………………………………………..240
5.7.2. Añadir nuevas cuentas de usuario a MySQL ………………………………………………………….241
5.7.3. Eliminar cuentas de usuario de MySQL ……………………………………………………………….243
5.7.4. Limitar recursos de cuentas ……………………………………………………………………………244
5.7.5. Asignar contraseñas a cuentas …………………………………………………………………………245
5.7.6. Guardar una contraseña de forma segura ………………………………………………………………246
5.7.7. Usar conexiones seguras ……………………………………………………………………………….246
5.8. Prevención de desastres y recuperaciones ………………………………………………………………………252
5.8.1. Copias de seguridad de bases de datos ………………………………………………………………..252
5.8.2. Ejemplo de estrategia de copias de seguridad y recuperación …………………………………………253
5.8.3. Mantenimiento de tablas y recuperación de un fallo catastrófico (crash) ……………………………..256
5.8.4. Organizar un programa de mantenimiento de tablas …………………………………………………..266
5.8.5. Obtener información acerca de una tabla ………………………………………………………………266
5.9. Uso internacional y localización de MySQL ……………………………………………………………………271
5.9.1. El conjunto de caracteres utilizado para datos y ordenación ………………………………………….271
5.9.2. Escoger el idioma de los mensajes de error ……………………………………………………………271
5.9.3. Añadir un conjunto de caracteres nuevo ……………………………………………………………….272
5.9.4. Los vectores de definición de caracteres ………………………………………………………………273
5.9.5. Soporte para colación de cadenas de caracteres ……………………………………………………….274
5.9.6. Soporte de caracteres multi-byte ………………………………………………………………………274
5.9.7. Problemas con conjuntos de caracteres ………………………………………………………………..274
5.9.8. Soporte de zonas horarias en el servidor MySQL ……………………………………………………..274
5.10. Los ficheros de registro (log) de MySQL ……………………………………………………………………..275
5.10.1. El registro de errroes (Error Log) …………………………………………………………………….276
5.10.2. El registro general de consultas ………………………………………………………………………276
5.10.3. El registro binario (Binary Log) ……………………………………………………………………..276
5.10.4. El registro de consultas lentas (Slow Query Log) ……………………………………………………279
5.10.5. Mantenimiento de ficheros de registro (log) …………………………………………………………280
5.11. Ejecutar más de un servidor MySQL en la misma máquina …………………………………………………..280
5.11.1. Ejecutar varios servidores en Windows ………………………………………………………………282
5.11.2. Ejecutar varios servidores en Unix …………………………………………………………………..284
5.11.3. Utilización de programas cliente en un entorno de múltiples servidores …………………………….285
5.12. La caché de consultas de MySQL ……………………………………………………………………………..286
5.12.1. Cómo opera la caché de consultas ……………………………………………………………………286
5.12.2. Opciones de SELECT para la caché de consultas ……………………………………………………287
5.12.3. Configuración de la caché de consultas ………………………………………………………………288
5.12.4. Estado y mantenimiento de la caché de consultas ……………………………………………………288
6. Replicación en MySQL ………………………………………………………………………………………………….290
6.1. Introducción a la replicación ……………………………………………………………………………………290
6.2. Panorámica de la implementación de la replicación ……………………………………………………………290
6.3. Detalles de la implementación de la replicación ………………………………………………………………..291
6.3.1. Estados de los subprocesos del maestro de replicación ……………………………………………….292
6.3.2. Estados de proceso E/S (I/O) del esclavo de replicación ………………………………………………292
6.3.3. Estados del flujo SQL de un esclavo de replicación …………………………………………………..293
6.3.4. Ficheros de replicación, retardados y de estado ……………………………………………………….293
6.4. Cómo montar la replicación …………………………………………………………………………………….294
6.5. Compatibilidad entre versiones de MySQL con respecto a la replicación ……………………………………..298
6.6. Aumentar la versión de la replicación ………………………………………………………………………….298
6.6.1. Aumentar la versión de la replicación a 5.0 ……………………………………………………………298
6.7. Características de la replicación y problemas conocidos ……………………………………………………….298
6.8. Opciones de arranque de replicación ……………………………………………………………………………301
6.9. Preguntas y respuestas sobre replicación ……………………………………………………………………….307
6.10. Resolución de problemas de replicación ………………………………………………………………………311
6.11. Reportar bugs de replicación ………………………………………………………………………………….312
v7. Optimización de MySQL ………………………………………………………………………………………………..314
7.1. Panorámica sobre optimización …………………………………………………………………………………314
7.1.1. Limitaciones y soluciones de compromiso en el diseño de MySQL ………………………………….314
7.1.2. Diseñar aplicaciones pensando en la portabilidad ……………………………………………………..314
7.1.3. Para qué hemos usado MySQL ………………………………………………………………………..315
7.1.4. El paquete de pruebas de rendimiento (benchmarks) de MySQL ……………………………………..316
7.1.5. Usar pruebas de rendimiento (benchmarks) propios …………………………………………………..317
7.2. Optimizar sentencias SELECT y otras consultas ……………………………………………………………….317
7.2.1. Sintaxis de EXPLAIN (Obtener información acerca de un SELECT) …………………………………317
7.2.2. Estimar el renidimiento de una consulta ……………………………………………………………….324
7.2.3. Velocidad de las consultas SELECT …………………………………………………………………..324
7.2.4. Optimización de las cláusulas WHERE por parte de MySQL ………………………………………….324
7.2.5. Optimización de rango …………………………………………………………………………………326
7.2.6. Index Merge Optimization …………………………………………………………………………….328
7.2.7. Cómo optimiza MySQL IS NULL ……………………………………………………………………330
7.2.8. Cómo MySQL optimiza DISTINCT ………………………………………………………………….331
7.2.9. Cómo optimiza MySQL los LEFT JOIN y RIGHT JOIN ………………………………………….331
7.2.10. Cómo optimiza MySQL ORDER BY ………………………………………………………………..332
7.2.11. Cómo optimiza MySQL los GROUP BY …………………………………………………………….333
7.2.12. Cómo optimiza MySQL las cláusulas LIMIT ……………………………………………………….335
7.2.13. Cómo evitar lecturas completas de tablas …………………………………………………………….335
7.2.14. Velocidad de la sentencia INSERT ………………………………………………………………….336
7.2.15. Velocidad de las sentencias UPDATE ………………………………………………………………..337
7.2.16. Velocidad de sentencias DELETE ……………………………………………………………………337
7.2.17. Otros consejos sobre optimización …………………………………………………………………..337
7.3. Temas relacionados con el bloqueo …………………………………………………………………………….339
7.3.1. Métodos de bloqueo ……………………………………………………………………………………339
7.3.2. Cuestiones relacionadas con el bloqueo (locking) de tablas …………………………………………..341
7.4. Optimizar la estructura de una base de datos …………………………………………………………………..342
7.4.1. Elecciones de diseño …………………………………………………………………………………..342
7.4.2. Haga sus datos lo más pequeños posibles ……………………………………………………………..343
7.4.3. Índices de columna …………………………………………………………………………………….343
7.4.4. Índices de múltiples columnas …………………………………………………………………………344
7.4.5. Cómo utiliza MySQL los índices ………………………………………………………………………344
7.4.6. La caché de claves de MyISAM ………………………………………………………………………..346
7.4.7. Cómo cuenta MySQL las tablas abiertas ………………………………………………………………350
7.4.8. Cómo abre y cierra tablas MySQL …………………………………………………………………….350
7.4.9. Desventajas de crear muchas tablas en la misma base de datos ……………………………………….351
7.5. Optimización del servidor MySQL ……………………………………………………………………………..351
7.5.1. Factores de sistema y afinamientos de parámetros de arranque ……………………………………….351
7.5.2. Afinar parámetros del servidor ………………………………………………………………………..351
7.5.3. Vigilar el rendimiento del optimizador de consultas ………………………………………………….354
7.5.4. Efectos de la compilación y del enlace en la velocidad de MySQL …………………………………..354
7.5.5. Cómo utiliza MySQL la memoria ……………………………………………………………………..355
7.5.6. Cómo usa MySQL las DNS ……………………………………………………………………………356
7.6. Cuestiones relacionadas con el disco ……………………………………………………………………………356
7.6.1. Utilizar enlaces simbólicos …………………………………………………………………………….357
8. Programas cliente y utilidades MySQL ………………………………………………………………………………….360
8.1. Panorámica de scripts y utilidades del lado del cliente …………………………………………………………360
8.2. myisampack, el generador de tablas comprimidas de sólo lectura de MySQL ………………………………361
8.3. La herramienta intérprete de comandos mysql ………………………………………………………………..366
8.3.1. Comandos mysql ……………………………………………………………………………………..371
8.3.2. Ejecutar sentencias SQL desde un fichero de texto ……………………………………………………373
8.3.3. Sugerencias acerca de mysql …………………………………………………………………………374
8.4. Administrar un servidor MySQL con mysqladmin ………………………………………………………….375
8.5. La utilidad mysqlbinlog para registros binarios ……………………………………………………………379
8.6. El programa mysqlcheck para mantener y reparar tablas ……………………………………………………382
8.7. El programa de copia de seguridad de base de datos mysqldump ……………………………………………384
8.8. El programa de copias de seguridad de base de datos mysqlhotcopy ………………………………………390
8.9. El programa para importar datos mysqlimport ……………………………………………………………..391
8.10. Mostrar bases de datos, tablas y columnas con mysqlshow …………………………………………………393
8.11. perror, explicación de códigos de error …………………………………………………………………….394
8.12. La utilidad replace de cambio de cadenas de caracteres …………………………………………………..395
9. Estructura de lenguaje ……………………………………………………………………………………………………396
9.1. Valores literales …………………………………………………………………………………………………396
9.1.1. Cadenas de caracteres ………………………………………………………………………………….396
9.1.2. Números ……………………………………………………………………………………………….397
9.1.3. Valores hexadecimales …………………………………………………………………………………398
9.1.4. Valores booleanos ……………………………………………………………………………………..398
9.1.5. Valores de bits …………………………………………………………………………………………398
9.1.6. Valores NULL ………………………………………………………………………………………….398
9.2. Nombres de bases de datos, tablas, índices, columnas y alias ………………………………………………….399
9.2.1. Cualificadores de los identificadores ………………………………………………………………….399
9.2.2. Sensibilidad a mayúsuclas y minúsculas de identificadores …………………………………………..400
9.3. Variables de usuario …………………………………………………………………………………………….401
9.4. Variables de sistema …………………………………………………………………………………………….402
9.4.1. Variables estructuradas de sistema …………………………………………………………………….403
9.5. Sintaxis de comentarios …………………………………………………………………………………………405
9.6. Tratamiento de palabras reservadas en MySQL ………………………………………………………………..405
10. Soporte de conjuntos de caracteres ……………………………………………………………………………………..409
10.1. Conjuntos de caracteres y colaciones en general ………………………………………………………………409
10.2. Conjuntos de caracteres y colaciones en MySQL ……………………………………………………………..409
10.3. Determinar el conjunto de caracteres y la colación por defecto ………………………………………………410
10.3.1. Conjunto de caracteres y colación del servidor ………………………………………………………411
10.3.2. Conjuntos de caracteres y colaciones de la base de datos ……………………………………………411
10.3.3. Conjunto de caracteres y colación de tabla …………………………………………………………..412
10.3.4. Conjunto de caracteres y colación de columnas ……………………………………………………..412
10.3.5. Ejemplos de asignación de conjunto de caracteres y colación ……………………………………….412
10.3.6. Conjunto de caracteres y colación de la conexión ……………………………………………………413
10.3.7. Conjunto de caracteres y colación de columnas “carácter” ………………………………………….414
10.3.8. Usar COLLATE en sentencias SQL …………………………………………………………………..415
10.3.9. Precedencia de la cláusula COLLATE ………………………………………………………………..416
10.3.10. Operador BINARY ………………………………………………………………………………….416
10.3.11. Casos especiales en los que determinar la colación es complicado …………………………………416
10.3.12. A cada colación un conjunto de caracteres correcto ………………………………………………..417
10.3.13. Un ejemplo del efecto de una colación ……………………………………………………………..417
10.4. Efectos del soporte de conjuntos de caracteres ………………………………………………………………..418
10.4.1. Cadenas de caracteres de resultado …………………………………………………………………..418
10.4.2. CONVERT() ………………………………………………………………………………………….418
10.4.3. CAST() ………………………………………………………………………………………………419
10.4.4. Sentencias SHOW ……………………………………………………………………………………..419
10.5. Soporte Unicode ……………………………………………………………………………………………….420
10.6. UTF8 para metadatos ………………………………………………………………………………………….421
10.7. Compatibilidad con otros SGBDs (Sistemas gestores de bases de datos) …………………………………….422
10.8. Formato del nuevo fichero de conjunto de caracateres ………………………………………………………..422
10.9. Conjunto de caracteres nacional ……………………………………………………………………………….422
10.10. Conjuntos de caracteres y colaciones que soporta MySQL ………………………………………………….422
10.10.1. Conjuntos de caracteres Unicode ……………………………………………………………………423
10.10.2. Conjuntos de caracteres de Europa occidental ………………………………………………………424
10.10.3. Conjuntos de caracteres de Europa central ………………………………………………………….425
10.10.4. Conjuntos de caracteres del sur de Europa y de Oriente Medio …………………………………….426
10.10.5. Conjuntos de caracteres bálticos …………………………………………………………………….426
10.10.6. Conjuntos de caracteres cirílicos ……………………………………………………………………427
10.10.7. Conjuntos de caracteres asiáticos ……………………………………………………………………427
11. Tipos de columna ……………………………………………………………………………………………………….429
11.1. Panorámica de tipos de columna ………………………………………………………………………………429
11.1.1. Panorámica de tipos numéricos ………………………………………………………………………429
11.1.2. Panorámica de tipos de fechas y hora ………………………………………………………………..431
11.1.3. Panorámica de tipos de cadenas de caracteres ……………………………………………………….432
11.2. Tipos numéricos ……………………………………………………………………………………………….435
11.3. Tipos de fecha y hora ………………………………………………………………………………………….437
11.3.1. Los tipos de datos DATETIME, DATE y TIMESTAMP ………………………………………………438
11.3.2. El tipo TIME ………………………………………………………………………………………….441
11.3.3. El tipo de datos YEAR ………………………………………………………………………………..442
11.3.4. Efecto 2000 (Y2K) y tipos de datos ………………………………………………………………….442
11.4. Tipos de cadenas de caracteres ………………………………………………………………………………..442
11.4.1. Los tipos CHAR y VARCHAR …………………………………………………………………………442
11.4.2. Los tipos BINARY y VARBINARY …………………………………………………………………..443
11.4.3. Los tipos BLOB y TEXT ………………………………………………………………………………444
11.4.4. El tipo de columna ENUM …………………………………………………………………………….445
11.4.5. El tipo SET ……………………………………………………………………………………………446
11.5. Requisitos de almacenamiento según el tipo de columna ……………………………………………………..447
11.6. Escoger el tipo de columna correcto …………………………………………………………………………..449
11.7. Usar tipos de columnas de otros motores de bases de datos …………………………………………………..449
12. Funciones y operadores …………………………………………………………………………………………………450
12.1. Operadores …………………………………………………………………………………………………….450
12.1.1. Precedencias de los operadores ………………………………………………………………………450
12.1.2. Paréntesis ……………………………………………………………………………………………..450
12.1.3. Funciones y operadores de comparación …………………………………………………………….451
12.1.4. Operadores lógicos ……………………………………………………………………………………454
12.2. Funciones de control de flujo ………………………………………………………………………………….455
12.3. Funciones para cadenas de caracteres …………………………………………………………………………457
12.3.1. Funciones de comparación de cadenas de caracteres ………………………………………………..465
12.4. Funciones numéricas …………………………………………………………………………………………..467
12.4.1. Operadores aritméticos ……………………………………………………………………………….467
12.4.2. Funciones matemáticas ……………………………………………………………………………….468
12.5. Funciones de fecha y hora ……………………………………………………………………………………..473
12.6. Qué calendario utiliza MySQL ………………………………………………………………………………..486
12.7. Funciones de búsqueda de texto completo (Full-Text) ………………………………………………………..486
12.7.1. Búsquedas booleanas de texto completo (Full-Text) …………………………………………………488
12.7.2. Búsquedas de texto completo (Full-Text) con expansión de consulta ……………………………….490
12.7.3. Limitaciones de las búsquedas de texto completo (Full-Text) ……………………………………….490
12.7.4. Afinar búsquedas de texto completo (Full-Text) con MySQL ……………………………………….491
12.7.5. Cosas por hacer en búsquedas de texto completo (Full-Text) ……………………………………….492
12.8. Funciones y operadores de cast ………………………………………………………………………………..492
12.9. Otras funciones ………………………………………………………………………………………………..494
12.9.1. Funciones bit …………………………………………………………………………………………494
12.9.2. Funciones de encriptación ……………………………………………………………………………495
12.9.3. Funciones de información ……………………………………………………………………………498
12.9.4. Funciones varias ………………………………………………………………………………………501
12.10. Funciones y modificadores para cláusulas GROUP BY ……………………………………………………..504
12.10.1. Funciones (de agregación) de GROUP BY ………………………………………………………….504
12.10.2. Modificadores de GROUP BY ………………………………………………………………………506
12.10.3. GROUP BY con campos escondidos ………………………………………………………………..508
13. Sintaxis de sentencias SQL ……………………………………………………………………………………………..509
13.1. Sentencias de definición de datos (Data Definition Statements) ………………………………………………509
13.1.1. Sintaxis de ALTER DATABASE ……………………………………………………………………..509
13.1.2. Sintaxis de ALTER TABLE ………………………………………………………………………….509
13.1.3. Sintaxis de CREATE DATABASE ……………………………………………………………………513
13.1.4. Sintaxis de CREATE INDEX ………………………………………………………………………..513
13.1.5. Sintaxis de CREATE TABLE ………………………………………………………………………..514
13.1.6. Sintaxis de DROP DATABASE ………………………………………………………………………523
13.1.7. Sintaxis de DROP INDEX ……………………………………………………………………………523
13.1.8. Sintaxis de DROP TABLE ……………………………………………………………………………524
13.1.9. Sintaxis de RENAME TABLE ………………………………………………………………………..524
13.2. Sentencias de manipulación de datos (Data Manipulation Statements) ……………………………………….524
13.2.1. Sintaxis de DELETE ………………………………………………………………………………….524
13.2.2. Sintaxis de DO ………………………………………………………………………………………..526
13.2.3. Sintaxis de HANDLER ………………………………………………………………………………..527
13.2.4. Sintaxis de INSERT ………………………………………………………………………………….528
13.2.5. Sintaxis de LOAD DATA INFILE ………………………………………………………………….532
13.2.6. Sintaxis de REPLACE ………………………………………………………………………………..539
13.2.7. Sintaxis de SELECT ………………………………………………………………………………….539
13.2.8. Sintaxis de subconsultas ……………………………………………………………………………..546
13.2.9. Sintaxis de TRUNCATE ………………………………………………………………………………554
13.2.10. Sintaxis de UPDATE ………………………………………………………………………………..554
13.3. Sentencias útiles de MySQL …………………………………………………………………………………..555
13.3.1. Sintaxis de DESCRIBE (Información acerca de las columnas) ……………………………………..555
13.3.2. Sintaxis de USE ………………………………………………………………………………………556
13.4. Comandos transaccionales y de bloqueo de MySQL ………………………………………………………….556
13.4.1. Sintaxis de START TRANSACTION, COMMIT y ROLLBACK ……………………………………..556
13.4.2. Sentencias que no se pueden deshacer ……………………………………………………………….557
13.4.3. Sentencias que causan una ejecución (commit) implícita ……………………………………………557
13.4.4. Sintaxis de SAVEPOINT y ROLLBACK TO SAVEPOINT …………………………………………557
13.4.5. Sintaxis de LOCK TABLES y UNLOCK TABLES …………………………………………………..558
13.4.6. Sintaxis de SET TRANSACTION ……………………………………………………………………560
13.5. Sentencias de administración de base de datos ………………………………………………………………..560
13.5.1. Sentencias para la gestión de cuentas ………………………………………………………………..560
13.5.2. Sentencias para el mantenimiento de tablas ………………………………………………………….567
13.5.3. Sintaxis de SET ………………………………………………………………………………………571
13.5.4. Sintaxis de SHOW ……………………………………………………………………………………..574
13.5.5. Otras sentencias para la administración ………………………………………………………………589
13.6. Sentencias de replicación ………………………………………………………………………………………592
13.6.1. Sentencias SQL para el control de servidores maestros ……………………………………………..592
13.6.2. Sentencias SQL para el control de servidores esclavos ………………………………………………593
13.7. Sintaxis SQL de sentencias preparadas ………………………………………………………………………..600
14. Motores de almacenamiento de MySQL y tipos de tablas ……………………………………………………………..602
14.1. El motor de almacenamiento MyISAM ………………………………………………………………………..603
14.1.1. Opciones de arranque de MyISAM …………………………………………………………………..605
14.1.2. Cuánto espacio necesitan las claves ………………………………………………………………….606
14.1.3. Formatos de almacenamiento de tablas MyISAM …………………………………………………….606
14.1.4. Problemas en tablas MyISAM ………………………………………………………………………..608
14.2. El motor de almacenamiento MERGE ………………………………………………………………………….609
14.2.1. Problemas con tablas MERGE …………………………………………………………………………611
14.3. El motor de almacenamiento MEMORY (HEAP) ……………………………………………………………….611
14.4. El motor de almacenamiento BDB (BerkeleyDB) …………………………………………………………..613
14.4.1. Sistemas operativos que soporta BDB ………………………………………………………………..613
14.4.2. Instalación de BDB ……………………………………………………………………………………614
14.4.3. Opciones de arranque de BDB ………………………………………………………………………..614
14.4.4. Características de las tablas BDB ……………………………………………………………………..615
14.4.5. Temas pendientes de arreglo para BDB ………………………………………………………………616
14.4.6. Limitaciones en las tablas BDB ……………………………………………………………………….616
14.4.7. Errores que pueden darse en el uso de tablas BDB …………………………………………………..617
14.5. El motor de almacenamiento EXAMPLE ………………………………………………………………………617
14.6. El motor de almacenamiento FEDERATED …………………………………………………………………..617
14.6.1. Instalación del motor de almacenamiento FEDERATED …………………………………………….617
14.6.2. Descripción del motor de almacenamiento FEDERATED ……………………………………………618
14.6.3. Cómo usar las tablas FEDERATED …………………………………………………………………..618
14.6.4. Limitaciones del motor de almacenamiento FEDERATED …………………………………………..619
14.7. El motor de almacenamiento ARCHIVE ………………………………………………………………………619
14.8. El motor de almacenamiento CSV …………………………………………………………………………….619
15. El motor de almacenamiento InnoDB …………………………………………………………………………………621
15.1. Panorámica de InnoDB ……………………………………………………………………………………….621
15.2. Información de contacto de InnoDB ………………………………………………………………………….621
15.3. Configuración de InnoDB …………………………………………………………………………………….621
15.4. Opciones de arranque de InnoDB …………………………………………………………………………….625
15.5. Crear el espacio de tablas InnoDB ……………………………………………………………………………629
15.5.1. Resolución de problemas en la inicialización de InnoDB …………………………………………..630
15.6. Crear tablas InnoDB ………………………………………………………………………………………….630
15.6.1. Cómo utilizar transacciones en InnoDB con distintas APIs …………………………………………631
15.6.2. Pasar tablas MyISAM a InnoDB …………………………………………………………………….631
15.6.3. Cómo funciona una columna AUTO_INCREMENT en InnoDB …………………………………….632
15.6.4. Restricciones (constraints) FOREIGN KEY …………………………………………………………632
15.6.5. InnoDB y replicación MySQL ………………………………………………………………………636
15.6.6. Usar un espacio de tablas para cada tabla …………………………………………………………….636
15.7. Añadir y suprimir registros y ficheros de datos InnoDB ……………………………………………………..637
15.8. Hacer una copia de seguridad y recuperar una base de datos InnoDB ……………………………………….638
15.8.1. Forzar una recuperación ………………………………………………………………………………639
15.8.2. Marcadores ……………………………………………………………………………………………640
15.9. Trasladar una base de datos InnoDB a otra máquina …………………………………………………………640
15.10. Bloqueo y modelo de transacciones de InnoDB …………………………………………………………….641
15.10.1. Modos de bloqueo InnoDB ………………………………………………………………………..641
15.10.2. InnoDB y AUTOCOMMIT ………………………………………………………………………….642
15.10.3. InnoDB y TRANSACTION ISOLATION LEVEL ……………………………………………….642
15.10.4. Lecturas consistentes que no bloquean ……………………………………………………………..643
15.10.5. Bloquear lecturas SELECT … FOR UPDATE y SELECT … LOCK IN SHARE MODE ..643
15.10.6. Bloqueo de la próxima clave (Next-Key Locking): evitar el problema fantasma ………………….644
15.10.7. Un ejemplo de lectura consistente en InnoDB …………………………………………………….644
15.10.8. Establecimiento de bloqueos con diferentes sentencias SQL en InnoDB …………………………645
15.10.9. ¿Cuándo ejecuta o deshace implicitamente MySQL una transacción? ……………………………..646
15.10.10. Detección de interbloqueos (deadlocks) y cancelación de transacciones (rollbacks) ……………..646
15.10.11. Cómo tratar con interbloqueos …………………………………………………………………….647
15.11. Consejos de afinamiento del rendimiento de InnoDB ………………………………………………………647
15.11.1. SHOW INNODB STATUS y los monitores InnoDB ………………………………………………649
15.12. Implementación de multiversión ……………………………………………………………………………..652
15.13. Estructuras de tabla y de índice ………………………………………………………………………………652
15.13.1. Estructura física de un índice ……………………………………………………………………….653
15.13.2. Búfer de inserciones …………………………………………………………………………………653
15.13.3. Indices hash adaptables ……………………………………………………………………………..653
15.13.4. Estructura física de los registros …………………………………………………………………….654
15.14. Gestión de espacio de ficheros y de E/S de disco (Disk I/O) ………………………………………………..654
15.14.1. E/S de disco (Disk I/O) ……………………………………………………………………………..654
15.14.2. Usar dispositivos en bruto (raw devices) para espacios de tablas …………………………………..654
15.14.3. Gestión del espacio de ficheros ……………………………………………………………………..655
15.14.4. Desfragmentar una tabla …………………………………………………………………………….655
15.15. Tratamiento de errores de InnoDB …………………………………………………………………………..656
15.15.1. Códigos de error de InnoDB ……………………………………………………………………….656
15.15.2. Códigos de error del sistema operativo ……………………………………………………………..657
15.16. Restricciones de las tablas InnoDB …………………………………………………………………………661
15.17. Resolver problemas relacionados con InnoDB ……………………………………………………………..662
15.17.1. Resolver problemas de las operaciones del diccionario de datos de InnoDB ……………………..663
16. MySQL Cluster …………………………………………………………………………………………………………664
16.1. Panorámica de MySQL Cluster ……………………………………………………………………………….664
16.2. Conceptos básicos de Basic MySQL Cluster ………………………………………………………………….666
16.3. Cómo configurar varios ordenadores ………………………………………………………………………….666
16.3.1. Hardware, software y redes …………………………………………………………………………..668
16.3.2. Instalación …………………………………………………………………………………………….668
16.3.3. Configuración ………………………………………………………………………………………..670
16.3.4. Arranque inicial ………………………………………………………………………………………671
16.3.5. Cargar datos de ejemplo y realizar consultas …………………………………………………………672
16.3.6. Apagado y encendido seguros ………………………………………………………………………..674
16.4. Configuración de MySQL Cluster …………………………………………………………………………….675
16.4.1. Generar MySQL Cluster desde el código fuente …………………………………………………….675
16.4.2. Instalar el software ……………………………………………………………………………………675
16.4.3. Rápido montaje de prueba de MySQL Cluster ……………………………………………………….675
16.4.4. Fichero de configuración ……………………………………………………………………………..677
16.5. Gestión de procesos en MySQL Cluster ………………………………………………………………………696
16.5.1. El uso del proceso del servidor MySQL para MySQL Cluster ………………………………………696
16.5.2. ndbd, el proceso del nodo de motor de almacenamiento ……………………………………………697
16.5.3. El proceso del servidor de administración ndb_mgmd ………………………………………………698
16.5.4. El proceso de cliente de administración ndb_mgm ………………………………………………….698
16.5.5. Opciones de comando para procesos de MySQL Cluster ……………………………………………699
16.6. Administración de MySQL Cluster ……………………………………………………………………………701
16.6.1. Comandos del cliente de administración ……………………………………………………………..701
16.6.2. Informes de eventos generados por MySQL Cluster …………………………………………………702
16.6.3. Modo de usuario único ……………………………………………………………………………….706
16.6.4. Copias de seguridad On-line para MySQL Cluster …………………………………………………..707
16.7. Usar interconexiones de alta velocidad con MySQL Cluster …………………………………………………709
16.7.1. Configurar MySQL Cluster para que utilice Sockets SCI ……………………………………………709
16.7.2. Entender el impacto de interconexiones de nodos ……………………………………………………712
16.8. Limitaciones conocidas de MySQL Cluster …………………………………………………………………..713
16.9. Mapa de desarrollo de MySQL Cluster ……………………………………………………………………….715
16.9.1. Cambios de MySQL Cluster en MySQL 5.0 …………………………………………………………715
16.9.2. Mapa de desarrollo de MySQL 5.1 para MySQL Cluster ……………………………………………716
16.10. Preguntas frecuentes sobre MySQL Cluster …………………………………………………………………716
16.11. Glosario de MySQL Cluster ………………………………………………………………………………….721
17. Introducción a MaxDB …………………………………………………………………………………………………725
17.1. Historia de MaxDB ……………………………………………………………………………………………725
17.2. Licenciamiento y soporte ………………………………………………………………………………………725
17.3. Enlaces relacionados con MaxDB …………………………………………………………………………….725
17.4. Conceptos básicos de MaxDB …………………………………………………………………………………725
17.5. Diferencias de prestaciones entre MaxDB y MySQL …………………………………………………………725
17.6. Características de interoperabilidad entre MaxDB y MySQL …………………………………………………726
17.7. Palabras reservadas de MaxDB ……………………………………………………………………………….726
18. Extensiones espaciales de MySQL ……………………………………………………………………………………..729
18.1. Introducción ……………………………………………………………………………………………………729
18.2. El modelo geométrico OpenGIS ………………………………………………………………………………729
18.2.1. La jerarquía de las clases geométricas ……………………………………………………………….730
18.2.2. La clase Geometry ………………………………………………………………………………….730
18.2.3. La clase Point ………………………………………………………………………………………731
18.2.4. La clase Curve ………………………………………………………………………………………732
18.2.5. La clase LineString ………………………………………………………………………………732
18.2.6. La clase Surface …………………………………………………………………………………..732
18.2.7. La clase Polygon …………………………………………………………………………………..732
18.2.8. La clase GeometryCollection ………………………………………………………………….733
18.2.9. La clase MultiPoint ………………………………………………………………………………733
18.2.10. La clase MultiCurve ……………………………………………………………………………..733
18.2.11. La clase MultiLineString ……………………………………………………………………..734
18.2.12. La clase MultiSurface ………………………………………………………………………….734
18.2.13. La clase MultiPolygon ………………………………………………………………………….734
18.3. Formatos de datos espaciales soportados ……………………………………………………………………..735
18.3.1. Formato Well-Known Text (WKT) ………………………………………………………………….735
18.3.2. Formato Well-Known Binary (WKB) ………………………………………………………………..735
18.4. Crear una base de datos MySQL con capacidades espaciales …………………………………………………736
18.4.1. Tipos de datos espaciales de MySQL ………………………………………………………………..736
18.4.2. Crear valores espaciales ………………………………………………………………………………737
18.4.3. Crear columnas espaciales ……………………………………………………………………………739
18.4.4. Poblar columnas espaciales …………………………………………………………………………..740
18.4.5. Extraer datos espaciales ………………………………………………………………………………741
18.5. Analizar información espacial …………………………………………………………………………………741
18.5.1. Funciones de conversión de formato geométrico …………………………………………………….741
18.5.2. Funciones Geometry ……………………………………………………………………………….742
18.5.3. Funciones que crean nuevas geometrías a partir de unas existentes …………………………………748
18.5.4. Funciones para probar relaciones espaciales entre objetos geométricos ……………………………..748
18.5.5. Relaciones entre rectángulos MBR (Minimal Bounding Rectangles) ……………………………….749
18.5.6. Funciones que prueban relaciones espaciales entre geometrías ……………………………………..750
18.6. Optimización del análisis espacial …………………………………………………………………………….751
18.6.1. Crear índices espaciales ………………………………………………………………………………751
18.6.2. Usar un índice espacial ……………………………………………………………………………….752
18.7. Conformidad y compatibilidad de MySQL ……………………………………………………………………753
18.7.1. Características GIS que todavía no han sido implementadas ………………………………………..753
19. Procedimientos almacenados y funciones ………………………………………………………………………………754
19.1. Procedimientos almacenados y las tablas de permisos ………………………………………………………..754
19.2. Sintaxis de procedimientos almacenados ……………………………………………………………………..754
19.2.1. CREATE PROCEDURE y CREATE FUNCTION ……………………………………………………755
19.2.2. ALTER PROCEDURE y ALTER FUNCTION ……………………………………………………….757
19.2.3. DROP PROCEDURE y DROP FUNCTION ………………………………………………………….757
19.2.4. SHOW CREATE PROCEDURE y SHOW CREATE FUNCTION ……………………………………757
19.2.5. SHOW PROCEDURE STATUS y SHOW FUNCTION STATUS ……………………………………757
19.2.6. La sentencia CALL ……………………………………………………………………………………758
19.2.7. Sentencia compuesta BEGIN … END ……………………………………………………………758
19.2.8. Sentencia DECLARE ………………………………………………………………………………….758
19.2.9. Variables en procedimientos almacenados …………………………………………………………..758
19.2.10. Conditions and Handlers ……………………………………………………………………………759
19.2.11. Cursores ……………………………………………………………………………………………..760
19.2.12. Constructores de control de flujo ……………………………………………………………………761
19.3. Registro binario de procedimientos almacenados y disparadores …………………………………………….763
20. Disparadores (triggers) ………………………………………………………………………………………………….766
20.1. Sintaxis de CREATE TRIGGER ………………………………………………………………………………766
20.2. Sintaxis de DROP TRIGGER …………………………………………………………………………………767
20.3. Utilización de disparadores ……………………………………………………………………………………768
21. Vistas (Views) ………………………………………………………………………………………………………….771
21.1. Sintaxis de ALTER VIEW …………………………………………………………………………………….771
21.2. Sintaxis de CREATE VIEW …………………………………………………………………………………..771
21.3. Sintaxis de DROP VIEW ………………………………………………………………………………………775
21.4. Sintaxis de SHOW CREATE VIEW …………………………………………………………………………..775
22. La base de datos de información INFORMATION_SCHEMA ………………………………………………………….776
22.1. Las tablas INFORMATION_SCHEMA …………………………………………………………………………777
22.1.1. La tabla INFORMATION_SCHEMA SCHEMATA ……………………………………………………777
22.1.2. La tabla INFORMATION_SCHEMA TABLES ………………………………………………………778
22.1.3. La tabla INFORMATION_SCHEMA COLUMNS …………………………………………………….778
22.1.4. La tabla INFORMATION_SCHEMA STATISTICS ………………………………………………..779
22.1.5. La tabla INFORMATION_SCHEMA USER_PRIVILEGES ………………………………………..780
22.1.6. La tabla INFORMATION_SCHEMA SCHEMA_PRIVILEGES …………………………………….780
22.1.7. La tabla INFORMATION_SCHEMA TABLE_PRIVILEGES ………………………………………781
22.1.8. La tabla INFORMATION_SCHEMA COLUMN_PRIVILEGES …………………………………….781
22.1.9. La tabla INFORMATION_SCHEMA CHARACTER_SETS ………………………………………….781
22.1.10. La tabla INFORMATION_SCHEMA COLLATIONS ……………………………………………….782
22.1.11. La tabla INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY ……782
22.1.12. La tabla INFORMATION_SCHEMA TABLE_CONSTRAINTS ……………………………………782
22.1.13. La tabla INFORMATION_SCHEMA KEY_COLUMN_USAGE ……………………………………..783
22.1.14. La tabla INFORMATION_SCHEMA ROUTINES ………………………………………………….784
22.1.15. La tabla INFORMATION_SCHEMA VIEWS ……………………………………………………….784
22.1.16. La tabla INFORMATION_SCHEMA TRIGGERS ………………………………………………….785
22.1.17. Otras tablas INFORMATION_SCHEMA …………………………………………………………….786
22.2. Extensiones a las sentencias SHOW ……………………………………………………………………………786
23. Matemáticas de precisión ……………………………………………………………………………………………….789
23.1. Tipos de valores numéricos ……………………………………………………………………………………789
23.2. Cambios en el tipo de datos DECIMAL ……………………………………………………………………….789
23.3. Manejo de expresiones ………………………………………………………………………………………..791
23.4. Cómo se redondea ……………………………………………………………………………………………..792
23.5. Ejemplos de matemáticas de precisión ………………………………………………………………………..793
24. APIs de MySQL ………………………………………………………………………………………………………..797
24.1. Utilidades para el desarrollo de programas MySQL …………………………………………………………..797
24.1.1. msql2mysql — ……………………………………………………………………………………….797
24.1.2. mysql_config — ………………………………………………………………………………………797
24.2. La API C de MySQL ………………………………………………………………………………………….798
24.2.1. Tipos de datos de la API C …………………………………………………………………………..798
24.2.2. Panorámica de funciones de la API C ………………………………………………………………..801
24.2.3. Descripción de funciones de la API C ……………………………………………………………….804
24.2.4. Sentencias preparadas de la API C …………………………………………………………………..838
24.2.5. Tipos de datos de sentencias preparadas de la API C ………………………………………………..838
24.2.6. Panorámica de las funciones de sentencias preparadas de la API C …………………………………840
24.2.7. Descripciones de funciones de sentencias preparadas de la API C …………………………………..842
24.2.8. Problemas con sentencias preparadas de la API C …………………………………………………..860
24.2.9. Tratamiento por parte de la API C de la ejecución de múltiples consultas …………………………..860
24.2.10. Manejo de valores de fecha y hora por parte de la API C …………………………………………..861
24.2.11. Descripción de funciones de la API C para el control de subprocesos ……………………………..862
24.2.12. Descripción de las funciones de la API C del servidor incrustado (embedded) …………………….863
24.2.13. Preguntas y problemas comunes en el uso de la API C …………………………………………….864
24.2.14. Generar programas cliente ………………………………………………………………………….865
24.2.15. Cómo hacer un cliente multihilo ……………………………………………………………………865
24.2.16. libmysqld, la biblioteca del servidor MySQL incrustado (embedded) ……………………………..866
24.3. API PHP de MySQL …………………………………………………………………………………………..870
24.3.1. Problemas comunes con MySQL y PHP ……………………………………………………………..871
24.4. La API Perl de MySQL ………………………………………………………………………………………..871
24.5. API C++ de MySQL …………………………………………………………………………………………..872
24.5.1. Borland C++ ………………………………………………………………………………………….872
24.6. La API Python de MySQL …………………………………………………………………………………….872
24.7. La API Tcl de MySQL ………………………………………………………………………………………..872
24.8. El visor de MySQL Eiffel ……………………………………………………………………………………..872
25. Conectores ………………………………………………………………………………………………………………873
25.1. MySQL Connector/ODBC …………………………………………………………………………………….873
25.1.1. Introduction to Connector/ODBC ……………………………………………………………………873
25.1.2. Connector/ODBC Installation ………………………………………………………………………..876
25.1.3. Connector/ODBC Configuration ……………………………………………………………………..893
25.1.4. Connector/ODBC Examples ………………………………………………………………………….908
25.1.5. Connector/ODBC Reference …………………………………………………………………………928
25.1.6. Connector/ODBC Notes and Tips ……………………………………………………………………933
25.1.7. Connector/ODBC Support ……………………………………………………………………………941
25.2. MySQL Connector/NET ………………………………………………………………………………………942
25.2.1. Connector/NET Versions …………………………………………………………………………….942
25.2.2. Connector/NET Installation ………………………………………………………………………….943
25.2.3. Connector/NET Examples ……………………………………………………………………………948
25.2.4. Connector/NET Reference ……………………………………………………………………………987
25.2.5. Connector/NET Notes and Tips ……………………………………………………………………. 1081
25.2.6. Connector/NET Support …………………………………………………………………………… 1095
25.3. MySQL Visual Studio Plugin ………………………………………………………………………………. 1096
25.3.1. Installing the MySQL Visual Studio Plugin ……………………………………………………….. 1096
25.3.2. Creating a connection to the MySQL server ………………………………………………………. 1097
25.3.3. Using the MySQL Visual Studio Plugin …………………………………………………………… 1099
25.3.4. Visual Studio Plugin Support ……………………………………………………………………… 1104
25.4. MySQL Connector/J ………………………………………………………………………………………… 1105
25.4.1. Connector/J Versions ………………………………………………………………………………. 1105
25.4.2. Connector/J Installation ……………………………………………………………………………. 1106
25.4.3. Connector/J Examples ……………………………………………………………………………… 1109
25.4.4. Connector/J (JDBC) Reference ……………………………………………………………………. 1109
25.4.5. Connector/J Notes and Tips ……………………………………………………………………….. 1126
25.4.6. Connector/J Support ……………………………………………………………………………….. 1140
25.5. MySQL Connector/MXJ ……………………………………………………………………………………. 1141
25.5.1. Introduction to Connector/MXJ ……………………………………………………………………. 1141
25.5.2. Connector/MXJ Installation ……………………………………………………………………….. 1143
25.5.3. Connector/MXJ Configuration …………………………………………………………………….. 1146
25.5.4. Connector/MXJ Reference …………………………………………………………………………. 1149
25.5.5. Connector/MXJ Notes and Tips ……………………………………………………………………. 1150
25.5.6. Connector/MXJ Support …………………………………………………………………………… 1153
25.6. Connector/PHP ……………………………………………………………………………………………… 1154
26. Manejo de errores en MySQL ……………………………………………………………………………………….. 1155
27. Extender MySQL …………………………………………………………………………………………………….. 1186
27.1. El interior de MySQL ……………………………………………………………………………………….. 1186
27.1.1. Los subprocesos (threads) MySQL ………………………………………………………………… 1186
27.1.2. El paquete de pruebas MySQL Test ……………………………………………………………….. 1186
27.2. Añadir nuevas funciones a MySQL …………………………………………………………………………. 1188
27.2.1. Características de la interfaz para funciones definidas por el usuario …………………………….. 1189
27.2.2. Sintaxis de CREATE FUNCTION/DROP FUNCTION …………………………………………… 1189
27.2.3. Añadir una nueva función definida por el usuario …………………………………………………. 1189
27.2.4. Añadir una nueva función nativa ………………………………………………………………….. 1196
27.3. Añadir nuevos procedimientos a MySQL …………………………………………………………………… 1197
27.3.1. Procedimiento Analyse …………………………………………………………………………….. 1197
27.3.2. Escribir un procedimiento …………………………………………………………………………. 1197
A. Problemas y errores comunes …………………………………………………………………………………………. 1199
A.1. Cómo determinar a qué es debido un problema ……………………………………………………………… 1199
A.2. Errores comunes al usar programas MySQL ………………………………………………………………… 1200
A.2.1. Access denied …………………………………………………………………………………. 1200
A.2.2. Can’t connect to [local] MySQL server …………………………………………… 1200
A.2.3. Client does not support authentication protocol …………………………… 1201
A.2.4. La contraseña falla cuando se introduce interactivamente …………………………………………. 1202
A.2.5. La máquina ‘host_name’ está bloqueada …………………………………………… 1202
A.2.6. Demasiadas conexiones …………………………………………………………………….. 1203
A.2.7. Out of memory …………………………………………………………………………………. 1203
A.2.8. MySQL se ha apagado ……………………………………………………………………….. 1203
A.2.9. Packet too large …………………………………………………………………………….. 1204
A.2.10. Errores de comunicación y conexiones abortadas ………………………………………………… 1205
A.2.11. The table is full …………………………………………………………………………. 1206
A.2.12. Can’t create/write to file …………………………………………………………… 1207
A.2.13. Commands out of sync …………………………………………………………………….. 1207
A.2.14. Ignoring user ………………………………………………………………………………… 1207
A.2.15. Table ‘nombre_de_tabla’ doesn’t exist …………………………………………. 1207
A.2.16. Can’t initialize character set …………………………………………………….. 1208
A.2.17. No se encontró el fichero ………………………………………………………………………….. 1208
A.3. Problemas relacionados con la instalación …………………………………………………………………… 1209
A.3.1. Problemas al enlazar a la biblioteca de clientes MySQL …………………………………………… 1209
A.3.2. Cómo ejecutar MySQL como usuario normal ……………………………………………………… 1209
A.3.3. Problemas con permisos de archivos ……………………………………………………………….. 1210
A.4. Cuestiones relacionadas con la administración ……………………………………………………………… 1210
A.4.1. Cómo reiniciar la contraseña de root ……………………………………………………………….. 1210
A.4.2. Qué hacer si MySQL sigue fallando (crashing) ……………………………………………………. 1212
A.4.3. Cómo se comporta MySQL ante un disco lleno ……………………………………………………. 1214
A.4.4. Dónde almacena MySQL los archivos temporales …………………………………………………. 1215
A.4.5. Cómo proteger o cambiar el fichero socket de MySQL /tmp/mysql.sock …………………… 1215
A.4.6. Problemas con las franjas horarias …………………………………………………………………. 1216
A.5. Problemas relacionados con consultas ………………………………………………………………………. 1216
A.5.1. Sensibilidad a mayúsculas en búsquedas …………………………………………………………… 1216
A.5.2. Problemas en el uso de columnas DATE ……………………………………………………………. 1216
A.5.3. Problemas con valores NULL ………………………………………………………………………. 1217
A.5.4. Problemas con alias de columnas …………………………………………………………………… 1218
A.5.5. Fallo en la cancelación de una transacción con tablas no transaccionales …………………………. 1218
A.5.6. Borrar registros de tablas relacionadas ……………………………………………………………… 1219
A.5.7. Resolver problemas con registros que no salen …………………………………………………….. 1219
A.5.8. Problemas con comparaciones en coma flotante …………………………………………………… 1220
A.6. Cuestiones relacionadas con el optimizador …………………………………………………………………. 1221
A.7. Cuestiones relacionadas con definiciones de tabla ………………………………………………………….. 1222
A.7.1. Problemas con ALTER TABLE ……………………………………………………………………. 1222
A.7.2. Cómo cambiar el orden de las columnas en una tabla ……………………………………………… 1222
A.7.3. Problemas con TEMPORARY TABLE ……………………………………………………………… 1223
A.8. Problemas conocidos en MySQL ……………………………………………………………………………. 1223
A.8.1. Problemas de la versión 3.23 resueltos en una versión posterior de MySQL ………………………. 1223
A.8.2. Problemas de la versión 4.0 resueltos en una versión posterior de MySQL ……………………….. 1224
A.8.3. Problemas de la versión 4.1 resueltos en una versión posterior de MySQL ……………………….. 1224
A.8.4. Cuestiones abiertas en MySQL …………………………………………………………………….. 1224
B. Credits ………………………………………………………………………………………………………………… 1228
B.1. Desarrolladores de MySQL AB ……………………………………………………………………………… 1228
B.2. Han contribuido a crear MySQL …………………………………………………………………………….. 1232
B.3. Documentadores y traductores ………………………………………………………………………………. 1236
B.4. Bibliotecas incluidas en MySQL y que MySQL utiliza ……………………………………………………… 1237
B.5. Paquetes que soportan MySQL ………………………………………………………………………………. 1238
B.6. Herramientas utilizadas en la creación de MySQL ………………………………………………………….. 1238
B.7. Han ayudado a MySQL ……………………………………………………………………………………… 1238
C. Historial de cambios de MySQL ……………………………………………………………………………………… 1240
C.1. Cambios en la entrega 5.0.x (Desarrollo) ……………………………………………………………………. 1240
C.1.1. Cambios en la entrega 5.0.11 (todavía no liberada) ………………………………………………… 1241
C.1.2. Cambios en la entrega 5.0.10 (todavía no liberada) ………………………………………………… 1241
C.1.3. Cambios en la entrega 5.0.9 (15 julio 2005) ………………………………………………………… 1244
C.1.4. Cambios en la entrega 5.0.8 (not released) …………………………………………………………. 1246
C.1.5. Cambios en la entrega 5.0.7 (10 June 2005) ………………………………………………………… 1249
C.1.6. Cambios en la entrega 5.0.6 (26 May 2005) ………………………………………………………… 1251
C.1.7. Cambios en la entrega 5.0.5 (not released) …………………………………………………………. 1255
C.1.8. Cambios en la entrega 5.0.4 (16 Apr 2005) ………………………………………………………… 1256
C.1.9. Cambios en la entrega 5.0.3 (23 Mar 2005: Beta) ………………………………………………….. 1258
C.1.10. Cambios en la entrega 5.0.2 (01 Dec 2004) ……………………………………………………….. 1265
xivC.1.11. Cambios en la entrega 5.0.1 (27 Jul 2004) ………………………………………………………… 1268
C.1.12. Cambios en la entrega 5.0.0 (22 Dec 2003: Alpha) ……………………………………………….. 1270
C.2. Cambios en MySQL Connector/ODBC (MyODBC) ………………………………………………………… 1271
C.2.1. Changes in Connector/ODBC 5.0.10 (14 December 2006) ………………………………………… 1271
C.2.2. Changes in Connector/ODBC 5.0.9 (22 November 2006) …………………………………………. 1271
C.2.3. Changes in Connector/ODBC 5.0.8 (17 November 2006) …………………………………………. 1272
C.2.4. Changes in Connector/ODBC 5.0.7 (08 November 2006) …………………………………………. 1272
C.2.5. Changes in Connector/ODBC 5.0.6 (03 November 2006) …………………………………………. 1273
C.2.6. Changes in Connector/ODBC 5.0.5 (17 October 2006) ……………………………………………. 1273
C.2.7. Changes in Connector/ODBC 5.0.3 (Connector/ODBC 5.0 Alpha 3) (20 June 2006) …………….. 1273
C.2.8. Changes in Connector/ODBC 5.0.2 (Never released) ………………………………………………. 1273
C.2.9. Changes in Connector/ODBC 5.0.1 (Connector/ODBC 5.0 Alpha 2) (05 June 2006) …………….. 1274
C.2.10. Changes in Connector/ODBC 3.51.13 (Not yet released) ………………………………………… 1275
C.2.11. Cambios en MyODBC 3.51.12 ……………………………………………………………………. 1275
C.2.12. Cambios en MyODBC 3.51.11 ……………………………………………………………………. 1275
C.3. Connector/NET Change History …………………………………………………………………………….. 1275
C.3.1. Changes in MySQL Connector/NET Version 5.0.4 (Not yet released) …………………………….. 1275
C.3.2. Changes in MySQL Connector/NET Version 5.0.3 (05 January 2007) ……………………………. 1276
C.3.3. Changes in MySQL Connector/NET Version 5.0.2 (06 November 2006) …………………………. 1277
C.3.4. Changes in MySQL Connector/NET Version 5.0.1 (01 October 2006) ……………………………. 1277
C.3.5. Changes in MySQL Connector/NET Version 5.0.0 (08 August 2006) …………………………….. 1278
C.3.6. Changes in MySQL Connector/NET Version 1.0.9 (Not yet released) …………………………….. 1278
C.3.7. Changes in MySQL Connector/NET Version 1.0.8 (20 October 2006) ……………………………. 1279
C.3.8. Changes in MySQL Connector/NET Version 1.0.7 (21 November 2005) …………………………. 1280
C.3.9. Changes in MySQL Connector/NET Version 1.0.6 (03 October 2005) ……………………………. 1280
C.3.10. Changes in MySQL Connector/NET Version 1.0.5 (29 August 2005) …………………………… 1281
C.3.11. Changes in MySQL Connector/NET Version 1.0.4 (20 January 2005) …………………………… 1281
C.3.12. Changes in MySQL Connector/NET Version 1.0.3-gamma (12 October 2004) ………………….. 1282
C.3.13. Changes in MySQL Connector/NET Version 1.0.2-gamma (15 November 2004) ……………….. 1282
C.3.14. Changes in MySQL Connector/NET Version 1.0.1-beta2 (27 October 2004) ……………………. 1283
C.3.15. Changes in MySQL Connector/NET Version 1.0.0 (01 September 2004) ……………………….. 1284
C.3.16. Changes in MySQL Connector/NET Version 0.9.0 (30 August 2004) …………………………… 1284
C.3.17. Changes in MySQL Connector/NET Version 0.76 ……………………………………………….. 1287
C.3.18. Changes in MySQL Connector/NET Version 0.75 ……………………………………………….. 1288
C.3.19. Changes in MySQL Connector/NET Version 0.74 ……………………………………………….. 1288
C.3.20. Changes in MySQL Connector/NET Version 0.71 ……………………………………………….. 1290
C.3.21. Changes in MySQL Connector/NET Version 0.70 ……………………………………………….. 1290
C.3.22. Changes in MySQL Connector/NET Version 0.68 ……………………………………………….. 1292
C.3.23. Changes in MySQL Connector/NET Version 0.65 ……………………………………………….. 1292
C.3.24. Changes in MySQL Connector/NET Version 0.60 ……………………………………………….. 1292
C.3.25. Changes in MySQL Connector/NET Version 0.50 ……………………………………………….. 1292
C.4. MySQL Visual Studio Plugin Change History ………………………………………………………………. 1293
C.4.1. Changes in MySQL Visual Studio Plugin 1.0.2 (Not yet released) ………………………………… 1293
C.4.2. Changes in MySQL Visual Studio Plugin 1.0.1 (4 October 2006) …………………………………. 1293
C.4.3. Changes in MySQL Visual Studio Plugin 1.0.0 (4 October 2006) …………………………………. 1293
C.5. MySQL Connector/J Change History ……………………………………………………………………….. 1293
C.5.1. Changes in MySQL Connector/J 5.1.x ……………………………………………………………… 1293
C.5.2. Changes in MySQL Connector/J 5.0.x ……………………………………………………………… 1294
C.5.3. Changes in MySQL Connector/J 3.1.x ……………………………………………………………… 1296
C.5.4. Changes in MySQL Connector/J 3.0.x ……………………………………………………………… 1310
C.5.5. Changes in MySQL Connector/J 2.0.x ……………………………………………………………… 1321
C.5.6. Changes in MySQL Connector/J 1.2b (04 July 1999) ……………………………………………… 1325
C.5.7. Changes in MySQL Connector/J 1.2.x and lower ………………………………………………….. 1325
D. Portar a otros sistemas ………………………………………………………………………………………………… 1330
D.1. Depurar un servidor MySQL ………………………………………………………………………………… 1330
D.1.1. Compilación de MySQL para depuración ………………………………………………………….. 1331
D.1.2. Crear ficheros de traza ……………………………………………………………………………… 1331
D.1.3. Depurar mysqld con gdb …………………………………………………………………………. 1332
D.1.4. Usar stack trace …………………………………………………………………………………….. 1333
D.1.5. El uso de registros (logs) para encontrar la causa de errores de mysqld …………………………. 1333
D.1.6. Crear un caso de prueba tras haber encontrado una tabla corrupta …………………………………. 1334
D.2. Depuración de un cliente MySQL …………………………………………………………………………… 1334
D.3. El paquete DBUG ……………………………………………………………………………………………. 1335
D.4. Comentarios sobre subprocesos RTS ………………………………………………………………………… 1336
D.5. Diferencias entre paquetes de control de subprocesos ………………………………………………………. 1337
E. Variables de entorno ………………………………………………………………………………………………….. 1338
F. Expresiones regulares en MySQL …………………………………………………………………………………….. 1339
G. Límites en MySQL ……………………………………………………………………………………………………. 1342
G.1. Límites de los joins ………………………………………………………………………………………….. 1342
H. Restricciones en características de MySQL ………………………………………………………………………….. 1343
H.1. Restricciones en procedimientos almacenados y disparadores ……………………………………………… 1343
H.2. Restricciones en cursores del lado del servidor ……………………………………………………………… 1343
H.3. Restricciones en subconsultas ……………………………………………………………………………….. 1344
H.4. Restricciones en vistas ……………………………………………………………………………………….. 1346
I. GNU General Public License ………………………………………………………………………………………….. 1348
J. MySQL FLOSS License Exception ……………………………………………………………………………………. 1352
Índice ……………………………………………………………………………………………………………………. 1354

Acerca de ArturoMezDa

Ing.Sistemas Computacionales

Publicado el 10 julio, 2010 en Manuales, Seguridad, Tecnologias, Tutoriales, Utilidades y etiquetado en , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , . Guarda el enlace permanente. 1 comentario.

  1. Hi, always i used to check webpage posts here in the early hours in the dawn,
    since i love to learn more and more.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: