Manual Mysql 5.0 Es

1475
Manual de referencia de MySQL 5.0

Transcript of Manual Mysql 5.0 Es

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: 15-09-2006 (revisin: 327)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 ..............................................................................................................xx 1. Informacin general ........................................................................................... 1 1.1. Sobre este manual ................................................................................... 1 1.2. Convenciones utilizadas en este manual ....................................................... 2 1.3. Panormica de MySQL AB ....................................................................... 3 1.4. Panormica del sistema de gestin de base de datos MySQL ............................ 4 1.4.1. Historia de MySQL ....................................................................... 5 1.4.2. Las principales caractersticas de MySQL .......................................... 6 1.4.3. Estabilidad de MySQL ................................................................... 8 1.4.4. Dimensiones mximas de las tablas MySQL ...................................... 9 1.4.5. Conformidad con el efecto 2000 .....................................................10 1.5. Mapa de desarrollo de MySQL .................................................................11 1.5.1. El servidor MySQL incrustado (embedded) ......................................12 1.5.2. Qu hay de nuevo en MySQL 5.0 ...................................................12 1.6. Fuentes de informacin acerca de MySQL ..................................................13 1.6.1. Listas de correo de MySQL ...........................................................13 1.6.2. Soporte por IRC (Internet Relay Chat) de la comunidad MySQL ...........20 1.6.3. Soporte por parte de la comunidad en los foros de MySQL ..................20 1.7. Cumplimiento de los estndares por parte de MySQL ....................................20 1.7.1. Estndares utilizados por MySQL ...................................................21 1.7.2. Seleccin de modos SQL ...............................................................21 1.7.3. Ejecutar MySQL en modo ANSI ....................................................21 1.7.4. Extensiones MySQL al estndar SQL ..............................................22 1.7.5. Diferencias en MySQL del estndar SQL .........................................25 1.7.6. Cmo trata MySQL las restricciones (Constraints) .............................30 2. Instalar MySQL ................................................................................................34 2.1. Cuestiones generales sobre la instalacin ....................................................34 2.1.1. Sistemas operativos que MySQL soporta ..........................................35 2.1.2. Escoger la distribucin MySQL a instalar .........................................37 2.1.3. Cmo obtener MySQL ..................................................................48 2.1.4. Comprobar la integridad de paquetes con sumas de verificacin MD5 o GnuPG ...............................................................................................48 2.1.5. Conformacin de la instalacin .......................................................51 2.2. Instalacin MySQL estndar con una distribucin binaria ..............................52 2.3. Instalar MySQL en Windows ...................................................................53 2.3.1. Requisitos de Windows .................................................................53 2.3.2. Eleccin de un paquete de instalacin ..............................................54 2.3.3. Instalacin de MySQL con un instalador automtico ...........................54 2.3.4. Usar el asistente de instalacin de MySQL .......................................55 2.3.5. Utilizacin del asistente de configuracin .........................................58 2.3.6. Instalar MySQL partiendo de un archivo Zip Noinstall ........................62 2.3.7. Descomprimir el fichero de instalacin ............................................62 2.3.8. Creacin de un fichero de opciones .................................................63 2.3.9. Seleccionar un tipo de servidor MySQL ...........................................64 2.3.10. Arrancar el servidor la primera vez ................................................65 2.3.11. Arrancar MySQL desde la raya de comandos de Windows .................66 2.3.12. Arrancar MySQL como un servicio de Windows ..............................67 2.3.13. Comprobar la instalacin de MySQL Installation .............................69 2.3.14. Resolucin de problemas en la instalacin de MySQL bajo Windows ...69 2.3.15. Aumentar la versin de MySQL en Windows ..................................71 2.3.16. Comparacin entre MySQL en Windows y MySQL en Unix ..............72 2.4. Instalar MySQL en Linux ........................................................................74 2.5. Instalar MySQL en Mac OS X ..................................................................77 2.6. Instalar MySQL sobre NetWare ................................................................79 2.7. Instalacin de MySQL en otros sistemas similares a Unix ..............................81 2.8. Instalacin de MySQL usando una distribucin de cdigo fuente .....................84 2.8.1. Panormica de la instalacin de cdigo fuente ...................................84 iv

Manual de referencia de MySQL 5.0

2.8.2. Opciones tpicas de configure ...................................................87 2.8.3. Instalar desde el rbol de cdigo fuente de desarrollo ..........................90 2.8.4. Problemas en la compilacin de MySQL ..........................................93 2.8.5. Notas sobre MIT-pthreads .............................................................96 2.8.6. Instalar MySQL desde el cdigo fuente en Windows ..........................97 2.8.7. Compilar los clientes de MySQL en Windows ................................. 101 2.9. Puesta en marcha y comprobacin despus de la instalacin ......................... 101 2.9.1. Pasos a seguir despus de la instalacin en Windows ........................ 101 2.9.2. Pasos a seguir despus de la instalacin en Unix .............................. 102 2.9.3. Hacer seguras las cuentas iniciales de MySQL ................................ 112 2.10. Aumentar la versin de MySQL ............................................................ 115 2.10.1. Aumentar la versin de 4.1 a 5.0 ................................................. 116 2.10.2. Aumentar la versin de las tablas de privilegios ............................. 119 2.10.3. Copiar bases de datos MySQL a otra mquina ............................... 120 2.11. Bajar la versin de MySQL .................................................................. 121 2.11.1. Volver a la versin 4.1 .............................................................. 122 2.12. Notas especficas sobre sistemas operativos ............................................. 122 2.12.1. Notas sobre Linux .................................................................... 122 2.12.2. Notas sobre Mac OS X .............................................................. 129 2.12.3. Notas sobre Solaris ................................................................... 130 2.12.4. Notas sobre BSD ...................................................................... 134 2.12.5. Notas sobre otros Unix .............................................................. 137 2.12.6. Notas sobre OS/2 ..................................................................... 151 2.13. Notas sobre la instalacin de Perl ........................................................... 151 2.13.1. Instalacin de Perl en Unix ........................................................ 152 2.13.2. Instalar ActiveState Perl en Windows .......................................... 153 2.13.3. Problemas en la utilizacin de la interfaz Perl DBI/DBD .................. 153 3. Curso (tutorial) de MySQL ............................................................................... 156 3.1. Conectarse al y desconectarse del servidor ................................................ 156 3.2. Entrar consultas ................................................................................... 157 3.3. Crear y utilizar una base de datos ............................................................ 159 3.3.1. Crear y seleccionar una base de datos ............................................ 161 3.3.2. Crear una tabla .......................................................................... 161 3.3.3. Cargar datos en una tabla ............................................................ 162 3.3.4. Extraer informacin de una tabla .................................................. 164 3.4. Obtener informacin sobre bases de datos y tablas ...................................... 175 3.5. Usar mysql en modo batch ................................................................... 176 3.6. Ejemplos de consultas comunes .............................................................. 177 3.6.1. El valor mximo de una columna .................................................. 178 3.6.2. El registro que tiene el valor mximo de determinada columna ........... 178 3.6.3. Mximo de columna por grupo ..................................................... 178 3.6.4. Los registros de un grupo que tienen el mximo valor en alguna columna ........................................................................................................ 179 3.6.5. Utilizacin de variables de usuario ................................................ 179 3.6.6. Usar claves forneas (foreign keys) ............................................... 179 3.6.7. Buscar usando dos claves ............................................................ 181 3.6.8. Calcular visitas diarias ................................................................ 181 3.6.9. Utilizacin de AUTO_INCREMENT ............................................... 181 3.7. Consultas del proyecto Mellizos (Twin) .................................................... 183 3.7.1. Encontrar todos los mellizos no repartidos ...................................... 183 3.7.2. Mostrar una tabla de estado de mellizos ......................................... 185 3.8. Usar MySQL con Apache ...................................................................... 185 4. Usar los programas MySQL .............................................................................. 186 4.1. Panormica de programas MySQL .......................................................... 186 4.2. Invocar programas MySQL .................................................................... 187 4.3. Especificar opciones de programa ............................................................ 188 4.3.1. Usar opciones en la raya de comando ............................................. 188 4.3.2. Usar ficheros de opciones ............................................................ 190 4.3.3. Usar variables de entorno para especificar opciones .......................... 194 4.3.4. Utilizacin de opciones para establecer variables de programa ............ 195 5. Administracin de bases de datos ....................................................................... 196 5.1. El servidor MySQL y scripts de arranque del servidor ................................. 196 5.1.1. Panormica de los programas scripts y las utilidades del lado del servidor v

