Manual de referencia de MySQL 5.0

1565
Manual de referencia de MySQL 5.0

Transcript of Manual de referencia de MySQL 5.0

Manual de referencia de MySQL 5.0

Manual de referencia de MySQL 5.0sta es una traduccin del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com [http://dev.mysql.com/doc/mysql/en]. El manual de referencia original de MySQL est escrito en ingls, y esta traduccin no necesariamente est tan actualizada como la versin original. Para cualquier sugerencia sobre la traduccin y para sealar errores de cualquier tipo, no dude en dirigirse a [email protected] [mailto:[email protected]].

ResumenDocumento generado el: 30-11-2006 (revisin: 357)Copyright 1997-2006 MySQL AB Esta documentacin NO se distribuye bajo una licencia GPL. El uso de esta documentacin est sujeta a los siguientes trminos: Puede Usted crear una copia impresa de esta documentacin nicamente para su uso personal. La conversin a otros formatos est permitida siempre y cuando el contenido no se vea alterado ni editado de ninguna manera. No est permitida la publicacin ni la distribucin de esta documentacin bajo ninguna forma ni en ningn medio, excepto si distribuye la documentacin en una manera similar a la que utiliza MySQL para difundirla (esto es, electrnicamente para ser bajada con el software) o en un CD-ROM o medio similar, siempre y cuando la documentacin se difunda junto con el software en el mismo medio. Para cualquier otra utilizacin, como por ejemplo cualquier difusin de copias escritas, o el uso de esta documentacin, en su totalidad o parcialmente, en otra publicacin, se debe obtener una autorizacin escrita previa por parte de un representante autorizado de MySQL AB. MySQL AB se reserva cualquier derecho y todos los derechos sobre esta documentacin, aunque no est aqu expresamente acordado. Si desea obtener ms informacin o si est interesado en realizar una traduccin, dirjase por favor por correo electrnico a .

Tabla de contenidosPrefacio .................................................................................................................. xxi 1. Informacin general ................................................................................................. 1 1.1. Sobre este manual ......................................................................................... 1 1.2. Convenciones utilizadas en este manual ............................................................. 2 1.3. Panormica de MySQL AB ............................................................................. 4 1.4. Panormica del sistema de gestin de base de datos MySQL .................................. 4 1.4.1. Historia de MySQL ............................................................................. 6 1.4.2. Las principales caractersticas de MySQL ................................................ 6 1.4.3. Estabilidad de MySQL ......................................................................... 9 1.4.4. Dimensiones mximas de las tablas MySQL .......................................... 10 1.4.5. Conformidad con el efecto 2000 .......................................................... 11 1.5. Mapa de desarrollo de MySQL ...................................................................... 12 1.5.1. El servidor MySQL incrustado (embedded) ........................................... 12 1.5.2. Qu hay de nuevo en MySQL 5.0 ........................................................ 13 1.6. Fuentes de informacin acerca de MySQL ....................................................... 14 1.6.1. Listas de correo de MySQL ................................................................ 14 1.6.2. Soporte por IRC (Internet Relay Chat) de la comunidad MySQL ................ 21 1.6.3. Soporte por parte de la comunidad en los foros de MySQL ....................... 21 1.7. Cumplimiento de los estndares por parte de MySQL ......................................... 21 1.7.1. Estndares utilizados por MySQL ........................................................ 22 1.7.2. Seleccin de modos SQL .................................................................... 22 1.7.3. Ejecutar MySQL en modo ANSI ......................................................... 22 1.7.4. Extensiones MySQL al estndar SQL ................................................... 23 1.7.5. Diferencias en MySQL del estndar SQL .............................................. 26 1.7.6. Cmo trata MySQL las restricciones (Constraints) .................................. 32 2. Instalar MySQL ..................................................................................................... 36 2.1. Cuestiones generales sobre la instalacin ......................................................... 36 2.1.1. Sistemas operativos que MySQL soporta ............................................... 37 2.1.2. Escoger la distribucin MySQL a instalar .............................................. 39 2.1.3. Cmo obtener MySQL ....................................................................... 51 2.1.4. Comprobar la integridad de paquetes con sumas de verificacin MD5 o GnuPG ............................................................................................................... 51 2.1.5. Conformacin de la instalacin ............................................................ 54 2.2. Instalacin MySQL estndar con una distribucin binaria ................................... 55 2.3. Instalar MySQL en Windows ........................................................................ 56 2.3.1. Requisitos de Windows ...................................................................... 56 2.3.2. Eleccin de un paquete de instalacin ................................................... 57 2.3.3. Instalacin de MySQL con un instalador automtico ................................ 57 2.3.4. Usar el asistente de instalacin de MySQL ............................................ 58 2.3.5. Utilizacin del asistente de configuracin .............................................. 61 2.3.6. Instalar MySQL partiendo de un archivo Zip Noinstall ............................. 65 2.3.7. Descomprimir el fichero de instalacin ................................................. 66 2.3.8. Creacin de un fichero de opciones ...................................................... 66 2.3.9. Seleccionar un tipo de servidor MySQL ................................................ 67 2.3.10. Arrancar el servidor la primera vez ..................................................... 68 2.3.11. Arrancar MySQL desde la raya de comandos de Windows ...................... 70 2.3.12. Arrancar MySQL como un servicio de Windows ................................... 70 2.3.13. Comprobar la instalacin de MySQL Installation .................................. 73 2.3.14. Resolucin de problemas en la instalacin de MySQL bajo Windows ........ 73 2.3.15. Aumentar la versin de MySQL en Windows ....................................... 75 2.3.16. Comparacin entre MySQL en Windows y MySQL en Unix ................... 76 2.4. Instalar MySQL en Linux ............................................................................. 78 2.5. Instalar MySQL en Mac OS X ....................................................................... 81 iv

Manual de referencia de MySQL 5.0

2.6. Instalar MySQL sobre NetWare ..................................................................... 83 2.7. Instalacin de MySQL en otros sistemas similares a Unix ................................... 85 2.8. Instalacin de MySQL usando una distribucin de cdigo fuente .......................... 88 2.8.1. Panormica de la instalacin de cdigo fuente ........................................ 89 2.8.2. Opciones tpicas de configure ........................................................ 92 2.8.3. Instalar desde el rbol de cdigo fuente de desarrollo ............................... 95 2.8.4. Problemas en la compilacin de MySQL ............................................... 98 2.8.5. Notas sobre MIT-pthreads ................................................................ 101 2.8.6. Instalar MySQL desde el cdigo fuente en Windows ............................. 102 2.8.7. Compilar los clientes de MySQL en Windows ...................................... 106 2.9. Puesta en marcha y comprobacin despus de la instalacin .............................. 106 2.9.1. Pasos a seguir despus de la instalacin en Windows ............................. 107 2.9.2. Pasos a seguir despus de la instalacin en Unix ................................... 107 2.9.3. Hacer seguras las cuentas iniciales de MySQL ..................................... 118 2.10. Aumentar la versin de MySQL ................................................................. 122 2.10.1. Aumentar la versin de 4.1 a 5.0 ...................................................... 123 2.10.2. Aumentar la versin de las tablas de privilegios .................................. 125 2.10.3. Copiar bases de datos MySQL a otra mquina .................................... 126 2.11. Bajar la versin de MySQL ....................................................................... 127 2.11.1. Volver a la versin 4.1 ................................................................... 128 2.12. Notas especficas sobre sistemas operativos .................................................. 129 2.12.1. Notas sobre Linux ......................................................................... 129 2.12.2. Notas sobre Mac OS X ................................................................... 136 2.12.3. Notas sobre Solaris ........................................................................ 137 2.12.4. Notas sobre BSD ........................................................................... 141 2.12.5. Notas sobre otros Unix ................................................................... 144 2.12.6. Notas sobre OS/2 .......................................................................... 159 2.13. Notas sobre la instalacin de Perl ................................................................ 160 2.13.1. Instalacin de Perl en Unix ............................................................. 160 2.13.2. Instalar ActiveState Perl en Windows ............................................... 161 2.13.3. Problemas en la utilizacin de la interfaz Perl DBI/DBD ....................... 162 3. Curso (tutorial) de MySQL .................................................................................... 165 3.1. Conectarse al y desconectarse del servidor ..................................................... 165 3.2. Entrar consultas ........................................................................................ 166 3.3. Crear y utilizar una base de datos ................................................................. 169 3.3.1. Crear y seleccionar una base de datos ................................................. 170 3.3.2. Crear una tabla ............................................................................... 170 3.3.3. Cargar datos en una tabla ................................................................. 172 3.3.4. Extraer informacin de una tabla ....................................................... 173 3.4. Obtener informacin sobre bases de datos y tablas ........................................... 186 3.5. Usar mysql en modo batch ........................................................................ 186 3.6. Ejemplos de consultas comunes ................................................................... 188 3.6.1. El valor mximo de una columna ....................................................... 188 3.6.2. El registro que tiene el valor mximo de determinada columna ................ 189 3.6.3. Mximo de columna por grupo .......................................................... 189 3.6.4. Los registros de un grupo que tienen el mximo valor en alguna columna .. 189 3.6.5. Utilizacin de variables de usuario ..................................................... 189 3.6.6. Usar claves forneas (foreign keys) .................................................... 190 3.6.7. Buscar usando dos claves ................................................................. 191 3.6.8. Calcular visitas diarias ..................................................................... 192 3.6.9. Utilizacin de AUTO_INCREMENT .................................................... 192 3.7. Consultas del proyecto Mellizos (Twin) ......................................................... 193 3.7.1. Encontrar todos los mellizos no repartidos ........................................... 194 3.7.2. Mostrar una tabla de estado de mellizos .............................................. 196 3.8. Usar MySQL con Apache ........................................................................... 196 4. Usar los programas MySQL ................................................................................... 197 4.1. Panormica de programas MySQL ............................................................... 197 4.2. Invocar programas MySQL ......................................................................... 198 v

Manual de referencia de MySQL 5.0

4.3. Especificar opciones de programa ................................................................. 199 4.3.1. Usar opciones en la raya de comando .................................................. 199 4.3.2. Usar ficheros de opciones ................................................................. 201 4.3.3. Usar variables de entorno para especificar opciones ............................... 206 4.3.4. Utilizacin de opciones para establecer variables de programa ................. 206 5. Administracin de bases de datos ............................................................................ 208 5.1. El servidor MySQL y scripts de arranque del servidor ...................................... 208 5.1.1. Panormica de los programas scripts y las utilidades del lado del servidor (server-side) ........................................................................................... 208 5.1.2. El servidor extendido de MySQL mysqld-max .................................. 209 5.1.3. El script de arranque del servidor mysqld_safe ................................ 212 5.1.4. El script mysql.server para el arranque del servidor ........................ 215 5.1.5. El programa mysqld_multi para gestionar mltiples servidores MySQL 216 5.2. El gestor de instancias de MySQL ................................................................ 219 5.2.1. Arrancar el servidor MySQL con el gestor de instancias MySQL ............. 219 5.2.2. Conexin al gestor de instancias de MySQL y creacin de cuentas de usuario ............................................................................................................. 220 5.2.3. Opciones de los comandos del gestor de instancias MySQL .................... 221 5.2.4. Ficheros de configuracin del gestor de instancias de MySQL ................. 222 5.2.5. Los comandos que reconoce el gestor de instancias de MySQL ................ 223 5.3. Configuracin del servidor MySQL .............................................................. 225 5.3.1. Opciones del comando mysqld ........................................................ 225 5.3.2. El modo SQL del servidor ................................................................ 236 5.3.3. Variables de sistema del servidor ....................................................... 240 5.3.4. Variables de estado del servidor ......................................................... 270 5.4. El proceso de cierre del servidor MySQL ....................................................... 280 5.5. Cuestiones de seguridad general ................................................................... 281 5.5.1. Gua de seguridad general ................................................................ 281 5.5.2. Hacer que MySQL sea seguro contra ataques ....................................... 284 5.5.3. Opciones de arranque para mysqld relacionadas con la seguridad ........... 286 5.5.4. Cuestiones relacionadas con la seguridad y LOAD DATA LOCAL ........... 287 5.6. El sistema de privilegios de acceso de MySQL ................................................ 288 5.6.1. Qu hace el sistema de privilegios ...................................................... 288 5.6.2. Cmo funciona el sistema de privilegios .............................................. 289 5.6.3. Privilegios de los que provee MySQL ................................................. 293 5.6.4. Conectarse al servidor MySQL .......................................................... 297 5.6.5. Control de acceso, nivel 1: Comprobacin de la conexin ....................... 298 5.6.6. Control de acceso, nivel 2: comprobacin de solicitudes ......................... 302 5.6.7. Cundo tienen efecto los camios de privilegios ..................................... 304 5.6.8. Causas de errores Access denied ................................................. 305 5.6.9. Hashing de contraseas en MySQL 4.1 ............................................... 310 5.7. Gestin de la cuenta de usuario MySQL ........................................................ 314 5.7.1. Nombres de usuario y contraseas de MySQL ...................................... 315 5.7.2. Aadir nuevas cuentas de usuario a MySQL ........................................ 316 5.7.3. Eliminar cuentas de usuario de MySQL .............................................. 319 5.7.4. Limitar recursos de cuentas ............................................................... 319 5.7.5. Asignar contraseas a cuentas ........................................................... 321 5.7.6. Guardar una contrasea de forma segura ............................................. 322 5.7.7. Usar conexiones seguras .................................................................. 323 5.8. Prevencin de desastres y recuperaciones ....................................................... 330 5.8.1. Copias de seguridad de bases de datos ................................................ 330 5.8.2. Ejemplo de estrategia de copias de seguridad y recuperacin ................... 332 5.8.3. Mantenimiento de tablas y recuperacin de un fallo catastrfico (crash) .... 335 5.8.4. Organizar un programa de mantenimiento de tablas ............................... 348 5.8.5. Obtener informacin acerca de una tabla ............................................. 349 5.9. Uso internacional y localizacin de MySQL ................................................... 354 5.9.1. El conjunto de caracteres utilizado para datos y ordenacin ..................... 354 5.9.2. Escoger el idioma de los mensajes de error .......................................... 355 vi

Manual de referencia de MySQL 5.0

5.9.3. Aadir un conjunto de caracteres nuevo .............................................. 5.9.4. Los vectores de definicin de caracteres .............................................. 5.9.5. Soporte para colacin de cadenas de caracteres ..................................... 5.9.6. Soporte de caracteres multi-byte ........................................................ 5.9.7. Problemas con conjuntos de caracteres ................................................ 5.9.8. Soporte de zonas horarias en el servidor MySQL .................................. 5.10. Los ficheros de registro (log) de MySQL ...................................................... 5.10.1. El registro de errroes (Error Log) ..................................................... 5.10.2. El registro general de consultas ........................................................ 5.10.3. El registro binario (Binary Log) ....................................................... 5.10.4. El registro de consultas lentas (Slow Query Log) ................................. 5.10.5. Mantenimiento de ficheros de registro (log) ....................................... 5.11. Ejecutar ms de un servidor MySQL en la misma mquina .............................. 5.11.1. Ejecutar varios servidores en Windows ............................................. 5.11.2. Ejecutar varios servidores en Unix .................................................... 5.11.3. Utilizacin de programas cliente en un entorno de mltiples servidores ... 5.12. La cach de consultas de MySQL ............................................................... 5.12.1. Cmo opera la cach de consultas .................................................... 5.12.2. Opciones de SELECT para la cach de consultas ................................. 5.12.3. Configuracin de la cach de consultas .............................................. 5.12.4. Estado y mantenimiento de la cach de consultas ................................ 6. Replicacin en MySQL ......................................................................................... 6.1. Introduccin a la replicacin ........................................................................ 6.2. Panormica de la implementacin de la replicacin .......................................... 6.3. Detalles de la implementacin de la replicacin ............................................... 6.3.1. Estados de los subprocesos del maestro de replicacin ........................... 6.3.2. Estados de proceso E/S (I/O) del esclavo de replicacin ......................... 6.3.3. Estados del flujo SQL de un esclavo de replicacin ............................... 6.3.4. Ficheros de replicacin, retardados y de estado ..................................... 6.4. Cmo montar la replicacin ......................................................................... 6.5. Compatibilidad entre versiones de MySQL con respecto a la replicacin .............. 6.6. Aumentar la versin de la replicacin ............................................................ 6.6.1. Aumentar la versin de la replicacin a 5.0 .......................................... 6.7. Caractersticas de la replicacin y problemas conocidos .................................... 6.8. Opciones de arranque de replicacin ............................................................. 6.9. Preguntas y respuestas sobre replicacin ........................................................ 6.10. Resolucin de problemas de replicacin ....................................................... 6.11. Reportar bugs de replicacin ...................................................................... 7. Optimizacin de MySQL ...................................................................................... 7.1. Panormica sobre optimizacin .................................................................... 7.1.1. Limitaciones y soluciones de compromiso en el diseo de MySQL ........... 7.1.2. Disear aplicaciones pensando en la portabilidad .................................. 7.1.3. Para qu hemos usado MySQL .......................................................... 7.1.4. El paquete de pruebas de rendimiento (benchmarks) de MySQL .............. 7.1.5. Usar pruebas de rendimiento (benchmarks) propios ............................... 7.2. Optimizar sentencias SELECT y otras consultas .............................................. 7.2.1. Sintaxis de EXPLAIN (Obtener informacin acerca de un SELECT) ......... 7.2.2. Estimar el renidimiento de una consulta .............................................. 7.2.3. Velocidad de las consultas SELECT ................................................... 7.2.4. Optimizacin de las clusulas WHERE por parte de MySQL .................... 7.2.5. Optimizacin de rango ..................................................................... 7.2.6. Index Merge Optimization ................................................................ 7.2.7. Cmo optimiza MySQL IS NULL .................................................... 7.2.8. Cmo MySQL optimiza DISTINCT .................................................. 7.2.9. Cmo optimiza MySQL los LEFT JOIN y RIGHT JOIN .................... 7.2.10. Cmo optimiza MySQL ORDER BY ................................................ 7.2.11. Cmo optimiza MySQL los GROUP BY ............................................ 7.2.12. Cmo optimiza MySQL las clusulas LIMIT ..................................... vii

356 358 358 358 359 359 360 361 361 362 366 366 367 369 372 373 374 375 376 377 378 380 380 380 381 382 383 384 384 386 390 391 391 391 395 403 409 410 411 411 411 412 413 414 415 415 416 424 424 425 427 430 433 433 434 435 436 438

Manual de referencia de MySQL 5.0

7.2.13. Cmo evitar lecturas completas de tablas ........................................... 7.2.14. Velocidad de la sentencia INSERT ................................................... 7.2.15. Velocidad de las sentencias UPDATE ................................................ 7.2.16. Velocidad de sentencias DELETE ..................................................... 7.2.17. Otros consejos sobre optimizacin .................................................... 7.3. Temas relacionados con el bloqueo ............................................................... 7.3.1. Mtodos de bloqueo ........................................................................ 7.3.2. Cuestiones relacionadas con el bloqueo (locking) de tablas ..................... 7.4. Optimizar la estructura de una base de datos ................................................... 7.4.1. Elecciones de diseo ....................................................................... 7.4.2. Haga sus datos lo ms pequeos posibles ............................................. 7.4.3. ndices de columna ......................................................................... 7.4.4. ndices de mltiples columnas ........................................................... 7.4.5. Cmo utiliza MySQL los ndices ....................................................... 7.4.6. La cach de claves de MyISAM ......................................................... 7.4.7. Cmo cuenta MySQL las tablas abiertas .............................................. 7.4.8. Cmo abre y cierra tablas MySQL ..................................................... 7.4.9. Desventajas de crear muchas tablas en la misma base de datos ................. 7.5. Optimizacin del servidor MySQL ............................................................... 7.5.1. Factores de sistema y afinamientos de parmetros de arranque ................. 7.5.2. Afinar parmetros del servidor .......................................................... 7.5.3. Vigilar el rendimiento del optimizador de consultas ............................... 7.5.4. Efectos de la compilacin y del enlace en la velocidad de MySQL ........... 7.5.5. Cmo utiliza MySQL la memoria ...................................................... 7.5.6. Cmo usa MySQL las DNS .............................................................. 7.6. Cuestiones relacionadas con el disco ............................................................. 7.6.1. Utilizar enlaces simblicos ............................................................... 8. Programas cliente y utilidades MySQL .................................................................... 8.1. Panormica de scripts y utilidades del lado del cliente ...................................... 8.2. myisampack, el generador de tablas comprimidas de slo lectura de MySQL ..... 8.3. La herramienta intrprete de comandos mysql ............................................... 8.3.1. Comandos mysql .......................................................................... 8.3.2. Ejecutar sentencias SQL desde un fichero de texto ................................ 8.3.3. Sugerencias acerca de mysql ........................................................... 8.4. Administrar un servidor MySQL con mysqladmin ........................................ 8.5. La utilidad mysqlbinlog para registros binarios .......................................... 8.6. El programa mysqlcheck para mantener y reparar tablas ............................... 8.7. El programa de copia de seguridad de base de datos mysqldump ...................... 8.8. El programa de copias de seguridad de base de datos mysqlhotcopy ............... 8.9. El programa para importar datos mysqlimport ............................................ 8.10. Mostrar bases de datos, tablas y columnas con mysqlshow ............................ 8.11. perror, explicacin de cdigos de error ..................................................... 8.12. La utilidad replace de cambio de cadenas de caracteres ............................... 9. Estructura de lenguaje ........................................................................................... 9.1. Valores literales ........................................................................................ 9.1.1. Cadenas de caracteres ...................................................................... 9.1.2. Nmeros ....................................................................................... 9.1.3. Valores hexadecimales ..................................................................... 9.1.4. Valores booleanos ........................................................................... 9.1.5. Valores de bits ............................................................................... 9.1.6. Valores NULL ................................................................................ 9.2. Nombres de bases de datos, tablas, ndices, columnas y alias ............................. 9.2.1. Cualificadores de los identificadores ................................................... 9.2.2. Sensibilidad a maysuclas y minsculas de identificadores ..................... 9.3. Variables de usuario .................................................................................. 9.4. Variables de sistema .................................................................................. 9.4.1. Variables estructuradas de sistema ..................................................... 9.5. Sintaxis de comentarios .............................................................................. viii

439 440 441 442 442 444 444 447 448 448 449 450 450 451 454 458 458 460 460 460 461 463 464 465 467 467 468 472 472 474 480 486 489 490 491 496 500 503 510 512 514 516 517 518 518 518 520 520 521 521 521 522 523 523 525 526 528 530

Manual de referencia de MySQL 5.0

9.6. Tratamiento de palabras reservadas en MySQL ............................................... 10. Soporte de conjuntos de caracteres ........................................................................ 10.1. Conjuntos de caracteres y colaciones en general ............................................ 10.2. Conjuntos de caracteres y colaciones en MySQL ........................................... 10.3. Determinar el conjunto de caracteres y la colacin por defecto ......................... 10.3.1. Conjunto de caracteres y colacin del servidor .................................... 10.3.2. Conjuntos de caracteres y colaciones de la base de datos ....................... 10.3.3. Conjunto de caracteres y colacin de tabla ......................................... 10.3.4. Conjunto de caracteres y colacin de columnas ................................... 10.3.5. Ejemplos de asignacin de conjunto de caracteres y colacin ................. 10.3.6. Conjunto de caracteres y colacin de la conexin ................................ 10.3.7. Conjunto de caracteres y colacin de columnas carcter ..................... 10.3.8. Usar COLLATE en sentencias SQL ................................................... 10.3.9. Precedencia de la clusula COLLATE ................................................ 10.3.10. Operador BINARY ....................................................................... 10.3.11. Casos especiales en los que determinar la colacin es complicado ......... 10.3.12. A cada colacin un conjunto de caracteres correcto ............................ 10.3.13. Un ejemplo del efecto de una colacin ............................................. 10.4. Efectos del soporte de conjuntos de caracteres ............................................... 10.4.1. Cadenas de caracteres de resultado ................................................... 10.4.2. CONVERT() ................................................................................ 10.4.3. CAST() ...................................................................................... 10.4.4. Sentencias SHOW ........................................................................... 10.5. Soporte Unicode ...................................................................................... 10.6. UTF8 para metadatos ............................................................................... 10.7. Compatibilidad con otros SGBDs (Sistemas gestores de bases de datos) ............. 10.8. Formato del nuevo fichero de conjunto de caracateres ..................................... 10.9. Conjunto de caracteres nacional ................................................................. 10.10. Conjuntos de caracteres y colaciones que soporta MySQL ............................. 10.10.1. Conjuntos de caracteres Unicode .................................................... 10.10.2. Conjuntos de caracteres de Europa occidental ................................... 10.10.3. Conjuntos de caracteres de Europa central ........................................ 10.10.4. Conjuntos de caracteres del sur de Europa y de Oriente Medio ............. 10.10.5. Conjuntos de caracteres blticos ..................................................... 10.10.6. Conjuntos de caracteres cirlicos ..................................................... 10.10.7. Conjuntos de caracteres asiticos .................................................... 11. Tipos de columna ............................................................................................... 11.1. Panormica de tipos de columna ................................................................. 11.1.1. Panormica de tipos numricos ........................................................ 11.1.2. Panormica de tipos de fechas y hora ................................................ 11.1.3. Panormica de tipos de cadenas de caracteres ..................................... 11.2. Tipos numricos ...................................................................................... 11.3. Tipos de fecha y hora ............................................................................... 11.3.1. Los tipos de datos DATETIME, DATE y TIMESTAMP .......................... 11.3.2. El tipo TIME ................................................................................ 11.3.3. El tipo de datos YEAR .................................................................... 11.3.4. Efecto 2000 (Y2K) y tipos de datos .................................................. 11.4. Tipos de cadenas de caracteres ................................................................... 11.4.1. Los tipos CHAR y VARCHAR ........................................................... 11.4.2. Los tipos BINARY y VARBINARY ................................................... 11.4.3. Los tipos BLOB y TEXT ................................................................. 11.4.4. El tipo de columna ENUM ................................................................ 11.4.5. El tipo SET .................................................................................. 11.5. Requisitos de almacenamiento segn el tipo de columna ................................. 11.6. Escoger el tipo de columna correcto ............................................................ 11.7. Usar tipos de columnas de otros motores de bases de datos .............................. 12. Funciones y operadores ....................................................................................... 12.1. Operadores ............................................................................................. ix

530 534 534 535 536 536 537 538 538 539 540 542 543 544 544 544 545 545 546 546 547 547 548 549 550 551 551 551 552 552 554 555 556 557 557 558 560 560 560 563 564 568 570 572 576 577 578 578 578 579 580 581 583 584 586 587 589 589

Manual de referencia de MySQL 5.0

12.1.1. Precedencias de los operadores ........................................................ 12.1.2. Parntesis .................................................................................... 12.1.3. Funciones y operadores de comparacin ............................................ 12.1.4. Operadores lgicos ........................................................................ 12.2. Funciones de control de flujo ..................................................................... 12.3. Funciones para cadenas de caracetres .......................................................... 12.3.1. Funciones de comparacin de cadenas de caracteres ............................ 12.4. Funciones numricas ................................................................................ 12.4.1. Operadores aritmticos ................................................................... 12.4.2. Funciones matemticas .................................................................. 12.5. Funciones de fecha y hora ......................................................................... 12.6. Qu calendario utiliza MySQL ................................................................... 12.7. Funciones de bsqueda de texto completo (Full-Text) ..................................... 12.7.1. Bsquedas booleanas de texto completo (Full-Text) ............................. 12.7.2. Bsquedas de texto completo (Full-Text) con expansin de consulta ....... 12.7.3. Limitaciones de las bsquedas de texto completo (Full-Text) ................. 12.7.4. Afinar bsquedas de texto completo (Full-Text) con MySQL ................ 12.7.5. Cosas por hacer en bsquedas de texto completo (Full-Text) ................. 12.8. Funciones y operadores de cast ................................................................... 12.9. Otras funciones ....................................................................................... 12.9.1. Funciones bit ................................................................................ 12.9.2. Funciones de encriptacin ............................................................... 12.9.3. Funciones de informacin ............................................................... 12.9.4. Funciones varias ........................................................................... 12.10. Funciones y modificadores para clusulas GROUP BY .................................. 12.10.1. Funciones (de agregacin) de GROUP BY ........................................ 12.10.2. Modificadores de GROUP BY ........................................................ 12.10.3. GROUP BY con campos escondidos ................................................ 13. Sintaxis de sentencias SQL .................................................................................. 13.1. Sentencias de definicin de datos (Data Definition Statements) ........................ 13.1.1. Sintaxis de ALTER DATABASE ...................................................... 13.1.2. Sintaxis de ALTER TABLE ............................................................ 13.1.3. Sintaxis de CREATE DATABASE .................................................... 13.1.4. Sintaxis de CREATE INDEX .......................................................... 13.1.5. Sintaxis de CREATE TABLE .......................................................... 13.1.6. Sintaxis de DROP DATABASE ........................................................ 13.1.7. Sintaxis de DROP INDEX .............................................................. 13.1.8. Sintaxis de DROP TABLE .............................................................. 13.1.9. Sintaxis de RENAME TABLE .......................................................... 13.2. Sentencias de manipulacin de datos (Data Manipulation Statements) ............... 13.2.1. Sintaxis de DELETE ...................................................................... 13.2.2. Sintaxis de DO .............................................................................. 13.2.3. Sintaxis de HANDLER .................................................................... 13.2.4. Sintaxis de INSERT ...................................................................... 13.2.5. Sintaxis de LOAD DATA INFILE .................................................. 13.2.6. Sintaxis de REPLACE .................................................................... 13.2.7. Sintaxis de SELECT ...................................................................... 13.2.8. Sintaxis de subconsultas ................................................................. 13.2.9. Sintaxis de TRUNCATE .................................................................. 13.2.10. Sintaxis de UPDATE .................................................................... 13.3. Sentencias tiles de MySQL ...................................................................... 13.3.1. Sintaxis de DESCRIBE (Informacin acerca de las columnas) ............... 13.3.2. Sintaxis de USE ............................................................................ 13.4. Comandos transaccionales y de bloqueo de MySQL ....................................... 13.4.1. Sintaxis de START TRANSACTION, COMMIT y ROLLBACK ............... 13.4.2. Sentencias que no se pueden deshacer ............................................... 13.4.3. Sentencias que causan una ejecucin (commit) implcita ....................... 13.4.4. Sintaxis de SAVEPOINT y ROLLBACK TO SAVEPOINT ................... x

589 590 590 595 596 598 608 610 610 611 618 633 634 637 639 640 640 642 642 644 644 646 649 654 657 657 660 663 664 664 664 664 669 670 671 682 683 683 684 684 685 687 687 689 695 703 704 713 722 723 724 724 725 726 726 727 727 727

Manual de referencia de MySQL 5.0

13.4.5. Sintaxis de LOCK TABLES y UNLOCK TABLES ............................... 13.4.6. Sintaxis de SET TRANSACTION .................................................... 13.5. Sentencias de administracin de base de datos ............................................... 13.5.1. Sentencias para la gestin de cuentas ................................................ 13.5.2. Sentencias para el mantenimiento de tablas ........................................ 13.5.3. Sintaxis de SET ............................................................................ 13.5.4. Sintaxis de SHOW .......................................................................... 13.5.5. Otras sentencias para la administracin ............................................. 13.6. Sentencias de replicacin .......................................................................... 13.6.1. Sentencias SQL para el control de servidores maestros ......................... 13.6.2. Sentencias SQL para el control de servidores esclavos .......................... 13.7. Sintaxis SQL de sentencias preparadas ......................................................... 14. Motores de almacenamiento de MySQL y tipos de tablas ........................................... 14.1. El motor de almacenamiento MyISAM ......................................................... 14.1.1. Opciones de arranque de MyISAM .................................................... 14.1.2. Cunto espacio necesitan las claves .................................................. 14.1.3. Formatos de almacenamiento de tablas MyISAM ................................. 14.1.4. Problemas en tablas MyISAM .......................................................... 14.2. El motor de almacenamiento MERGE ........................................................... 14.2.1. Problemas con tablas MERGE ........................................................... 14.3. El motor de almacenamiento MEMORY (HEAP) .............................................. 14.4. El motor de almacenamiento BDB (BerkeleyDB) ........................................ 14.4.1. Sistemas operativos que soporta BDB ................................................ 14.4.2. Instalacin de BDB ........................................................................ 14.4.3. Opciones de arranque de BDB .......................................................... 14.4.4. Caractersticas de las tablas BDB ...................................................... 14.4.5. Temas pendientes de arreglo para BDB .............................................. 14.4.6. Limitaciones en las tablas BDB ........................................................ 14.4.7. Errores que pueden darse en el uso de tablas BDB ................................ 14.5. El motor de almacenamiento EXAMPLE ....................................................... 14.6. El motor de almacenamiento FEDERATED ................................................... 14.6.1. Instalacin del motor de almacenamiento FEDERATED ........................ 14.6.2. Descripcin del motor de almacenamiento FEDERATED ...................... 14.6.3. Cmo usar las tablas FEDERATED ................................................... 14.6.4. Limitaciones del motor de almacenamiento FEDERATED ..................... 14.7. El motor de almacenamiento ARCHIVE ....................................................... 14.8. El motor de almacenamiento CSV ............................................................... 15. El motor de almacenamiento InnoDB ................................................................... 15.1. Panormica de InnoDB ............................................................................ 15.2. Informacin de contacto de InnoDB ........................................................... 15.3. Configuracin de InnoDB ........................................................................ 15.4. Opciones de arranque de InnoDB .............................................................. 15.5. Crear el espacio de tablas InnoDB ............................................................. 15.5.1. Resolucin de problemas en la inicializacin de InnoDB ..................... 15.6. Crear tablas InnoDB ............................................................................... 15.6.1. Cmo utilizar transacciones en InnoDB con distintas APIs ................... 15.6.2. Pasar tablas MyISAM a InnoDB ...................................................... 15.6.3. Cmo funciona una columna AUTO_INCREMENT en InnoDB ............. 15.6.4. Restricciones (constraints) FOREIGN KEY ....................................... 15.6.5. InnoDB y replicacin MySQL ........................................................ 15.6.6. Usar un espacio de tablas para cada tabla ........................................... 15.7. Aadir y suprimir registros y ficheros de datos InnoDB ................................. 15.8. Hacer una copia de seguridad y recuperar una base de datos InnoDB ................ 15.8.1. Forzar una recuperacin ................................................................. 15.8.2. Marcadores .................................................................................. 15.9. Trasladar una base de datos InnoDB a otra mquina ...................................... 15.10. Bloqueo y modelo de transacciones de InnoDB .......................................... 15.10.1. Modos de bloqueo InnoDB .......................................................... xi

728 731 731 731 741 746 750 768 772 772 774 782 785 787 789 790 790 793 794 797 798 800 800 801 801 802 804 804 805 805 806 806 806 807 808 808 809 810 810 810 810 815 821 822 823 823 824 825 826 830 830 832 833 834 836 836 837 837

Manual de referencia de MySQL 5.0

15.10.2. InnoDB y AUTOCOMMIT ............................................................. 838 15.10.3. InnoDB y TRANSACTION ISOLATION LEVEL ........................... 838 15.10.4. Lecturas consistentes que no bloquean ............................................. 840 15.10.5. Bloquear lecturas SELECT ... FOR UPDATE y SELECT ... LOCK IN SHARE MODE .................................................................................. 840 15.10.6. Bloqueo de la prxima clave (Next-Key Locking): evitar el problema fantasma ........................................................................................................ 841 15.10.7. Un ejemplo de lectura consistente en InnoDB .................................. 842 15.10.8. Establecimiento de bloqueos con diferentes sentencias SQL en InnoDB 842 15.10.9. Cundo ejecuta o deshace implicitamente MySQL una transaccin? .... 844 15.10.10. Deteccin de interbloqueos (deadlocks) y cancelacin de transacciones (rollbacks) ............................................................................................. 844 15.10.11. Cmo tratar con interbloqueos ...................................................... 845 15.11. Consejos de afinamiento del rendimiento de InnoDB ................................... 846 15.11.1. SHOW INNODB STATUS y los monitores InnoDB .......................... 848 15.12. Implementacin de multiversin ............................................................... 851 15.13. Estructuras de tabla y de ndice ................................................................. 852 15.13.1. Estructura fsica de un ndice ......................................................... 853 15.13.2. Bfer de inserciones ..................................................................... 853 15.13.3. Indices hash adaptables ................................................................. 854 15.13.4. Estructura fsica de los registros ..................................................... 854 15.14. Gestin de espacio de ficheros y de E/S de disco (Disk I/O) ........................... 855 15.14.1. E/S de disco (Disk I/O) ................................................................. 855 15.14.2. Usar dispositivos en bruto (raw devices) para espacios de tablas ........... 855 15.14.3. Gestin del espacio de ficheros ...................................................... 856 15.14.4. Desfragmentar una tabla ............................................................... 856 15.15. Tratamiento de errores de InnoDB ............................................................. 857 15.15.1. Cdigos de error de InnoDB ......................................................... 857 15.15.2. Cdigos de error del sistema oeprativo ............................................ 858 15.16. Restricciones de las tablas InnoDB ........................................................... 863 15.17. Resolver problemas relacionados con InnoDB ............................................ 865 15.17.1. Resolver problemas de las operaciones del diccionario de datos de InnoDB ............................................................................................................. 866 16. MySQL Cluster ................................................................................................. 868 16.1. Panormica de MySQL Cluster .................................................................. 868 16.2. Conceptos bsicos de Basic MySQL Cluster ................................................. 870 16.3. Cmo configurar varios ordenadores ........................................................... 871 16.3.1. Hardware, software y redes ............................................................. 873 16.3.2. Instalacin ................................................................................... 873 16.3.3. Configuracin .............................................................................. 875 16.3.4. Arranque inicial ............................................................................ 877 16.3.5. Cargar datos de ejemplo y realizar consultas ....................................... 878 16.3.6. Apagado y encendido seguros .......................................................... 881 16.4. Configuracin de MySQL Cluster ............................................................... 881 16.4.1. Generar MySQL Cluster desde el cdigo fuente .................................. 882 16.4.2. Instalar el software ........................................................................ 882 16.4.3. Rpido montaje de prueba de MySQL Cluster .................................... 882 16.4.4. Fichero de configuracin ................................................................ 884 16.5. Gestin de procesos en MySQL Cluster ....................................................... 910 16.5.1. El uso del proceso del servidor MySQL para MySQL Cluster ................ 910 16.5.2. ndbd, el proceso del nodo de motor de almacenamiento ....................... 911 16.5.3. El proceso del servidor de administracin ndb_mgmd ......................... 912 16.5.4. El proceso de cliente de administracin ndb_mgm .............................. 913 16.5.5. Opciones de comando para procesos de MySQL Cluster ....................... 913 16.6. Administracin de MySQL Cluster ............................................................. 916 16.6.1. Comandos del cliente de administracin ............................................ 916 16.6.2. Informes de eventos generados por MySQL Cluster ............................. 917 16.6.3. Modo de usuario nico ................................................................... 923 xii

Manual de referencia de MySQL 5.0

16.6.4. Copias de seguridad On-line para MySQL Cluster ............................... 16.7. Usar interconexiones de alta velocidad con MySQL Cluster ............................. 16.7.1. Configurar MySQL Cluster para que utilice Sockets SCI ...................... 16.7.2. Entender el impacto de interconexiones de nodos ................................ 16.8. Limitaciones conocidas de MySQL Cluster .................................................. 16.9. Mapa de desarrollo de MySQL Cluster ........................................................ 16.9.1. Cambios de MySQL Cluster en MySQL 5.0 ....................................... 16.9.2. Mapa de desarrollo de MySQL 5.1 para MySQL Cluster ...................... 16.10. Preguntas frecuentes sobre MySQL Cluster ................................................. 16.11. Glosario de MySQL Cluster ..................................................................... 17. Introduccin a MaxDB ........................................................................................ 17.1. Historia de MaxDB .................................................................................. 17.2. Licenciamiento y soporte .......................................................................... 17.3. Enlaces relacionados con MaxDB ............................................................... 17.4. Conceptos bsicos de MaxDB .................................................................... 17.5. Diferencias de prestaciones entre MaxDB y MySQL ...................................... 17.6. Caractersticas de interoperabilidad entre MaxDB y MySQL ............................ 17.7. Palabras reservadas de MaxDB .................................................................. 18. Extensiones espaciales de MySQL ........................................................................ 18.1. Introduccin ........................................................................................... 18.2. El modelo geomtrico OpenGIS ................................................................. 18.2.1. La jerarqua de las clases geomtricas ............................................... 18.2.2. La clase Geometry ...................................................................... 18.2.3. La clase Point ............................................................................ 18.2.4. La clase Curve ............................................................................ 18.2.5. La clase LineString .................................................................. 18.2.6. La clase Surface ........................................................................ 18.2.7. La clase Polygon ........................................................................ 18.2.8. La clase GeometryCollection .................................................. 18.2.9. La clase MultiPoint .................................................................. 18.2.10. La clase MultiCurve ................................................................ 18.2.11. La clase MultiLineString ...................................................... 18.2.12. La clase MultiSurface ............................................................ 18.2.13. La clase MultiPolygon ............................................................ 18.3. Formatos de datos espaciales soportados ...................................................... 18.3.1. Formato Well-Known Text (WKT) ................................................... 18.3.2. Formato Well-Known Binary (WKB) ............................................... 18.4. Crear una base de datos MySQL con capacidades espaciales ............................ 18.4.1. Tipos de datos espaciales de MySQL ................................................ 18.4.2. Crear valores espaciales ................................................................. 18.4.3. Crear columnas espaciales .............................................................. 18.4.4. Poblar columnas espaciales ............................................................. 18.4.5. Extraer datos espaciales .................................................................. 18.5. Analizar informacin espacial .................................................................... 18.5.1. Funciones de conversin de formato geomtrico ................................. 18.5.2. Funciones Geometry ................................................................... 18.5.3. Funciones que crean nuevas geometras a partir de unas existentes ......... 18.5.4. Funciones para probar relaciones espaciales entre objetos geomtricos .... 18.5.5. Relaciones entre rectngulos MBR (Minimal Bounding Rectangles) ....... 18.5.6. Funciones que prueban relaciones espaciales entre geometras ............... 18.6. Optimizacin del anlisis espacial ............................................................... 18.6.1. Crear ndices espaciales .................................................................. 18.6.2. Usar un ndice espacial ................................................................... 18.7. Conformidad y compatibilidad de MySQL ................................................... 18.7.1. Caractersticas GIS que todava no han sido implementadas .................. 19. Procedimientos almacenados y funciones ................................................................ 19.1. Procedimientos almacenados y las tablas de permisos ..................................... 19.2. Sintaxis de procedimientos almacenados ...................................................... xiii

924 927 927 931 932 935 935 936 937 943 949 949 949 949 949 950 950 950 954 954 955 955 956 957 958 958 958 959 959 960 960 960 961 961 962 962 963 963 963 964 968 968 969 970 970 971 978 979 979 980 982 982 983 984 984 986 986 987

Manual de referencia de MySQL 5.0

19.2.1. CREATE PROCEDURE y CREATE FUNCTION ................................ 987 19.2.2. ALTER PROCEDURE y ALTER FUNCTION .................................... 990 19.2.3. DROP PROCEDURE y DROP FUNCTION ........................................ 990 19.2.4. SHOW CREATE PROCEDURE y SHOW CREATE FUNCTION ............ 990 19.2.5. SHOW PROCEDURE STATUS y SHOW FUNCTION STATUS ............ 991 19.2.6. La sentencia CALL ........................................................................ 991 19.2.7. Sentencia compuesta BEGIN ... END ........................................... 991 19.2.8. Sentencia DECLARE ...................................................................... 992 19.2.9. Variables en procedimientos almacenados ......................................... 992 19.2.10. Conditions and Handlers ............................................................... 993 19.2.11. Cursores .................................................................................... 994 19.2.12. Constructores de control de flujo .................................................... 995 19.3. Registro binario de procedimientos almacenados y disparadores ....................... 997 20. Disparadores (triggers) ....................................................................................... 1002 20.1. Sintaxis de CREATE TRIGGER ................................................................ 1002 20.2. Sintaxis de DROP TRIGGER .................................................................... 1004 20.3. Utilizacin de disparadores ....................................................................... 1004 21. Vistas (Views) .................................................................................................. 1008 21.1. Sintaxis de ALTER VIEW ........................................................................ 1008 21.2. Sintaxis de CREATE VIEW ...................................................................... 1008 21.3. Sintaxis de DROP VIEW .......................................................................... 1013 21.4. Sintaxis de SHOW CREATE VIEW ............................................................ 1014 22. La base de datos de informacin INFORMATION_SCHEMA ...................................... 1015 22.1. Las tablas INFORMATION_SCHEMA ......................................................... 1016 22.1.1. La tabla INFORMATION_SCHEMA SCHEMATA ............................... 1017 22.1.2. La tabla INFORMATION_SCHEMA TABLES ................................... 1017 22.1.3. La tabla INFORMATION_SCHEMA COLUMNS ................................. 1018 22.1.4. La tabla INFORMATION_SCHEMA STATISTICS ........................... 1019 22.1.5. La tabla INFORMATION_SCHEMA USER_PRIVILEGES ................. 1020 22.1.6. La tabla INFORMATION_SCHEMA SCHEMA_PRIVILEGES ............. 1020 22.1.7. La tabla INFORMATION_SCHEMA TABLE_PRIVILEGES ............... 1021 22.1.8. La tabla INFORMATION_SCHEMA COLUMN_PRIVILEGES ............. 1021 22.1.9. La tabla INFORMATION_SCHEMA CHARACTER_SETS ................... 1022 22.1.10. La tabla INFORMATION_SCHEMA COLLATIONS ......................... 1023 22.1.11. La tabla INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY ........................................... 1023 22.1.12. La tabla INFORMATION_SCHEMA TABLE_CONSTRAINTS ........... 1023 22.1.13. La tabla INFORMATION_SCHEMA KEY_COLUMN_USAGE ............. 1024 22.1.14. La tabla INFORMATION_SCHEMA ROUTINES ............................. 1025 22.1.15. La tabla INFORMATION_SCHEMA VIEWS ................................... 1026 22.1.16. La tabla INFORMATION_SCHEMA TRIGGERS ............................. 1026 22.1.17. Otras tablas INFORMATION_SCHEMA .......................................... 1028 22.2. Extensiones a las sentencias SHOW ............................................................. 1028 23. Matemticas de precisin .................................................................................... 1031 23.1. Tipos de valores numricos ...................................................................... 1031 23.2. Cambios en el tipo de datos DECIMAL ....................................................... 1032 23.3. Manejo de expresiones ............................................................................ 1034 23.4. Cmo se redondea .................................................................................. 1035 23.5. Ejemplos de matemticas de precisin ........................................................ 1036 24. APIs de MySQL ............................................................................................... 1041 24.1. msql2mysql ....................................................................................... 1041 24.2. mysql_config ..................................................................................... 1041 24.3. La API C de MySQL ............................................................................... 1042 24.3.1. Tipos de datos de la API C ............................................................. 1043 24.3.2. Panormica de funciones de la API C ............................................... 1046 24.3.3. Descripcin de funciones de la API C .............................................. 1050 24.3.4. Sentencias preparadas de la API C ................................................... 1093 24.3.5. Tipos de datos de sentencias preparadas de la API C ........................... 1093 xiv

Manual de referencia de MySQL 5.0

24.3.6. Panormica de las funciones de sentencias preparadas de la API C ........ 1096 24.3.7. Descripciones de funciones de sentencias preparadas de la API C .......... 1099 24.3.8. Problemas con sentencias preparadas de la API C ............................... 1121 24.3.9. Tratamiento por parte de la API C de la ejecucin de mltiples consultas 1121 24.3.10. Manejo de valores de fecha y hora por parte de la API C .................... 1122 24.3.11. Descripcin de funciones de la API C para el control de subprocesos ... 1123 24.3.12. Descripcin de las funciones de la API C del servidor incrustado (embedded) ............................................................................................................ 1124 24.3.13. Preguntas y problemas comunes en el uso de la API C ....................... 1126 24.3.14. Generar programas cliente ............................................................ 1127 24.3.15. Cmo hacer un cliente multihilo .................................................... 1128 24.3.16. libmysqld, la biblioteca del servidor MySQL incrustado (embedded) .... 1129 24.4. API PHP de MySQL ............................................................................... 1135 24.4.1. Problemas comunes con MySQL y PHP ........................................... 1135 24.5. La API Perl de MySQL ............................................................................ 1136 24.6. API C++ de MySQL ............................................................................... 1136 24.6.1. Borland C++ ............................................................................... 1136 24.7. La API Python de MySQL ....................................................................... 1136 24.8. La API Tcl de MySQL ............................................................................ 1137 24.9. El visor de MySQL Eiffel ......................................................................... 1137 25. Conectores MySQL ........................................................................................... 1138 25.1. El conector ODBC de MySQL .................................................................. 1138 25.1.1. Introduccin a MyODBC ............................................................... 1138 25.1.2. Informacin general sobre ODBC y MyODBC .................................. 1140 25.1.3. Cmo instalar MyODBC ............................................................... 1143 25.1.4. Instalar MyODBC en Windows desde una distribucin binaria ............. 1144 25.1.5. Instalacin de MyODBC en Unix partiendo de una distribucin binaria .. 1144 25.1.6. Instalar MyODBC de una distribucin de cdigo fuente en Windows ..... 1145 25.1.7. Instalar MyODBC de una distribucin de cdigo fuente en Unix ........... 1147 25.1.8. Instalar MyODBC del rbol de cdigo de desarrollo de BitKeeper ......... 1152 25.1.9. Configuracin de MyODBC ........................................................... 1153 25.1.10. Cuestiones relacionadas con la conexin en MyODBC ...................... 1172 25.1.11. MyODBC y Microsoft Access ...................................................... 1173 25.1.12. MyODBC, Microsoft VBA y ASP ................................................. 1178 25.1.13. MyODBC y herramientas ODBC de terceras partes .......................... 1180 25.1.14. Funcionalidad general de MyODBC ............................................... 1181 25.1.15. Pasos bsicos a seguir con aplicaciones MyODBC ............................ 1185 25.1.16. Referencia de la API de MyODBC ................................................ 1186 25.1.17. Tipos de datos MyODBC ............................................................. 1191 25.1.18. Cdigos de error de MyODBC ...................................................... 1192 25.1.19. MyODBC con VB: ADO, DAO y RDO .......................................... 1193 25.1.20. MyODBC con Microsoft .NET ..................................................... 1197 25.1.21. Credits ..................................................................................... 1200 25.2. MySQL Connector/NET .......................................................................... 1200 25.2.1. Introduction ................................................................................ 1200 25.2.2. Downloading and Installing MySQL Connector/NET .......................... 1201 25.2.3. Connector/NET Architecture .......................................................... 1201 25.2.4. Using MySQL Connector/NET ....................................................... 1215 25.2.5. MySQL Connector/NET Change History .......................................... 1232 25.3. MySQL Connector/J ............................................................................... 1248 25.3.1. Conceptos bsicos de JDBC ........................................................... 1248 25.3.2. Instalacin del Connector/J ............................................................ 1257 25.3.3. Referencia JDBC ......................................................................... 1261 25.3.4. Usando Connector/J con J2EE y otros Java Frameworks ...................... 1286 25.3.5. Diagnstico de problemas de Connector/J ......................................... 1291 25.3.6. Changelog .................................................................................. 1297 25.4. MySQL Connector/MXJ .......................................................................... 1328 25.4.1. Introduction ................................................................................ 1328 xv

Manual de referencia de MySQL 5.0

25.4.2. Support Platforms: ....................................................................... 1329 25.4.3. JUnit Test Requirements ................................................................ 1329 25.4.4. Running the JUnit Tests ................................................................ 1330 25.4.5. Running as part of the JDBC Driver ................................................. 1330 25.4.6. Running within a Java Object ......................................................... 1332 25.4.7. The MysqldResource API .............................................................. 1332 25.4.8. Running within a JMX Agent (custom) ............................................ 1333 25.4.9. Deployment in a standard JMX Agent environment (JBoss) ................. 1334 25.4.10. Installation ................................................................................ 1336 26. Manejo de errores en MySQL .............................................................................. 1337 27. Extender MySQL .............................................................................................. 1374 27.1. El interior de MySQL .............................................................................. 1374 27.1.1. Los subprocesos (threads) MySQL .................................................. 1374 27.1.2. El paquete de pruebas MySQL Test ................................................. 1374 27.2. Aadir nuevas funciones a MySQL ............................................................ 1377 27.2.1. Caractersticas de la interfaz para funciones definidas por el usuario ...... 1378 27.2.2. Sintaxis de CREATE FUNCTION/DROP FUNCTION ....................... 1378 27.2.3. Aadir una nueva funcin definida por el usuario ............................... 1379 27.2.4. Aadir una nueva funcin nativa ..................................................... 1388 27.3. Aadir nuevos procedimientos a MySQL .................................................... 1389 27.3.1. Procedimiento Analyse ................................................................. 1389 27.3.2. Escribir un procedimiento .............................................................. 1389 A. Problemas y errores comunes ............................................................................... 1391 A.1. Cmo determinar a qu es debido un problema .............................................. 1391 A.2. Errores comunes al usar programas MySQL ................................................. 1392 A.2.1. Access denied ........................................................................ 1392 A.2.2. Can't connect to [local] MySQL server ........................ 1392 A.2.3. Client does not support authentication protocol .... 1394 A.2.4. La contrasea falla cuando se introduce interactivamente ...................... 1396 A.2.5. La mquina 'host_name' est bloqueada ........................ 1396 A.2.6. Demasiadas conexiones ........................................................ 1396 A.2.7. Out of memory ........................................................................ 1397 A.2.8. MySQL se ha apagado ............................................................ 1397 A.2.9. Packet too large .................................................................. 1399 A.2.10. Errores de comunicacin y conexiones abortadas ............................... 1400 A.2.11. The table is full .............................................................. 1401 A.2.12. Can't create/write to file ............................................ 1401 A.2.13. Commands out of sync ........................................................ 1402 A.2.14. Ignoring user ...................................................................... 1402 A.2.15. Table 'nombre_de_tabla' doesn't exist ...................... 1403 A.2.16. Can't initialize character set .................................... 1403 A.2.17. No se encontr el fichero .............................................................. 1403 A.3. Problemas relacionados con la instalacin .................................................... 1404 A.3.1. Problemas al enlazar a la biblioteca de clientes MySQL ........................ 1404 A.3.2. Cmo correr MySQL como usuario normal ........................................ 1405 A.3.3. Problemas con permisos de ficheros ................................................. 1406 A.4. Cuestiones relacionadas con la administracin .............................................. 1407 A.4.1. Cmo reiniciar la contrasea de root ................................................. 1407 A.4.2. Qu hacer si MySQL sigue fallando (crashing) ................................... 1409 A.4.3. Cmo se comporta MySQL ante un disco lleno ................................... 1411 A.4.4. Dnde almacena MySQL los archivos temporales ............................... 1412 A.4.5. Cmo proteger o cambiar el fichero socket de MySQL /tmp/mysql.sock ............................................................................................................ 1412 A.4.6. Problemas con las franjas horarias .................................................... 1413 A.5. Problemas relacionados con consultas ......................................................... 1413 A.5.1. Sensibilidad a maysculas en bsquedas ............................................ 1413 A.5.2. Problemas en el uso de columnas DATE ............................................ 1414 A.5.3. Problemas con valores NULL ........................................................... 1415 xvi

Manual de referencia de MySQL 5.0

A.5.4. Problemas con alias de columnas ..................................................... 1416 A.5.5. Fallo en la cancelacin de una transaccin con tablas no transaccionales .. 1416 A.5.6. Borrar registros de tablas relacionadas .............................................. 1417 A.5.7. Resolver problemas con registros que no salen .................................... 1417 A.5.8. Problemas con comparaciones en Floating-Point ................................. 1418 A.6. Cuestiones relacionadas con el optimizados .................................................. 1420 A.7. Cuestiones relacionadas con definiciones de tabla .......................................... 1421 A.7.1. Problemas con ALTER TABLE ....................................................... 1421 A.7.2. Cmo cambiar el orden de las columnas en una tabla ........................... 1421 A.7.3. Problemas con TEMPORARY TABLE ............................................... 1422 A.8. Problemas conocidos en MySQL ................................................................ 1422 A.8.1. Problemas de la versin 3.23 resueltos en una versin posterior de MySQL 1422 A.8.2. Problemas de la versin 4.0 resueltos en una versin posterior de MySQL 1423 A.8.3. Problemas de la versin 4.1 resueltos en una versin posterior de MySQL 1423 A.8.4. Cuestiones abiertas en MySQL ........................................................ 1424 B. Credits ............................................................................................................. 1428 B.1. Desarrolladores de MySQL AB .................................................................. 1428 B.2. Han contribuido a crear MySQL ................................................................. 1433 B.3. Documentadores y traductores .................................................................... 1438 B.4. Bibliotecas incluidas en MySQL y que MySQL utiliza .................................... 1439 B.5. Paquetes que soportan MySQL ................................................................... 1440 B.6. Herramientas utilizadas en la creacin de MySQL .......................................... 1441 B.7. Han ayudado a MySQL ............................................................................. 1441 C. Historial de cambios de MySQL ........................................................................... 1443 C.1. Cambios en la entrega 5.0.x (Desarrollo) ...................................................... 1443 C.1.1. Cambios en la entrega 5.0.11 (todava no liberada) .............................. 1444 C.1.2. Cambios en la entrega 5.0.10 (todava no liberada) .............................. 1445 C.1.3. Cambios en la entrega 5.0.9 (15 julio 2005) ........................................ 1449 C.1.4. Cambios en la entrega 5.0.8 (not released) ......................................... 1452 C.1.5. Cambios en la entrega 5.0.7 (10 June 2005) ........................................ 1456 C.1.6. Cambios en la entrega 5.0.6 (26 May 2005) ........................................ 1460 C.1.7. Cambios en la entrega 5.0.5 (not released) ......................................... 1465 C.1.8. Cambios en la entrega 5.0.4 (16 Apr 2005) ......................................... 1467 C.1.9. Cambios en la entrega 5.0.3 (23 Mar 2005: Beta) ................................ 1470 C.1.10. Cambios en la entrega 5.0.2 (01 Dec 2004) ....................................... 1481 C.1.11. Cambios en la entrega 5.0.1 (27 Jul 2004) ........................................ 1484 C.1.12. Cambios en la entrega 5.0.0 (22 Dec 2003: Alpha) ............................. 1488 C.2. Cambios en MyODBC .............................................................................. 1489 C.2.1. Cambios en MyODBC 3.51.12 ........................................................ 1489 C.2.2. Cambios en MyODBC 3.51.11 ........................................................ 1489 D. Portar a otros sistemas ......................................................................................... 1490 D.1. Depurar un servidor MySQL ..................................................................... 1491 D.1.1. Compilacin de MySQL para depuracin .......................................... 1491 D.1.2. Crear ficheros de traza ................................................................... 1492 D.1.3. Depurar mysqld con gdb ............................................................. 1492 D.1.4. Usar stack trace ............................................................................ 1494 D.1.5. El uso de registros (logs) para encontrar la causa de errores de mysqld .. 1495 D.1.6. Crear un caso de prueba tras haber encontrado una tabla corrupta ........... 1495 D.2. Depuracin de un cliente MySQL ............................................................... 1496 D.3. El paquete DBUG .................................................................................... 1496 D.4. Comentarios sobre subprocesos RTS ........................................................... 1498 D.5. Diferencias entre paquetes de control de subprocesos ..................................... 1499 E. Variables de entorno ........................................................................................... 1501 F. Expresiones regulares en MySQL .......................................................................... 1502 G. Lmites en MySQL ............................................................................................. 1506 G.1. Lmites de los joins .................................................................................. 1506 H. Restricciones en caractersticas de MySQL ............................................................. 1507 H.1. Restricciones en procedimientos almacenados y disparadores ........................... 1507 xvii

Manual de referencia de MySQL 5.0

H.2. Restricciones en cursores del lado del servidor .............................................. 1508 H.3. Restricciones en subconsultas .................................................................... 1508 H.4. Restricciones en vistas .............................................................................. 1511 I. GNU General Public License ................................................................................. 1513 J. MySQL FLOSS License Exception ........................................................................ 1518 ndice .................................................................................................................. 1520

xviii

Lista de tablas25.1. Propiedades de conexin .................................................................................. 1262 25.2. Tabla de conversiones ..................................................................................... 1279 25.3. Tipos MySQL para tiposJava Types para ResultSet.getObject() ............................... 1280 25.4. Traduccin MySQL a nombres codificacin Java .................................................. 1281

xix

Lista de ejemplos25.1. Obtener una conexin de DriverManager ............................................................ 1249 25.2. Usando java.sql.Statement para ejecutar una consulta SELECT ............................... 1250 25.3. Ejemplo de procedimiento almacenado ............................................................... 1251 25.4. Usando Connection.prepareCall() ...................................................................... 1251 25.5. Registrando parmetros de salida ....................................................................... 1252 25.6. Especificando los parmetros de entrada de CallableStatement ................................ 1252 25.7. Recibiendo resultados y parmetros de salida ....................................................... 1253 25.8. Recibiendo valores de columna AUTO_INCREMENT usando Statement.getGeneratedKeys() ........................................................................................ 1254 25.9. Recibiendo valores de columna AUTO_INCREMENT usando 'SELECT LAST_INSERT_ID()' ............................................................................................. 1255 25.10. Recibiendo valores de columna AUTO_INCREMENT en Updatable ResultSets ....... 1256 25.11. Inicializacin de CLASSPATH en UNIX .......................................................... 1258 25.12. Usando un pool de conexiones con un servidor de aplicaciones J2EE ...................... 1287 25.13. Ejemplo de transaccin con lgica de reintento ................................................... 1293

xx

Prefacioste es el manual de referencia para el sistema de base de datos MySQL, en su versin 5.0, hasta la versin 5.0.9-beta. No debera utilizarse con ediciones ms antiguas del software MySQL, por las muchas diferencias funcionales y de otro tipo entre MySQL 5.0 y versiones anteriores. Si se est utilizando una versin anterior del software MySQL, es preferible hacer referencia al Manual de referencia de MySQL 4.1, que cubre las versiones 3.22, 3.23, 4.0 y 4.1 de MySQL. En este texto se sealan las diferencias entre las diversas versiones de MySQL 5.0, indicando la entrega (5.0.x). La traduccin al espaol de este manual se debe a Vespito [http://www.vespito.com], empresa de Barcelona especializada en la gestin de bases de datos MySQL y partner de MySQL AB desde 2001. Ha colaborado en la traduccin Claudio Alberto Nipotti, de San Lorenzo (Santa Fe), Argentina.

xxi

Captulo 1. Informacin generalEl software MySQL proporciona un servidor de base de datos SQL (Structured Query Language) muy rpido, multi-threaded, multi usuario y robusto. El servidor MySQL est diseado para entornos de produccin crticos, con alta carga de trabajo as como para integrarse en software para ser distribuido. MySQL es una marca registrada de MySQL AB. El software MySQL tiene una doble licencia. Los usuarios pueden elegir entre usar el software MySQL como un producto Open Source bajo los trminos de la licencia GNU General Public License (http://www.fsf.org/licenses/) o pueden adquirir una licencia comercial estndard de MySQL AB. Consulte http://www.mysql.com/company/legal/licensing/ para ms informacin acerca de nuestras polticas de licencia. La siguiente lista describe algunas secciones de particular inters en este manual: Para una discusin acerca de las capacidades del servidor de base de datos MySQL consulte Seccin 1.4.2, Las principales caractersticas de MySQL. Para instrucciones acerca de la instalacin, consulte Captulo 2, Instalar MySQL. Para consejos sobre portar el software MySQL a nuevas arquitecturas o sistemas operativos, consulte Apndice D, Portar a otros sistemas. Para informacin acerca de actualizar desde la versin 4.1, consulte Seccin 2.10.1, Aumentar la versin de 4.1 a 5.0. Para un tutorial introductorio al servidor de base de datos MySQL, consulte Captulo 3, Curso (tutorial) de MySQL. Para ejemplos de SQL e informacin de rendimiento, consulte el directorio de pruebas de rendimiento (sql-bench en la distribucin). Para la historia de nuevas caractersticas y fallos arreglados, consulte Apndice C, Historial de cambios de MySQL. Para una lista de fallos conocidos y caractersticas no implementadas, consulte Seccin A.8, Problemas conocidos en MySQL. Para la lista de todos los que han contribuido a este proyecto, consulte Apndice B, Credits.

Importante: Informes de errores (a menudo llamados "bugs"), as como preguntas y comentarios, deben enviarse a http://bugs.mysql.com. Consulte Seccin 1.6.1.3, Cmo informar de bugs y problemas. Si encuentra un fallo de seguridad importante en el servidor MySQL, por favor comunquelo inmediatamente mediante un correo electrnico a .

1.1. Sobre este manualEste es el manual de referencia para el servidor de base de datos MySQL, versin 5.0, hasta la versin 5.0.9-beta. No est destinado para usarse con versiones ms antiguas del software MySQL debido a las numerosas diferencias funcionales y de otro tipo entre MySQL 5.0 y versiones previas. Si usa una versin anterior del software MySQL, por favor consulte Manual de referencia de MySQL 4.1, que cubre 1

Informacin general

las series 3.22, 3.23, 4.0, y 4.1 del software MySQL. Las diferencias entre versiones menores de MySQL 5.0 estn destacadas en este texto con referencias a los nmeros de versiones (5.0.x). Este manual es una referencia, por lo que no proporciona instrucciones sobre conceptos generales de SQL o de bases de datos relacionales. Tampoco ensea sobre cmo usar su sistema operativo o su intrprete de lnea de comandos. El software de base de datos MySQL est bajo desarrollo constante, y el Manual de Referencia se actualiza constantemente. La versin ms reciente de este manual est disponible en lnea permitiendo bsquedas en http://dev.mysql.com/doc/. Hay otros formatos disponibles, incluyendo HTML, PDF, y Windows CHM. El formato bsico para toda la documentacin MySQL consiste en un conjunto de ficheros DocBook XML [http://docbook.org/]. HTML y otros formatos se producen automticamente a partir de los mismos, usando entre otras herramientas DocBook XSL stylesheets [http://docbook.sourceforge.net/release/xsl/current/doc/reference.html]. Si tiene sugerencias acerca de correcciones o contenido de este manual, por favor envelos al equipo de documentacin en . Este manual lo escribi inicialmente David Axmark y Michael "Monty" Widenius. Lo mantiene el equipo de documentacin de MySQL formado por Paul DuBois, Stefan Hinz, Mike Hillyer, y Jon Stephens. Para consultar todos los colaboradores, consulte Apndice B, Credits. El copyright de este manual es propiedad de la compaa sueca MySQL AB. MySQL y el logo MySQL logo son marcas registradas de MySQL AB. Otras marcas y marcas registradas a las que se hace referencia en este manual son propiedad de sus respectivos propietarios, y se usan slo con intenciones de identificacin.

1.2. Convenciones utilizadas en este manualEste manual usa ciertas convenciones tipogrficas: El texto de este estilo se usa para sentencias SQL; nombres de bases de datos, tablas y columnnas; cdigo C y Perl; y variables de entorno. Ejemplo: "Para recargar las tablas de permisos use el comando FLUSH PRIVILEGES". El texto de es