Manual de referencia de MySQL 5.0

(server-side) ...................................................................................... 196 5.1.2. El servidor extendido de MySQL mysqld-max ............................. 197 5.1.3. El script de arranque del servidor mysqld_safe ........................... 200 5.1.4. El script mysql.server para el arranque del servidor ................... 203 5.1.5. El programa mysqld_multi para gestionar mltiples servidores MySQL ........................................................................................................ 203 5.2. El gestor de instancias de MySQL ........................................................... 207 5.2.1. Arrancar el servidor MySQL con el gestor de instancias MySQL ........ 207 5.2.2. Conexin al gestor de instancias de MySQL y creacin de cuentas de usuario ................................................................................................... 208 5.2.3. Opciones de los comandos del gestor de instancias MySQL ............... 208 5.2.4. Ficheros de configuracin del gestor de instancias de MySQL ............ 209 5.2.5. Los comandos que reconoce el gestor de instancias de MySQL ........... 210 5.3. Configuracin del servidor MySQL ......................................................... 212 5.3.1. Opciones del comando mysqld ................................................... 212 5.3.2. El modo SQL del servidor ........................................................... 222 5.3.3. Variables de sistema del servidor .................................................. 227 5.3.4. Variables de estado del servidor .................................................... 255 5.4. El proceso de cierre del servidor MySQL .................................................. 264 5.5. Cuestiones de seguridad general .............................................................. 265 5.5.1. Gua de seguridad general ........................................................... 265 5.5.2. Hacer que MySQL sea seguro contra ataques .................................. 268 5.5.3. Opciones de arranque para mysqld relacionadas con la seguridad ...... 269 5.5.4. Cuestiones relacionadas con la seguridad y LOAD DATA LOCAL ...... 271 5.6. El sistema de privilegios de acceso de MySQL ........................................... 272 5.6.1. Qu hace el sistema de privilegios ................................................. 272 5.6.2. Cmo funciona el sistema de privilegios ......................................... 272 5.6.3. Privilegios de los que provee MySQL ............................................ 276 5.6.4. Conectarse al servidor MySQL ..................................................... 280 5.6.5. Control de acceso, nivel 1: Comprobacin de la conexin .................. 281 5.6.6. Control de acceso, nivel 2: comprobacin de solicitudes .................... 284 5.6.7. Cundo tienen efecto los camios de privilegios ................................ 287 5.6.8. Causas de errores Access denied ............................................ 287 5.6.9. Hashing de contraseas en MySQL 4.1 .......................................... 292 5.7. Gestin de la cuenta de usuario MySQL ................................................... 297 5.7.1. Nombres de usuario y contraseas de MySQL ................................. 297 5.7.2. Aadir nuevas cuentas de usuario a MySQL ................................... 298 5.7.3. Eliminar cuentas de usuario de MySQL ......................................... 301 5.7.4. Limitar recursos de cuentas .......................................................... 301 5.7.5. Asignar contraseas a cuentas ...................................................... 302 5.7.6. Guardar una contrasea de forma segura ........................................ 304 5.7.7. Usar conexiones seguras ............................................................. 305 5.8. Prevencin de desastres y recuperaciones .................................................. 311 5.8.1. Copias de seguridad de bases de datos ........................................... 311 5.8.2. Ejemplo de estrategia de copias de seguridad y recuperacin .............. 313 5.8.3. Mantenimiento de tablas y recuperacin de un fallo catastrfico (crash) 316 5.8.4. Organizar un programa de mantenimiento de tablas .......................... 328 5.8.5. Obtener informacin acerca de una tabla ........................................ 329 5.9. Uso internacional y localizacin de MySQL .............................................. 334 5.9.1. El conjunto de caracteres utilizado para datos y ordenacin ................ 334 5.9.2. Escoger el idioma de los mensajes de error ..................................... 336 5.9.3. Aadir un conjunto de caracteres nuevo ......................................... 336 5.9.4. Los vectores de definicin de caracteres ......................................... 338 5.9.5. Soporte para colacin de cadenas de caracteres ................................ 338 5.9.6. Soporte de caracteres multi-byte ................................................... 338 5.9.7. Problemas con conjuntos de caracteres ........................................... 339 5.9.8. Soporte de zonas horarias en el servidor MySQL ............................. 339 5.10. Los ficheros de registro (log) de MySQL ................................................. 340 5.10.1. El registro de errroes (Error Log) ................................................ 341 5.10.2. El registro general de consultas ................................................... 341 5.10.3. El registro binario (Binary Log) .................................................. 342 5.10.4. El registro de consultas lentas (Slow Query Log) ............................ 345 5.10.5. Mantenimiento de ficheros de registro (log) .................................. 346 vi

Manual de referencia de MySQL 5.0

5.11. Ejecutar ms de un servidor MySQL en la misma mquina ......................... 347 5.11.1. Ejecutar varios servidores en Windows ........................................ 348 5.11.2. Ejecutar varios servidores en Unix ............................................... 351 5.11.3. Utilizacin de programas cliente en un entorno de mltiples servidores 352 5.12. La cach de consultas de MySQL .......................................................... 353 5.12.1. Cmo opera la cach de consultas ............................................... 354 5.12.2. Opciones de SELECT para la cach de consultas ............................ 355 5.12.3. Configuracin de la cach de consultas ......................................... 356 5.12.4. Estado y mantenimiento de la cach de consultas ........................... 357 6. Replicacin en MySQL .................................................................................... 359 6.1. Introduccin a la replicacin ................................................................... 359 6.2. Panormica de la implementacin de la replicacin ..................................... 359 6.3. Detalles de la implementacin de la replicacin .......................................... 360 6.3.1. Estados de los subprocesos del maestro de replicacin ...................... 361 6.3.2. Estados de proceso E/S (I/O) del esclavo de replicacin .................... 362 6.3.3. Estados del flujo SQL de un esclavo de replicacin .......................... 363 6.3.4. Ficheros de replicacin, retardados y de estado ................................ 363 6.4. Cmo montar la replicacin .................................................................... 365 6.5. Compatibilidad entre versiones de MySQL con respecto a la replicacin ......... 369 6.6. Aumentar la versin de la replicacin ....................................................... 369 6.6.1. Aumentar la versin de la replicacin a 5.0 ..................................... 369 6.7. Caractersticas de la replicacin y problemas conocidos ............................... 370 6.8. Opciones de arranque de replicacin ........................................................ 373 6.9. Preguntas y respuestas sobre replicacin ................................................... 381 6.10. Resolucin de problemas de replicacin .................................................. 386 6.11. Reportar bugs de replicacin ................................................................. 387 7. Optimizacin de MySQL ................................................................................. 389 7.1. Panormica sobre optimizacin ............................................................... 389 7.1.1. Limitaciones y soluciones de compromiso en el diseo de MySQL ...... 389 7.1.2. Disear aplicaciones pensando en la portabilidad ............................. 390 7.1.3. Para qu hemos usado MySQL ..................................................... 391 7.1.4. El paquete de pruebas de rendimiento (benchmarks) de MySQL ......... 391 7.1.5. Usar pruebas de rendimiento (benchmarks) propios .......................... 392 7.2. Optimizar sentencias SELECT y otras consultas ......................................... 393 7.2.1. Sintaxis de EXPLAIN (Obtener informacin acerca de un SELECT) .... 393 7.2.2. Estimar el renidimiento de una consulta ......................................... 401 7.2.3. Velocidad de las consultas SELECT .............................................. 401 7.2.4. Optimizacin de las clusulas WHERE por parte de MySQL ............... 402 7.2.5. Optimizacin de rango ................................................................ 403 7.2.6. Index Merge Optimization ........................................................... 407 7.2.7. Cmo optimiza MySQL IS NULL ............................................... 409 7.2.8. Cmo MySQL optimiza DISTINCT ............................................. 410 7.2.9. Cmo optimiza MySQL los LEFT JOIN y RIGHT JOIN ............... 410 7.2.10. Cmo optimiza MySQL ORDER BY ........................................... 411 7.2.11. Cmo optimiza MySQL los GROUP BY ....................................... 413 7.2.12. Cmo optimiza MySQL las clusulas LIMIT ................................ 414 7.2.13. Cmo evitar lecturas completas de tablas ...................................... 415 7.2.14. Velocidad de la sentencia INSERT .............................................. 416 7.2.15. Velocidad de las sentencias UPDATE ........................................... 417 7.2.16. Velocidad de sentencias DELETE ................................................ 418 7.2.17. Otros consejos sobre optimizacin ............................................... 418 7.3. Temas relacionados con el bloqueo .......................................................... 420 7.3.1. Mtodos de bloqueo ................................................................... 420 7.3.2. Cuestiones relacionadas con el bloqueo (locking) de tablas ................ 422 7.4. Optimizar la estructura de una base de datos .............................................. 424 7.4.1. Elecciones de diseo .................................................................. 424 7.4.2. Haga sus datos lo ms pequeos posibles ........................................ 424 7.4.3. ndices de columna .................................................................... 426 7.4.4. ndices de mltiples columnas ...................................................... 426 7.4.5. Cmo utiliza MySQL los ndices .................................................. 427 7.4.6. La cach de claves de MyISAM .................................................... 429 7.4.7. Cmo cuenta MySQL las tablas abiertas ......................................... 433 7.4.8. Cmo abre y cierra tablas MySQL ................................................ 434 vii

Manual de referencia de MySQL 5.0

7.4.9. Desventajas de crear muchas tablas en la misma base de datos ............ 435 7.5. Optimizacin del servidor MySQL .......................................................... 435 7.5.1. Factores de sistema y afinamientos de parmetros de arranque ............ 435 7.5.2. Afinar parmetros del servidor ..................................................... 436 7.5.3. Vigilar el rendimiento del optimizador de consultas .......................... 438 7.5.4. Efectos de la compilacin y del enlace en la velocidad de MySQL ...... 439 7.5.5. Cmo utiliza MySQL la memoria ................................................. 440 7.5.6. Cmo usa MySQL las DNS ......................................................... 442 7.6. Cuestiones relacionadas con el disco ........................................................ 442 7.6.1. Utilizar enlaces simblicos .......................................................... 443 8. Programas cliente y utilidades MySQL ............................................................... 446 8.1. Panormica de scripts y utilidades del lado del cliente ................................. 446 8.2. myisampack, el generador de tablas comprimidas de slo lectura de MySQL 448 8.3. La herramienta intrprete de comandos mysql .......................................... 453 8.3.1. Comandos mysql ..................................................................... 459 8.3.2. Ejecutar sentencias SQL desde un fichero de texto ........................... 462 8.3.3. Sugerencias acerca de mysql ...................................................... 463 8.4. Administrar un servidor MySQL con mysqladmin ................................... 464 8.5. La utilidad mysqlbinlog para registros binarios ..................................... 469 8.6. El programa mysqlcheck para mantener y reparar tablas .......................... 472 8.7. El programa de copia de seguridad de base de datos mysqldump ................. 475 8.8. El programa de copias de seguridad de base de datos mysqlhotcopy .......... 482 8.9. El programa para importar datos mysqlimport ....................................... 483 8.10. Mostrar bases de datos, tablas y columnas con mysqlshow ....................... 486 8.11. perror, explicacin de cdigos de error ................................................ 487 8.12. La utilidad replace de cambio de cadenas de caracteres .......................... 488 9. Estructura de lenguaje ...................................................................................... 490 9.1. Valores literales ................................................................................... 490 9.1.1. Cadenas de caracteres ................................................................. 490 9.1.2. Nmeros .................................................................................. 492 9.1.3. Valores hexadecimales ................................................................ 492 9.1.4. Valores booleanos ...................................................................... 493 9.1.5. Valores de bits .......................................................................... 493 9.1.6. Valores NULL ........................................................................... 493 9.2. Nombres de bases de datos, tablas, ndices, columnas y alias ........................ 493 9.2.1. Cualificadores de los identificadores .............................................. 494 9.2.2. Sensibilidad a maysuclas y minsculas de identificadores ................ 495 9.3. Variables de usuario ............................................................................. 497 9.4. Variables de sistema ............................................................................. 498 9.4.1. Variables estructuradas de sistema ................................................ 499 9.5. Sintaxis de comentarios ......................................................................... 501 9.6. Tratamiento de palabras reservadas en MySQL .......................................... 502 10. Soporte de conjuntos de caracteres ................................................................... 505 10.1. Conjuntos de caracteres y colaciones en general ....................................... 505 10.2. Conjuntos de caracteres y colaciones en MySQL ...................................... 506 10.3. Determinar el conjunto de caracteres y la colacin por defecto .................... 507 10.3.1. Conjunto de caracteres y colacin del servidor ............................... 507 10.3.2. Conjuntos de caracteres y colaciones de la base de datos .................. 508 10.3.3. Conjunto de caracteres y colacin de tabla .................................... 509 10.3.4. Conjunto de caracteres y colacin de columnas .............................. 509 10.3.5. Ejemplos de asignacin de conjunto de caracteres y colacin ............ 510 10.3.6. Conjunto de caracteres y colacin de la conexin ........................... 510 10.3.7. Conjunto de caracteres y colacin de columnas carcter ................ 512 10.3.8. Usar COLLATE en sentencias SQL .............................................. 513 10.3.9. Precedencia de la clusula COLLATE ........................................... 514 10.3.10. Operador BINARY .................................................................. 514 10.3.11. Casos especiales en los que determinar la colacin es complicado .... 514 10.3.12. A cada colacin un conjunto de caracteres correcto ....................... 515 10.3.13. Un ejemplo del efecto de una colacin ........................................ 516 10.4. Efectos del soporte de conjuntos de caracteres .......................................... 516 10.4.1. Cadenas de caracteres de resultado .............................................. 516 10.4.2. CONVERT() ........................................................................... 517 10.4.3. CAST() ................................................................................. 517 viii

Manual de referencia de MySQL 5.0

10.4.4. Sentencias SHOW ...................................................................... 518 10.5. Soporte Unicode ................................................................................. 519 10.6. UTF8 para metadatos .......................................................................... 520 10.7. Compatibilidad con otros SGBDs (Sistemas gestores de bases de datos) ........ 521 10.8. Formato del nuevo fichero de conjunto de caracateres ................................ 521 10.9. Conjunto de caracteres nacional ............................................................ 521 10.10. Conjuntos de caracteres y colaciones que soporta MySQL ........................ 521 10.10.1. Conjuntos de caracteres Unicode ............................................... 522 10.10.2. Conjuntos de caracteres de Europa occidental .............................. 524 10.10.3. Conjuntos de caracteres de Europa central ................................... 525 10.10.4. Conjuntos de caracteres del sur de Europa y de Oriente Medio ........ 526 10.10.5. Conjuntos de caracteres blticos ................................................ 526 10.10.6. Conjuntos de caracteres cirlicos ................................................ 527 10.10.7. Conjuntos de caracteres asiticos ............................................... 527 11. Tipos de columna .......................................................................................... 529 11.1. Panormica de tipos de columna ............................................................ 529 11.1.1. Panormica de tipos numricos ................................................... 529 11.1.2. Panormica de tipos de fechas y hora ........................................... 532 11.1.3. Panormica de tipos de cadenas de caracteres ................................ 533 11.2. Tipos numricos ................................................................................. 536 11.3. Tipos de fecha y hora .......................................................................... 539 11.3.1. Los tipos de datos DATETIME, DATE y TIMESTAMP ..................... 540 11.3.2. El tipo TIME ........................................................................... 544 11.3.3. El tipo de datos YEAR ............................................................... 545 11.3.4. Efecto 2000 (Y2K) y tipos de datos ............................................. 546 11.4. Tipos de cadenas de caracteres .............................................................. 546 11.4.1. Los tipos CHAR y VARCHAR ...................................................... 546 11.4.2. Los tipos BINARY y VARBINARY .............................................. 547 11.4.3. Los tipos BLOB y TEXT ............................................................ 548 11.4.4. El tipo de columna ENUM ........................................................... 549 11.4.5. El tipo SET ............................................................................. 550 11.5. Requisitos de almacenamiento segn el tipo de columna ............................ 552 11.6. Escoger el tipo de columna correcto ....................................................... 554 11.7. Usar tipos de columnas de otros motores de bases de datos ......................... 554 12. Funciones y operadores .................................................................................. 556 12.1. Operadores ........................................................................................ 556 12.1.1. Precedencias de los operadores ................................................... 556 12.1.2. Parntesis ............................................................................... 557 12.1.3. Funciones y operadores de comparacin ....................................... 557 12.1.4. Operadores lgicos ................................................................... 561 12.2. Funciones de control de flujo ................................................................ 563 12.3. Funciones para cadenas de caracetres ..................................................... 564 12.3.1. Funciones de comparacin de cadenas de caracteres ....................... 574 12.4. Funciones numricas ........................................................................... 576 12.4.1. Operadores aritmticos .............................................................. 576 12.4.2. Funciones matemticas ............................................................. 577 12.5. Funciones de fecha y hora .................................................................... 583 12.6. Qu calendario utiliza MySQL .............................................................. 597 12.7. Funciones de bsqueda de texto completo (Full-Text) ................................ 598 12.7.1. Bsquedas booleanas de texto completo (Full-Text) ........................ 601 12.7.2. Bsquedas de texto completo (Full-Text) con expansin de consulta .. 603 12.7.3. Limitaciones de las bsquedas de texto completo (Full-Text) ............ 603 12.7.4. Afinar bsquedas de texto completo (Full-Text) con MySQL ........... 604 12.7.5. Cosas por hacer en bsquedas de texto completo (Full-Text) ............ 605 12.8. Funciones y operadores de cast .............................................................. 606 12.9. Otras funciones .................................................................................. 608 12.9.1. Funciones bit ........................................................................... 608 12.9.2. Funciones de encriptacin .......................................................... 609 12.9.3. Funciones de informacin .......................................................... 612 12.9.4. Funciones varias ...................................................................... 617 12.10. Funciones y modificadores para clusulas GROUP BY ............................. 620 12.10.1. Funciones (de agregacin) de GROUP BY ................................... 620 12.10.2. Modificadores de GROUP BY ................................................... 623 ix

Manual de referencia de MySQL 5.0

12.10.3. GROUP BY con campos escondidos ........................................... 625 13. Sintaxis de sentencias SQL ............................................................................. 627 13.1. Sentencias de definicin de datos (Data Definition Statements) ................... 627 13.1.1. Sintaxis de ALTER DATABASE ................................................. 627 13.1.2. Sintaxis de ALTER TABLE ....................................................... 627 13.1.3. Sintaxis de CREATE DATABASE ............................................... 632 13.1.4. Sintaxis de CREATE INDEX ..................................................... 632 13.1.5. Sintaxis de CREATE TABLE ..................................................... 634 13.1.6. Sintaxis de DROP DATABASE ................................................... 644 13.1.7. Sintaxis de DROP INDEX ......................................................... 645 13.1.8. Sintaxis de DROP TABLE ......................................................... 645 13.1.9. Sintaxis de RENAME TABLE ..................................................... 646 13.2. Sentencias de manipulacin de datos (Data Manipulation Statements) .......... 646 13.2.1. Sintaxis de DELETE ................................................................. 646 13.2.2. Sintaxis de DO ......................................................................... 649 13.2.3. Sintaxis de HANDLER ............................................................... 649 13.2.4. Sintaxis de INSERT ................................................................. 650 13.2.5. Sintaxis de LOAD DATA INFILE ............................................. 656 13.2.6. Sintaxis de REPLACE ............................................................... 664 13.2.7. Sintaxis de SELECT ................................................................. 665 13.2.8. Sintaxis de subconsultas ............................................................ 673 13.2.9. Sintaxis de TRUNCATE ............................................................. 682 13.2.10. Sintaxis de UPDATE ............................................................... 683 13.3. Sentencias tiles de MySQL ................................................................. 684 13.3.1. Sintaxis de DESCRIBE (Informacin acerca de las columnas) .......... 684 13.3.2. Sintaxis de USE ....................................................................... 685 13.4. Comandos transaccionales y de bloqueo de MySQL .................................. 685 13.4.1. Sintaxis de START TRANSACTION, COMMIT y ROLLBACK .......... 685 13.4.2. Sentencias que no se pueden deshacer .......................................... 686 13.4.3. Sentencias que causan una ejecucin (commit) implcita .................. 687 13.4.4. Sintaxis de SAVEPOINT y ROLLBACK TO SAVEPOINT .............. 687 13.4.5. Sintaxis de LOCK TABLES y UNLOCK TABLES .......................... 687 13.4.6. Sintaxis de SET TRANSACTION ............................................... 690 13.5. Sentencias de administracin de base de datos .......................................... 690 13.5.1. Sentencias para la gestin de cuentas ........................................... 690 13.5.2. Sentencias para el mantenimiento de tablas ................................... 699 13.5.3. Sintaxis de SET ....................................................................... 704 13.5.4. Sintaxis de SHOW ..................................................................... 708 13.5.5. Otras sentencias para la administracin ........................................ 725 13.6. Sentencias de replicacin ..................................................................... 729 13.6.1. Sentencias SQL para el control de servidores maestros .................... 729 13.6.2. Sentencias SQL para el control de servidores esclavos ..................... 731 13.7. Sintaxis SQL de sentencias preparadas .................................................... 738 14. Motores de almacenamiento de MySQL y tipos de tablas ...................................... 741 14.1. El motor de almacenamiento MyISAM .................................................... 743 14.1.1. Opciones de arranque de MyISAM ............................................... 744 14.1.2. Cunto espacio necesitan las claves ............................................. 746 14.1.3. Formatos de almacenamiento de tablas MyISAM ............................ 746 14.1.4. Problemas en tablas MyISAM ..................................................... 748 14.2. El motor de almacenamiento MERGE ...................................................... 750 14.2.1. Problemas con tablas MERGE ...................................................... 752 14.3. El motor de almacenamiento MEMORY (HEAP) ......................................... 753 14.4. El motor de almacenamiento BDB (BerkeleyDB) ................................... 755 14.4.1. Sistemas operativos que soporta BDB ........................................... 755 14.4.2. Instalacin de BDB ................................................................... 756 14.4.3. Opciones de arranque de BDB ..................................................... 756 14.4.4. Caractersticas de las tablas BDB ................................................. 757 14.4.5. Temas pendientes de arreglo para BDB ......................................... 759 14.4.6. Limitaciones en las tablas BDB ................................................... 759 14.4.7. Errores que pueden darse en el uso de tablas BDB ........................... 760 14.5. El motor de almacenamiento EXAMPLE .................................................. 760 14.6. El motor de almacenamiento FEDERATED .............................................. 761 14.6.1. Instalacin del motor de almacenamiento FEDERATED ................... 761 x

Manual de referencia de MySQL 5.0

14.6.2. Descripcin del motor de almacenamiento FEDERATED ................. 761 14.6.3. Cmo usar las tablas FEDERATED .............................................. 761 14.6.4. Limitaciones del motor de almacenamiento FEDERATED ................ 762 14.7. El motor de almacenamiento ARCHIVE .................................................. 763 14.8. El motor de almacenamiento CSV .......................................................... 763 15. El motor de almacenamiento InnoDB .............................................................. 765 15.1. Panormica de InnoDB ....................................................................... 765 15.2. Informacin de contacto de InnoDB ...................................................... 765 15.3. Configuracin de InnoDB ................................................................... 765 15.4. Opciones de arranque de InnoDB ......................................................... 770 15.5. Crear el espacio de tablas InnoDB ........................................................ 776 15.5.1. Resolucin de problemas en la inicializacin de InnoDB ................ 777 15.6. Crear tablas InnoDB .......................................................................... 777 15.6.1. Cmo utilizar transacciones en InnoDB con distintas APIs .............. 777 15.6.2. Pasar tablas MyISAM a InnoDB ................................................. 778 15.6.3. Cmo funciona una columna AUTO_INCREMENT en InnoDB ........ 779 15.6.4. Restricciones (constraints) FOREIGN KEY .................................. 780 15.6.5. InnoDB y replicacin MySQL ................................................... 784 15.6.6. Usar un espacio de tablas para cada tabla ...................................... 784 15.7. Aadir y suprimir registros y ficheros de datos InnoDB ............................ 786 15.8. Hacer una copia de seguridad y recuperar una base de datos InnoDB ........... 787 15.8.1. Forzar una recuperacin ............................................................ 788 15.8.2. Marcadores ............................................................................. 789 15.9. Trasladar una base de datos InnoDB a otra mquina ................................. 790 15.10. Bloqueo y modelo de transacciones de InnoDB ..................................... 790 15.10.1. Modos de bloqueo InnoDB ..................................................... 790 15.10.2. InnoDB y AUTOCOMMIT ........................................................ 791 15.10.3. InnoDB y TRANSACTION ISOLATION LEVEL ...................... 792 15.10.4. Lecturas consistentes que no bloquean ........................................ 793 15.10.5. Bloquear lecturas SELECT ... FOR UPDATE y SELECT ... LOCK IN SHARE MODE ................................................................... 793 15.10.6. Bloqueo de la prxima clave (Next-Key Locking): evitar el problema fantasma ............................................................................................... 794 15.10.7. Un ejemplo de lectura consistente en InnoDB ............................. 795 15.10.8. Establecimiento de bloqueos con diferentes sentencias SQL en InnoDB ........................................................................................................ 796 15.10.9. Cundo ejecuta o deshace implicitamente MySQL una transaccin? 797 15.10.10. Deteccin de interbloqueos (deadlocks) y cancelacin de transacciones (rollbacks) ........................................................................................ 797 15.10.11. Cmo tratar con interbloqueos ................................................. 798 15.11. Consejos de afinamiento del rendimiento de InnoDB .............................. 799 15.11.1. SHOW INNODB STATUS y los monitores InnoDB ..................... 801 15.12. Implementacin de multiversin .......................................................... 804 15.13. Estructuras de tabla y de ndice ............................................................ 805 15.13.1. Estructura fsica de un ndice .................................................... 806 15.13.2. Bfer de inserciones ................................................................ 806 15.13.3. Indices hash adaptables ............................................................ 806 15.13.4. Estructura fsica de los registros ................................................ 807 15.14. Gestin de espacio de ficheros y de E/S de disco (Disk I/O) ...................... 807 15.14.1. E/S de disco (Disk I/O) ............................................................ 807 15.14.2. Usar dispositivos en bruto (raw devices) para espacios de tablas ...... 808 15.14.3. Gestin del espacio de ficheros ................................................. 808 15.14.4. Desfragmentar una tabla .......................................................... 809 15.15. Tratamiento de errores de InnoDB ........................................................ 810 15.15.1. Cdigos de error de InnoDB .................................................... 810 15.15.2. Cdigos de error del sistema oeprativo ....................................... 811 15.16. Restricciones de las tablas InnoDB ...................................................... 815 15.17. Resolver problemas relacionados con InnoDB ....................................... 817 15.17.1. Resolver problemas de las operaciones del diccionario de datos de InnoDB ............................................................................................... 818 16. MySQL Cluster ............................................................................................ 819 16.1. Panormica de MySQL Cluster ............................................................. 819 16.2. Conceptos bsicos de Basic MySQL Cluster ............................................ 820 xi

Manual de referencia de MySQL 5.0

16.3. Cmo configurar varios ordenadores ...................................................... 822 16.3.1. Hardware, software y redes ........................................................ 824 16.3.2. Instalacin .............................................................................. 824 16.3.3. Configuracin ......................................................................... 826 16.3.4. Arranque inicial ....................................................................... 827 16.3.5. Cargar datos de ejemplo y realizar consultas .................................. 828 16.3.6. Apagado y encendido seguros ..................................................... 831 16.4. Configuracin de MySQL Cluster .......................................................... 832 16.4.1. Generar MySQL Cluster desde el cdigo fuente ............................. 832 16.4.2. Instalar el software ................................................................... 832 16.4.3. Rpido montaje de prueba de MySQL Cluster ............................... 833 16.4.4. Fichero de configuracin ........................................................... 834 16.5. Gestin de procesos en MySQL Cluster .................................................. 858 16.5.1. El uso del proceso del servidor MySQL para MySQL Cluster ........... 859 16.5.2. ndbd, el proceso del nodo de motor de almacenamiento .................. 859 16.5.3. El proceso del servidor de administracin ndb_mgmd .................... 861 16.5.4. El proceso de cliente de administracin ndb_mgm ......................... 861 16.5.5. Opciones de comando para procesos de MySQL Cluster .................. 862 16.6. Administracin de MySQL Cluster ........................................................ 864 16.6.1. Comandos del cliente de administracin ....................................... 865 16.6.2. Informes de eventos generados por MySQL Cluster ........................ 866 16.6.3. Modo de usuario nico .............................................................. 871 16.6.4. Copias de seguridad On-line para MySQL Cluster .......................... 872 16.7. Usar interconexiones de alta velocidad con MySQL Cluster ........................ 875 16.7.1. Configurar MySQL Cluster para que utilice Sockets SCI ................. 875 16.7.2. Entender el impacto de interconexiones de nodos ........................... 878 16.8. Limitaciones conocidas de MySQL Cluster ............................................. 880 16.9. Mapa de desarrollo de MySQL Cluster ................................................... 882 16.9.1. Cambios de MySQL Cluster en MySQL 5.0 .................................. 883 16.9.2. Mapa de desarrollo de MySQL 5.1 para MySQL Cluster ................. 883 16.10. Preguntas frecuentes sobre MySQL Cluster ............................................ 884 16.11. Glosario de MySQL Cluster ................................................................ 890 17. Introduccin a MaxDB ................................................................................... 895 17.1. Historia de MaxDB ............................................................................. 895 17.2. Licenciamiento y soporte ..................................................................... 895 17.3. Enlaces relacionados con MaxDB .......................................................... 895 17.4. Conceptos bsicos de MaxDB ............................................................... 895 17.5. Diferencias de prestaciones entre MaxDB y MySQL ................................. 895 17.6. Caractersticas de interoperabilidad entre MaxDB y MySQL ....................... 896 17.7. Palabras reservadas de MaxDB ............................................................. 896 18. Extensiones espaciales de MySQL ................................................................... 900 18.1. Introduccin ...................................................................................... 900 18.2. El modelo geomtrico OpenGIS ............................................................ 901 18.2.1. La jerarqua de las clases geomtricas .......................................... 901 18.2.2. La clase Geometry ................................................................. 902 18.2.3. La clase Point ....................................................................... 903 18.2.4. La clase Curve ....................................................................... 903 18.2.5. La clase LineString ............................................................. 904 18.2.6. La clase Surface ................................................................... 904 18.2.7. La clase Polygon ................................................................... 904 18.2.8. La clase GeometryCollection ............................................. 905 18.2.9. La clase MultiPoint ............................................................. 905 18.2.10. La clase MultiCurve ........................................................... 906 18.2.11. La clase MultiLineString ................................................. 906 18.2.12. La clase MultiSurface ....................................................... 906 18.2.13. La clase MultiPolygon ....................................................... 906 18.3. Formatos de datos espaciales soportados ................................................. 907 18.3.1. Formato Well-Known Text (WKT) .............................................. 907 18.3.2. Formato Well-Known Binary (WKB) .......................................... 908 18.4. Crear una base de datos MySQL con capacidades espaciales ....................... 909 18.4.1. Tipos de datos espaciales de MySQL ........................................... 909 18.4.2. Crear valores espaciales ............................................................ 909 18.4.3. Crear columnas espaciales ......................................................... 913 xii

Manual de referencia de MySQL 5.0

18.4.4. Poblar columnas espaciales ........................................................ 913 18.4.5. Extraer datos espaciales ............................................................. 914 18.5. Analizar informacin espacial ............................................................... 915 18.5.1. Funciones de conversin de formato geomtrico ............................ 915 18.5.2. Funciones Geometry .............................................................. 916 18.5.3. Funciones que crean nuevas geometras a partir de unas existentes .... 922 18.5.4. Funciones para probar relaciones espaciales entre objetos geomtricos 923 18.5.5. Relaciones entre rectngulos MBR (Minimal Bounding Rectangles) .. 923 18.5.6. Funciones que prueban relaciones espaciales entre geometras .......... 925 18.6. Optimizacin del anlisis espacial .......................................................... 926 18.6.1. Crear ndices espaciales ............................................................. 926 18.6.2. Usar un ndice espacial .............................................................. 927 18.7. Conformidad y compatibilidad de MySQL .............................................. 928 18.7.1. Caractersticas GIS que todava no han sido implementadas ............. 928 19. Procedimientos almacenados y funciones ........................................................... 930 19.1. Procedimientos almacenados y las tablas de permisos ................................ 930 19.2. Sintaxis de procedimientos almacenados ................................................. 931 19.2.1. CREATE PROCEDURE y CREATE FUNCTION ........................... 931 19.2.2. ALTER PROCEDURE y ALTER FUNCTION ............................... 934 19.2.3. DROP PROCEDURE y DROP FUNCTION ................................... 934 19.2.4. SHOW CREATE PROCEDURE y SHOW CREATE FUNCTION ....... 934 19.2.5. SHOW PROCEDURE STATUS y SHOW FUNCTION STATUS ....... 934 19.2.6. La sentencia CALL ................................................................... 935 19.2.7. Sentencia compuesta BEGIN ... END ...................................... 935 19.2.8. Sentencia DECLARE ................................................................. 935 19.2.9. Variables en procedimientos almacenados .................................... 936 19.2.10. Conditions and Handlers .......................................................... 936 19.2.11. Cursores ............................................................................... 937 19.2.12. Constructores de control de flujo ............................................... 938 19.3. Registro binario de procedimientos almacenados y disparadores .................. 941 20. Disparadores (triggers) ................................................................................... 945 20.1. Sintaxis de CREATE TRIGGER ............................................................ 945 20.2. Sintaxis de DROP TRIGGER ................................................................ 947 20.3. Utilizacin de disparadores ................................................................... 947 21. Vistas (Views) .............................................................................................. 951 21.1. Sintaxis de ALTER VIEW .................................................................... 951 21.2. Sintaxis de CREATE VIEW .................................................................. 951 21.3. Sintaxis de DROP VIEW ...................................................................... 956 21.4. Sintaxis de SHOW CREATE VIEW ........................................................ 956 22. La base de datos de informacin INFORMATION_SCHEMA .................................. 958 22.1. Las tablas INFORMATION_SCHEMA ..................................................... 959 22.1.1. La tabla INFORMATION_SCHEMA SCHEMATA ........................... 959 22.1.2. La tabla INFORMATION_SCHEMA TABLES ............................... 960 22.1.3. La tabla INFORMATION_SCHEMA COLUMNS ............................. 961 22.1.4. La tabla INFORMATION_SCHEMA STATISTICS ....................... 962 22.1.5. La tabla INFORMATION_SCHEMA USER_PRIVILEGES ............. 963 22.1.6. La tabla INFORMATION_SCHEMA SCHEMA_PRIVILEGES ......... 963 22.1.7. La tabla INFORMATION_SCHEMA TABLE_PRIVILEGES ........... 963 22.1.8. La tabla INFORMATION_SCHEMA COLUMN_PRIVILEGES ......... 964 22.1.9. La tabla INFORMATION_SCHEMA CHARACTER_SETS ............... 965 22.1.10. La tabla INFORMATION_SCHEMA COLLATIONS ..................... 965 22.1.11. La tabla INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY ....................................... 965 22.1.12. La tabla INFORMATION_SCHEMA TABLE_CONSTRAINTS ....... 966 22.1.13. La tabla INFORMATION_SCHEMA KEY_COLUMN_USAGE ......... 966 22.1.14. La tabla INFORMATION_SCHEMA ROUTINES ......................... 967 22.1.15. La tabla INFORMATION_SCHEMA VIEWS ............................... 968 22.1.16. La tabla INFORMATION_SCHEMA TRIGGERS ......................... 969 22.1.17. Otras tablas INFORMATION_SCHEMA ...................................... 970 22.2. Extensiones a las sentencias SHOW ......................................................... 970 23. Matemticas de precisin ................................................................................ 973 23.1. Tipos de valores numricos .................................................................. 973 23.2. Cambios en el tipo de datos DECIMAL ................................................... 974 xiii

Manual de referencia de MySQL 5.0

23.3. Manejo de expresiones ........................................................................ 975 23.4. Cmo se redondea .............................................................................. 977 23.5. Ejemplos de matemticas de precisin .................................................... 978 24. APIs de MySQL ........................................................................................... 982 24.1. msql2mysql ................................................................................... 982 24.2. mysql_config ................................................................................. 982 24.3. La API C de MySQL ........................................................................... 983 24.3.1. Tipos de datos de la API C ......................................................... 984 24.3.2. Panormica de funciones de la API C ........................................... 986 24.3.3. Descripcin de funciones de la API C .......................................... 990 24.3.4. Sentencias preparadas de la API C ............................................. 1030 24.3.5. Tipos de datos de sentencias preparadas de la API C ..................... 1031 24.3.6. Panormica de las funciones de sentencias preparadas de la API C .. 1034 24.3.7. Descripciones de funciones de sentencias preparadas de la API C .... 1036 24.3.8. Problemas con sentencias preparadas de la API C ......................... 1057 24.3.9. Tratamiento por parte de la API C de la ejecucin de mltiples consultas ...................................................................................................... 1057 24.3.10. Manejo de valores de fecha y hora por parte de la API C .............. 1058 24.3.11. Descripcin de funciones de la API C para el control de subprocesos 1059 24.3.12. Descripcin de las funciones de la API C del servidor incrustado (embedded) ..................................................................................... 1060 24.3.13. Preguntas y problemas comunes en el uso de la API C ................. 1061 24.3.14. Generar programas cliente ...................................................... 1063 24.3.15. Cmo hacer un cliente multihilo .............................................. 1063 24.3.16. libmysqld, la biblioteca del servidor MySQL incrustado (embedded) 1065 24.4. API PHP de MySQL ......................................................................... 1070 24.4.1. Problemas comunes con MySQL y PHP ..................................... 1070 24.5. La API Perl de MySQL ...................................................................... 1070 24.6. API C++ de MySQL ......................................................................... 1071 24.6.1. Borland C++ ......................................................................... 1071 24.7. La API Python de MySQL ................................................................. 1071 24.8. La API Tcl de MySQL ...................................................................... 1071 24.9. El visor de MySQL Eiffel ................................................................... 1071 25. Conectores MySQL ..................................................................................... 1073 25.1. El conector ODBC de MySQL ............................................................ 1073 25.1.1. Introduccin a MyODBC ......................................................... 1073 25.1.2. Informacin general sobre ODBC y MyODBC ............................ 1075 25.1.3. Cmo instalar MyODBC ......................................................... 1078 25.1.4. Instalar MyODBC en Windows desde una distribucin binaria ....... 1079 25.1.5. Instalacin de MyODBC en Unix partiendo de una distribucin binaria 1079 25.1.6. Instalar MyODBC de una distribucin de cdigo fuente en Windows 1080 25.1.7. Instalar MyODBC de una distribucin de cdigo fuente en Unix ..... 1081 25.1.8. Instalar MyODBC del rbol de cdigo de desarrollo de BitKeeper ... 1086 25.1.9. Configuracin de MyODBC ..................................................... 1087 25.1.10. Cuestiones relacionadas con la conexin en MyODBC ................ 1105 25.1.11. MyODBC y Microsoft Access ................................................ 1105 25.1.12. MyODBC, Microsoft VBA y ASP ........................................... 1110 25.1.13. MyODBC y herramientas ODBC de terceras partes .................... 1112 25.1.14. Funcionalidad general de MyODBC ......................................... 1112 25.1.15. Pasos bsicos a seguir con aplicaciones MyODBC ...................... 1116 25.1.16. Referencia de la API de MyODBC .......................................... 1117 25.1.17. Tipos de datos MyODBC ....................................................... 1121 25.1.18. Cdigos de error de MyODBC ................................................ 1122 25.1.19. MyODBC con VB: ADO, DAO y RDO .................................... 1124 25.1.20. MyODBC con Microsoft .NET ............................................... 1127 25.1.21. Credits ............................................................................... 1130 25.2. MySQL Connector/NET .................................................................... 1130 25.2.1. Introduction .......................................................................... 1130 25.2.2. Downloading and Installing MySQL Connector/NET .................... 1131 25.2.3. Connector/NET Architecture .................................................... 1131 25.2.4. Using MySQL Connector/NET ................................................. 1144 25.2.5. MySQL Connector/NET Change History .................................... 1160 25.3. MySQL Connector/J ......................................................................... 1175 xiv

Manual de referencia de MySQL 5.0

25.3.1. Conceptos bsicos de JDBC ..................................................... 1175 25.3.2. Instalacin del Connector/J ...................................................... 1184 25.3.3. Referencia JDBC ................................................................... 1187 25.3.4. Usando Connector/J con J2EE y otros Java Frameworks ................ 1211 25.3.5. Diagnstico de problemas de Connector/J ................................... 1216 25.3.6. Changelog ............................................................................ 1221 25.4. MySQL Connector/MXJ .................................................................... 1250 25.4.1. Introduction .......................................................................... 1250 25.4.2. Support Platforms: ................................................................. 1251 25.4.3. JUnit Test Requirements .......................................................... 1251 25.4.4. Running the JUnit Tests .......................................................... 1252 25.4.5. Running as part of the JDBC Driver ........................................... 1252 25.4.6. Running within a Java Object ................................................... 1253 25.4.7. The MysqldResource API ........................................................ 1254 25.4.8. Running within a JMX Agent (custom) ...................................... 1255 25.4.9. Deployment in a standard JMX Agent environment (JBoss) ........... 1256 25.4.10. Installation .......................................................................... 1257 26. Manejo de errores en MySQL ........................................................................ 1259 27. Extender MySQL ........................................................................................ 1294 27.1. El interior de MySQL ........................................................................ 1294 27.1.1. Los subprocesos (threads) MySQL ............................................ 1294 27.1.2. El paquete de pruebas MySQL Test ........................................... 1294 27.2. Aadir nuevas funciones a MySQL ...................................................... 1297 27.2.1. Caractersticas de la interfaz para funciones definidas por el usuario 1297 27.2.2. Sintaxis de CREATE FUNCTION/DROP FUNCTION ................. 1298 27.2.3. Aadir una nueva funcin definida por el usuario ......................... 1298 27.2.4. Aadir una nueva funcin nativa ............................................... 1307 27.3. Aadir nuevos procedimientos a MySQL .............................................. 1308 27.3.1. Procedimiento Analyse ........................................................... 1308 27.3.2. Escribir un procedimiento ........................................................ 1309 A. Problemas y errores comunes ......................................................................... 1310 A.1. Cmo determinar a qu es debido un problema ........................................ 1310 A.2. Errores comunes al usar programas MySQL ........................................... 1311 A.2.1. Access denied .................................................................. 1311 A.2.2. Can't connect to [local] MySQL server .................. 1311 A.2.3. Client does not support authentication protocol 1313 A.2.4. La contrasea falla cuando se introduce interactivamente ................ 1314 A.2.5. Host 'host_name' is blocked ...................................... 1314 A.2.6. Too many connections .................................................... 1315 A.2.7. Out of memory .................................................................. 1315 A.2.8. MySQL server has gone away ........................................ 1315 A.2.9. Packet too large ............................................................ 1317 A.2.10. Errores de comunicacin y conexiones abortadas ......................... 1318 A.2.11. The table is full ........................................................ 1319 A.2.12. Can't create/write to file ...................................... 1320 A.2.13. Commands out of sync .................................................. 1320 A.2.14. Ignoring user ................................................................ 1320 A.2.15. Table 'nombre_de_tabla' doesn't exist ................ 1321 A.2.16. Can't initialize character set .............................. 1321 A.2.17. No se encontr el fichero ........................................................ 1322 A.3. Problemas relacionados con la instalacin .............................................. 1322 A.3.1. Problemas al enlazar a la biblioteca de clientes MySQL .................. 1322 A.3.2. Cmo correr MySQL como usuario normal .................................. 1323 A.3.3. Problemas con permisos de ficheros ........................................... 1324 A.4. Cuestiones relacionadas con la administracin ........................................ 1325 A.4.1. Cmo reiniciar la contrasea de root ........................................... 1325 A.4.2. Qu hacer si MySQL sigue fallando (crashing) ............................. 1327 A.4.3. Cmo se comporta MySQL ante un disco lleno ............................. 1329 A.4.4. Dnde almacena MySQL los archivos temporales ......................... 1329 A.4.5. Cmo proteger o cambiar el fichero socket de MySQL / tmp/mysql.sock ......................................................................... 1330 A.4.6. Problemas con las franjas horarias .............................................. 1331 A.5. Problemas relacionados con consultas ................................................... 1331 xv

Manual de referencia de MySQL 5.0

A.5.1. Sensibilidad a maysculas en bsquedas ...................................... 1331 A.5.2. Problemas en el uso de columnas DATE ...................................... 1331 A.5.3. Problemas con valores NULL ..................................................... 1333 A.5.4. Problemas con alias de columnas ............................................... 1334 A.5.5. Fallo en la cancelacin de una transaccin con tablas no transaccionales 1334 A.5.6. Borrar registros de tablas relacionadas ........................................ 1335 A.5.7. Resolver problemas con registros que no salen .............................. 1335 A.5.8. Problemas con comparaciones en Floating-Point ........................... 1336 A.6. Cuestiones relacionadas con el optimizados ............................................ 1337 A.7. Cuestiones relacionadas con definiciones de tabla .................................... 1338 A.7.1. Problemas con ALTER TABLE ................................................. 1338 A.7.2. Cmo cambiar el orden de las columnas en una tabla ..................... 1339 A.7.3. Problemas con TEMPORARY TABLE ......................................... 1339 A.8. Problemas conocidos en MySQL .......................................................... 1340 A.8.1. Problemas de la versin 3.23 resueltos en una versin posterior de MySQL ...................................................................................................... 1340 A.8.2. Problemas de la versin 4.0 resueltos en una versin posterior de MySQL ...................................................................................................... 1340 A.8.3. Problemas de la versin 4.1 resueltos en una versin posterior de MySQL ...................................................................................................... 1341 A.8.4. Cuestiones abiertas en MySQL .................................................. 1341 B. Credits ....................................................................................................... 1345 B.1. Desarrolladores de MySQL AB ............................................................ 1345 B.2. Han contribuido a crear MySQL ........................................................... 1350 B.3. Documentadores y traductores .............................................................. 1354 B.4. Bibliotecas incluidas en MySQL y que MySQL utiliza .............................. 1355 B.5. Paquetes que soportan MySQL ............................................................. 1356 B.6. Herramientas utilizadas en la creacin de MySQL .................................... 1357 B.7. Han ayudado a MySQL ....................................................................... 1357 C. Historial de cambios de MySQL ..................................................................... 1359 C.1. Cambios en la entrega 5.0.x (Desarrollo) ................................................ 1359 C.1.1. Cambios en la entrega 5.0.11 (todava no liberada) ........................ 1360 C.1.2. Cambios en la entrega 5.0.10 (todava no liberada) ........................ 1361 C.1.3. Cambios en la entrega 5.0.9 (15 julio 2005) .................................. 1365 C.1.4. Cambios en la entrega 5.0.8 (not released) ................................... 1367 C.1.5. Cambios en la entrega 5.0.7 (10 June 2005) .................................. 1372 C.1.6. Cambios en la entrega 5.0.6 (26 May 2005) .................................. 1375 C.1.7. Cambios en la entrega 5.0.5 (not released) ................................... 1380 C.1.8. Cambios en la entrega 5.0.4 (16 Apr 2005) ................................... 1382 C.1.9. Cambios en la entrega 5.0.3 (23 Mar 2005: Beta) .......................... 1385 C.1.10. Cambios en la entrega 5.0.2 (01 Dec 2004) ................................. 1395 C.1.11. Cambios en la entrega 5.0.1 (27 Jul 2004) .................................. 1398 C.1.12. Cambios en la entrega 5.0.0 (22 Dec 2003: Alpha) ....................... 1402 C.2. Cambios en MyODBC ........................................................................ 1402 C.2.1. Cambios en MyODBC 3.51.12 .................................................. 1402 C.2.2. Cambios en MyODBC 3.51.11 .................................................. 1403 D. Portar a otros sistemas ................................................................................... 1404 D.1. Depurar un servidor MySQL ............................................................... 1405 D.1.1. Compilacin de MySQL para depuracin .................................... 1405 D.1.2. Crear ficheros de traza ............................................................. 1406 D.1.3. Depurar mysqld con gdb ....................................................... 1406 D.1.4. Usar stack trace ...................................................................... 1407 D.1.5. El uso de registros (logs) para encontrar la causa de errores de mysqld 1408 D.1.6. Crear un caso de prueba tras haber encontrado una tabla corrupta ..... 1409 D.2. Depuracin de un cliente MySQL ......................................................... 1410 D.3. El paquete DBUG .............................................................................. 1410 D.4. Comentarios sobre subprocesos RTS ..................................................... 1411 D.5. Diferencias entre paquetes de control de subprocesos ............................... 1412 E. Variables de entorno ..................................................................................... 1414 F. Expresiones regulares en MySQL .................................................................... 1415 G. Lmites en MySQL ....................................................................................... 1419 G.1. Lmites de los joins ............................................................................ 1419 H. Restricciones en caractersticas de MySQL ....................................................... 1420 xvi

Manual de referencia de MySQL 5.0

H.1. Restricciones en procedimientos almacenados y disparadores ..................... 1420 H.2. Restricciones en cursores del lado del servidor ........................................ 1421 H.3. Restricciones en subconsultas .............................................................. 1421 H.4. Restricciones en vistas ........................................................................ 1423 I. GNU General Public License ........................................................................... 1426 J. MySQL FLOSS License Exception .................................................................. 1431 ndice ............................................................................................................ 1433

xvii

Lista de tablas25.1. Propiedades de conexin ............................................................................ 1188 25.2. Tabla de conversiones ............................................................................... 1205 25.3. Tipos MySQL para tiposJava Types para ResultSet.getObject() ......................... 1205 25.4. Traduccin MySQL a nombres codificacin Java ............................................ 1207

xviii

Lista de ejemplos25.1. Obtener una conexin de DriverManager ...................................................... 1176 25.2. Usando java.sql.Statement para ejecutar una consulta SELECT ......................... 1177 25.3. Ejemplo de procedimiento almacenado ......................................................... 1178 25.4. Usando Connection.prepareCall() ................................................................ 1178 25.5. Registrando parmetros de salida ................................................................. 1178 25.6. Especificando los parmetros de entrada de CallableStatement .......................... 1179 25.7. Recibiendo resultados y parmetros de salida ................................................. 1180 25.8. Recibiendo valores de columna AUTO_INCREMENT usando Statement.getGeneratedKeys() .................................................................................. 1181 25.9. Recibiendo valores de columna AUTO_INCREMENT usando 'SELECT LAST_INSERT_ID()' ....................................................................................... 1182 25.10. Recibiendo valores de columna AUTO_INCREMENT en Updatable ResultSets . 1182 25.11. Inicializacin de CLASSPATH en UNIX .................................................... 1185 25.12. Usando un pool de conexiones con un servidor de aplicaciones J2EE ................ 1212 25.13. Ejemplo de transaccin con lgica de reintento ............................................. 1218

xix

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.

xx

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 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 1

Informacin general

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 este estilo se usa para entrada de variables las cuales debe substituir por un valor de su propia eleccin. Nombres de ficheros y directorios se escriben as: "El fichero global my.cnf se encuentra en el directorio /etc". Las secuencias de carcteres se escriben as: "Para especificar un comodn, use el carcter '%'." El texto de este estilo se usa para enfatizar. El texto de este estilo se usa en las cabeceras y para dar un enfsis especialmente fuerte.

Cuando se muestran comandos que deben ser ejecutados en un programa particular, el programa se indica con un prompt mostrado antes del comando. Por ejemplo, shell> indica un comando que se ejecuta desde el login shell, y mysql> indica un comando que se ejecuta desde el programa cliente mysql :shell> escriba un comando de shell aqu mysql> escriba un comando mysql aqu

El "shell" es su intrprete de comandos. En Unix, esto es normalmente un programa como sh csh. En Windows, el programa equivalente es command.com o cmd.exe, normalmente ejecutado en una ventana de consola. Cuando introduzca un comando u rden no escriba el prompt mostrado en el ejemplo. Nombres de bases de datos, tablas y columnas a menudo deben reemplazarse en los comandos. Para indicar que dicha substitucin es necesaria, el manual usa db_name, tbl_name, y col_name. 2

Informacin general

Por ejemplo, puede ver un comando como este:mysql> SELECT col_name FROM db_name.tbl_name;

Significa que si quisiera introducir un comando similar, debera escribir su propio nombre de base de datos, tabla y columna, tal vez as:mysql> SELECT author_name FROM biblio_db.author_list;

Las palabras clave SQL no son case sensitive y pueden escribirse en maysculas o minsculas. Este manual usa maysculas. En descripciones de sintaxis, corchetes ('[' y ']') se usan para indicar palabras o clusulas opcionales. Por ejemplo, en el siguiente comando, IF EXISTS es opcional:DROP TABLE [IF EXISTS] tbl_name

Cuando un elemento de sintaxis consiste en un nmero de alternativas, las alternativas se separan mediante barras verticales ('|'). Cuando un miembro de una serie de elecciones puede ser elegido, las alternativas se muestran entre corchetes ('[' y ']'):TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)

Cuando un miembro de una serie de elecciones debe ser elegido, las alternativas se muestran entre llaves ('{' y '}'):{DESCRIBE | DESC} tbl_name [col_name | wild]

Puntos suspensivos (...) indica la omisin de una parte del comando, tpicamente para proporcionar una versin corta de una sintaxis ms compleja. Por ejemplo, INSERT ... SELECT es la versin corta de un comando INSERT seguido de un comando SELECT. Puntos suspensivos pueden tambier indicar que el elemento de sintaxis precedente de un comando puede repertirse. En el siguiente ejemplo, pueden darse varios valores reset_option cada uno de ellos tras el primero precedidos por comas:RESET reset_option [,reset_option] ...

Los comandos para inicializar variables del shell se muestran usando la sintaxis del shell Bourne. Por ejemplo, la secuencia para incializar una variable de entorno y ejecutar un comando es la siguiente con la sintaxis del shell Bourne:shell> VARNAME=value some_command

Si utiliza csh o tcsh, debe proporcionar comandos ligeramente distintos. Debera ejecutar la secuencia anterior as:shell> setenv VARNAME value shell> some_command

1.3. Panormica de MySQL ABMySQL AB de los fundadores de MySQL y principales desarrolladores. MySQL AB se estableci originalmente en Sueca por David Axmark, Allan Larsson, y Michael "Monty" Widenius. Nos dedicamos a desarrollar el software para la base de datos MySQL y promocionarlo a nuevos usuarios. MySQL AB posee el co