
MySQL, el sistema de gestión de bases de datos relacional de código abierto por excelencia, sigue ganando usuarios de manera asombrosa. Aunque ya es conocida su sencillez de uso y su velocidad, capaz de manejar grandes bases de datos con millones de registros, se ha mejorado a sí mismo para adaptarse especialmente al desarrollo de sitios web y aplicaciones basadas en bases de datos.
Esta obra proporciona una guía exhaustiva para utilizar MySQL de una forma realmente efectiva y productiva, poniendo especial énfasis en sus capacidades únicas y el modo de utilizarlas. Encontrará información fundamental sobre todo el proceso, desde los fundamentos básicos sobre cómo obtener información de una base de datos y formular consultas, hasta cómo emplear MySQL con PHP o Perl para generar páginas web dinámicas o administrar servidores MySQL.
Con un contenido completo, claro y técnicamente preciso, resulta la herramienta perfecta para profundizar en la utilización, programación y administración tanto de MySQL 4.1 como de la versión 5.0.



Introducción
¿Por qué elegir MySQL?
¿Ya está ejecutando otros SGBDR?
Herramientas incluidas en MySQL
Qué podemos esperar de este libro
Mapa de carreteras de este libro
Parte I. Empleo general de MySQL
Parte II. Utilizar las interfaces de programación de MySQL
Parte III. Administración de MySQL
Parte IV. Apéndices
Cómo leer este libro
Versiones de software que cubre este libro
Convenciones utilizadas en este libro
Recursos adicionales
Parte I. Empleo general de MySQL
1. Primeros pasos con MySQL y SQL
¿Cómo puede ayudarle MySQL?
La base de datos de ejemplo
La Asociación de amigos de la historia de Estados Unidos
El proyecto de seguimiento de evaluaciones
Cómo puede aplicar la base de datos de ejemplo a sus propios intereses
Terminología esencial de bases de datos
Terminología estructural
Terminología del lenguaje de consultas
Terminología de la arquitectura MySQL
Manual de MySQL
Obtener la distribución de la base de datos de ejemplo
Requisitos preliminares
Iniciar y finalizar conexiones con el servidor MySQL
Ejecutar sentencias SQL
Crear una base de datos
Creación de tablas
Tablas para la Asociación de amigos de la historia de EEUU
Tablas para el proyecto de seguimiento de evaluaciones
Añadir nuevos registros
Añadir registros con INSERT
Añadir nuevos registros desde un archivo
Restablecer la base de datos sampdb a un estado conocido
Recuperar información
Especificar criterios de recuperación
El valor NULL
Ordenar resultados de consultas
Limitar los resultados de una consulta
Valores de columnas calculadas y nombres
Trabajar con fechas
Patrones de comparación
Configurar y utilizar variables definidas por el usuario
Generar resúmenes
Recuperar información de varias tablas
Borrar o actualizar registros existentes
Trucos para interactuar con mysql
Simplificar el proceso de conexión
Utilizar un archivo de opción
Utilizar el historial de comandos del intérprete
Utilizar script y alias en el intérprete de comandos
Escribir sentencias con menos trabajo
Utilizar el editor de líneas de mysql
Copiar y pegar sentencias
Ejecutar mysql en el modo de proceso por lotes
¿Y ahora qué?
2. Sintaxis y empleo de SQL en MySQL
Reglas de nombres en MySQL
Hacer referencia a los elementos de una base de datos
Sensibilidad a mayúsculas y minúsculas en sentencias SQL
El modo de servidor SQsL
Soporte de conjuntos de caracteres
Soporte de conjuntos de caracteres antes de MySQL 4.1
Soporte de conjuntos de caracteres en MySQL 4.1 y posterior
Especificar conjuntos de caracteres
Determinar la disponibilidad de conjunto de caracteres y las configuraciones actuales
Soporte Unicode
Seleccionar, crear, eliminar y modificar bases de datos
Seleccionar bases de datos
Crear bases de datos
Eliminar bases de datos
Modificar bases de datos
Crear, eliminar, indexar y modificar tablas
Características de los motores de almacenamiento
Comprobar los motores de almacenamiento disponibles
Representación de tablas en disco
El motor de almacenamiento ISAM
El motor de almacenamiento MyISAM
El motor de almacenamiento MERGE
El motor de almacenamiento MEMORY
El motor de almacenamiento InnoDB
El motor de almacenamiento BDB
El motor de almacenamiento FEDERsATED
El motor de almacenamiento NDB
Otros motores de almacenamiento
Características de portabilidad de motores de almacenamiento
Creación de tablas
Opciones de tabla
Creación de tablas provisionales
Tablas temporales
Crear tablas a partir de otras tablas o de resultados de consultas
Utilizar tablas MERGE
Utilizar tablas FEDERATED
Eliminar tablas
Indexar tablas
Características de los índices en los motores de almacenamiento
Crear índices
Eliminar índices
Modificar la estructura de una tabla
Obtener información sobre bases de datos y tablas
Recuperar información de varias tablas con uniones
La unión trivial
La unión cruzada
Uniones a izquierda y derecha
Recuperar información de varias tablas con subconsultas
Subconsultas con operadores relativos de comparación
Subconsultas IN y NOT IN
Subconsultas ALL, ANY y SOME
Subconsultas EXISTS y NOT EXISTS
Subconsultas correlacionadas
Subconsultas en la cláusula FROM
Como uniones
Reescribir subconsultas que seleccionan valores coincidentes
Reescribir subconsultas que seleccionan valores no coincidentes
Recuperar información de varias tablas con UNION
Eliminaciones y actualizaciones en varias tablas
Realizar transacciones
Utilizar transacciones para asegurar la ejecución de sentencias
Emplear puntos de restauración en transacciones
Aislamiento de transacciones
Aproximación no transaccional a problemas transaccionales
Claves externas e integridad referencial
Vivir sin claves externas
Utilizar búsquedas FULLTEXT
Búsquedas FULLTEXT de lenguaje natural
Búsquedas FULLTEXT en modo booleano
Búsquedas FULLTEXT con expansión de consultas
Configurar el motor de búsqueda FULLTEXT
Nuevas características en MySQL 5.0
Empleo de vistas
Utilizar procedimientos almacenados
Utilizar lanzadores de eventos
3. Trabajar con datos en MySQL
Categorías de valores de datos
Valores numéricos
Valores de cadena
Propiedades de cadenas binarias y no binarias
Variables del sistema relacionadas con conjuntos de caracteres
Valores de fecha y hora (temporales)
Valores espaciales
El valor NULL
Tipos de datos MySQL
Visión preliminar de los tipos de datos
Definir tipos de columna en definiciones de tablas
Especificar valores por defecto de columnas
Tipos de datos numéricos
Tipos de datos enteros
Tipos de datos de coma flotante y coma fija
El tipo de datos BIT
Atributos de tipos de datos numéricos
Elegir tipos de datos numéricos
Tipos de datos de cadena
Los tipos de datos CHAR y VARCHAR
Los tipos de datos BINARY y VARBINARY
Los tipos de datos BLOB y TEXT
Los tipos de datos ENUM y SET
Atributos de tipos de datos de cadena
Escoger tipos de datos de cadena
Tipos de datos de fecha y hora
Los tipos de datos DATE, TIME y DATETIME
El tipo de datos TIMESTAMP
El tipo de datos YEAR
Atributos de tipos de datos de fecha y hora
Trabajar con valores de fecha y hora
Interpretación de valores de año ambiguos
Tipos de datos espaciales
Cómo gestiona MySQL los valores de datos erróneos
Trabajar con secuencias
Conceptos generales de AUTO_INCREMENT
Gestión de AUTO_INCREMENT según el tipo de motor de almacenamiento
AUTO_INCREMENT para tablas MyISAM
AUTO_INCREMENT para tablas MEMORY
AUTO_INCREMENT para tablas InnoDB
AUTO_INCREMENT para tablas BDB
Aspectos a considerar con columnas AUTO_INCREMENT
Trucos para trabajar con columnas AUTO_INCREMENT
Añadir una columna de números secuenciales a una tabla
Restablecer una secuencia en una columna existente
Generar secuencias sin AUTO_INCREMENT
Elegir tipos de datos
¿Qué clase de valores queremos almacenar en la columna?
¿Los valores están limitados por algún rango en particular?
¿Cuáles son los aspectos relacionados con el rendimiento y la eficiencia?
Operaciones numéricas frente a operaciones de cadena
Tipos pequeños frente a tipos grandes
Longitud fija frente a longitud variable
Prohibir o permitir valores NULL
Interrelaciones entre aspectos de la elección de tipos de datos
Evaluación de expresiones y conversión de tipos
Escribir expresiones
Tipos de operadores
Precedencia de operadores
Valores NULL en expresiones
Conversión de tipos
Reglas de interpretación de fecha y hora
Verificación y coerción de conversión de tipos
4. Optimización de consultas
Utilizar índices
Beneficios de los índices
El coste de los índices
Elegir índices
El optimizador de consultas de MySQL
Cómo trabaja el optimizador
Utilizar EXPLAIN para comprobar los efectos del optimizador
Ignorar la optimización
Elección de tipos de datos y eficacia de consultas
Cargar datos de forma eficiente
Aspectos relacionados con la planificación y el bloqueo
Prioridades de planificación de sentencias de cambio
Utilizar inserciones diferidas
Utilizar inserciones concurrentes
Niveles de bloqueo y concurrencia
Optimización para administradores
Utilizar cachés de claves para tablas MyISAM
Utilizar la caché de consultas
Aspectos relacionados con el hardware
Parte II. Utilizar las interfaces de programación de MySQL
5. Introducción a la programación MySQL
¿Por qué escribir nuestros propios programas MySQL?
API disponibles para MySQL
La API C
La API DBI de Perl
La API PHP
Elegir una API
Entorno de ejecución
Rendimiento
Lenguajes compilados frente a lenguajes intérpretes
Versiones independientes frente a versiones de módulos de los lenguajes intérpretes
Tiempo de desarrollo
Portabilidad
6. Escribir programas MySQL con C
Instrucciones generales para construir programas cliente
Requisitos básicos del sistema
Compilar y enlazar programas cliente
Conectar al servidor
Manejar errores y procesar opciones de comando
Verificar errores
Obtener parámetros de conexión en tiempo de ejecución
Acceder a los contenidos de un archivo de opciones
Procesar argumentos en la línea de comandos
Incorporar la función de proceso de opciones a un programa cliente MySQL
Procesar sentencias SQL
Manejar sentencias que no devuelven un conjunto de resultados
Manejar sentencias que devuelven un conjunto de resultados
Manejador de sentencias de propósito general
Aproximaciones alternativas para el proceso de sentencias
Comparación entre mysql_store_result() y mysql_use_result()
Utilizar los metadatos de un conjunto de resultados
Codificar caracteres especiales y datos binarios
Trabajar con cadenas que contienen caracteres especiales
Trabajar con datos binarios
Programa interactivo de ejecución de sentencias
Escribir clientes con soporte SSL
Utilizar la librería de servidor incrustada
Escribir una aplicación incrustada de servidor
Generar la aplicación binaria ejecutable
Ejecución de varias sentencias
Utilizar sentencias preparadas en el lado del servidor
7. Escribir programas MySQL con Perl DBl
Características de script de Perl
Visión general de Perl DBI
Tipos de datos DBI
Un script DsBI sencillo
Manejar errores
Manejar sentencias que no devuelven un conjunto de resultados
Manejar sentencias que devuelven un conjunto de resultados
Escribir bucles para recuperar filas
Determinar el número de filas devuelto por una consulta
Recuperar resultados de una sola fila
Trabajar con conjuntos de resultados completos
Comprobar valores NULL
Aspectos relacionados con las comillas
Marcadores de posición y sentencias preparadas
Asociar resultados de consultas con variables de script
Especificar parámetros de conexión
Depuración
Depuración utilizando sentencias de impresión
Depuración con las herramientas de seguimiento de DBI
Utilizar metadatos del conjunto de resultados
Realizar transacciones
Poner DBI a trabajar
Generar el directorio de la asociación
Generar la lista de miembros en texto plano
Generar el directorio en formato RTF
Enviar avisos de renovación de suscripciones
Edición de entradas de miembros de la asociación
Encontrar los miembros de la asociación con intereses comunes
Poner el directorio de socios online
Utilizar DBI en aplicaciones Web
Configurar Apache para script CGI
Una breve introducción a CGI.pm
Comprobar los parámetros de entrada Web
Escribir salidas Web
Transformar HTML y texto URL
Escribir páginas para varios propósitos
Conectar al servidor MySQL desde un script Web
Navegador Web de bases de datos
Navegador para el proyecto de seguimiento de calificaciones
Búsqueda de intereses comunes entre los miembros de la asociación
Realizar búsquedas utilizando coincidencias de patrones
Realizar búsquedas utilizando un índice FULLTEXT
8. Escribir programas MySQL con PHP
Visión preliminar de PHP
Utilizar funciones e incluir archivos
Página sencilla para recuperar datos
Procesar resultados de sentencias
Manejar sentencias que no devuelven un conjunto de resultados
Manejar sentencias que devuelven un conjunto de resultados
Comprobar valores nulos en los resultados de una consulta
Gestionar errores
Aspectos relacionados con comillas
Marcadores de posición y sentencias preparadas
Poner PHP a trabajar
Introducir las calificaciones de los alumnos
Crear un cuestionario interactivo online
Edición online de las entradas de miembros de la asociación
Parte III. Administración de MySQL
9. Introducción a la administración de MySQL
Visión preliminar de las tareas administrativas
Administración general
Seguridad
Reparación y mantenimiento de bases de datos
10. La carpeta de datos de MySQL
Localización de la carpeta de datos
Estructura de la carpeta de datos
Cómo proporciona el servidor MySQL acceso a los datos
Cómo representa MySQL las bases de datos en el sistema de archivos
Cómo representa MySQL las tablas en el sistema de archivos
Tablas ISAM
Tablas MyISAM
Tablas MERGE
Tablas BDB
Tablas InnoDB
Tablas MEMORY
Tablas FEDERATED
Cómo se asignan las sentencias SQL en operaciones de archivos de tablas
Restricciones del sistema operativo para nombres de bases de datos y tablas
Factores que afectan al tamaño máximo de tabla
Implicaciones de la estructura de la carpeta de datos en el rendimiento del sistema
Archivos de estado y de registro de MySQL
El archivo de ID de proceso
Los archivos de registro de MySQL
Reubicar los contenidos de la carpeta de datos
Reubicación de métodos
Evaluar el efecto de la reubicación
Reubicar la carpeta de datos completa
Reubicar bases de datos individuales
Reubicar tablas individuales
Reubicar el espacio de tablas compartido InnoDB
Reubicar archivos de estado y de registro
11. Administración general de MySQL
Asegurar una nueva instalación de MySQL
Cómo se configura inicialmente la tabla de autorizaciones
Establecer contraseñas para las cuentas iniciales de MySQL
Configurar contraseñas para un segundo servidor
Organizar la conexión y la desconexión de un servidor MySQL
Ejecutar el servidor MySQL en Unix
Ejecutar el servidor utilizando una cuenta de acceso sin privilegios
Métodos para iniciar el servidor
Ejecutar el servidor MySQL en Windows
Ejecutar el servidor de forma manual
Ejecutar el servidor como servicio de Windows
Especificar opciones de inicio del servidor
Detener el servidor
Recuperar el control del servidor cuando no podamos conectar con él
Gestionar cuentas de usuario en MySQL
Crear nuevas cuentas y asignar privilegios
Especificar un nombre de cuenta y una contraseña
Definir los privilegios de una cuenta
Hacer que una cuenta utilice conexiones seguras
Permitir que una cuenta tenga privilegios administrativos
Limitar el consumo de recursos de una cuenta
Mostrar los privilegios de una cuenta
Eliminar privilegios y usuarios
Cambiar contraseñas o restablecer contraseñas perdidas
Manejar los cambios en la estructura de la tabla de autorizaciones
Mantenimiento de archivos de registro
El registro de errores
El registro de errores en Unix
El registro de errores en Windows
El registro general de consultas
El registro binario y el archivo de índice de los registros binarios
El registro de actualizaciones
El registro de consultas lentas
El registro de reenvíos y el archivo de índice de registros de reenvíos
Expiración de archivos de registro
Rotación de archivos de registro de nombre fijo
Expiración de archivos de registro numerados
Expiración de archivos de registro relacionados con réplicas
Automatizar el proceso de expiración de registros
Ajustes del servidor
Definir y verificar valores de variables del sistema
Configurar variables del sistema al iniciar el servidor
Definir variables del sistema en tiempo de ejecución
Comprobar los valores de las variables del sistema
Variables de sistema de propósito general
Configuración de motores de almacenamiento
Seleccionar motores de almacenamiento
Configurar el motor de almacenamiento MyISAM
Configurar el motor de almacenamiento InnoDB
Configurar el espacio de tablas de InnoDB
Variables del motor de almacenamiento InnoDB
Controlar la forma en que el servidor escruta las conexiones
Activar o desactivar la capacidad LOCAL para LOAD DATA
Configurar la compatibilidad descendente para la gestión de contraseñas
Aspectos de internacionalización y localización
Configurar el soporte de zona horaria
Seleccionar el idioma para los mensajes de error
Configurar el soporte de conjuntos de caracteres
Actualizar tablas antiguas para activar el soporte de conjuntos de caracteres de MySQL 4.1
Actualizar tablas cuando no es necesaria una conversión de conjunto de caracteres
Actualizar tablas cuando la conversión del conjunto de caracteres es necesaria
Ejecutar varios servidores
Aspectos generales sobre el empleo de varios servidores
Configurar y compilar diferentes servidores
Estrategias para especificar opciones de inicio
Utilizar mysqld_multi para la gestión de servidores
Ejecutar varios servidores en Windows
Configurar servidores de réplica
Cómo funcionan las réplicas
Establecer una relación de réplica maestro-esclavo
Actualizar MySQL
12. Seguridad en MySQL
Seguridad interna: prevenir el acceso no autorizado al sistema de archivos
Cómo robar datos
Asegurar una instalación MySQL
Asegurar el archivo de socket de Unix
Seguridad en archivos de opciones
Seguridad externa: evitar accesos no autorizados a través de la red
Estructura y contenidos de las tablas de autorizaciones de MySQL
Columnas de tablas de autorizaciones de alcance de acceso
Columnas de privilegios de tablas de autorizaciones
Columnas de tablas de autorizaciones relacionadas con SSL
Columnas de tablas de autorizaciones de gestión de recursos
Cómo controla el servidor los accesos de clientes
Contenido de columnas de alcance
Comprobación de acceso de sentencias
Orden de coincidencia de las columnas de alcance
Un puzzle de privilegios
Riesgos a evitar en las tablas de autorizaciones.
Configurar cuentas MySQL sin sentencias GRANT
Configurar conexiones seguras
13. Copias de seguridad, mantenimiento y reparación de bases de datos
Realizar labores de mantenimiento de la base de datos mientras se ejecuta el servidor
Evitar interacciones utilizando bloqueos internos
Bloquear una tabla para accesos de sólo lectura
Bloquear una tabla para acceso de lectura y escritura
Bloquear todas las bases de datos para accesos de lectura
Evitar interacciones utilizando bloqueos externos
Mantenimiento preventivo general
Utilizar las capacidades de auto-recuperación del servidor
Planificar el mantenimiento preventivo
Realizar copias de seguridad de las bases de datos
Hacer copias de seguridad con mysqldump
Hacer copias de seguridad binarias de bases de datos
Hacer una copia de seguridad binaria completa
Hacer una copia de seguridad binaria parcial
Hacer copias de seguridad con mysqlhotcopy
Hacer copias de seguridad de tablas InnoDB o BDB
Hacer copias de seguridad utilizando un esclavo de réplica
Utilizar una copia de seguridad para renombrar una base de datos
Copiar bases de datos a otro servidor
Copiar bases de datos utilizando un archivo de copia de seguridad
Copiar bases de datos utilizando una transferencia de red
Comprobar y reparar tablas de bases de datos
Utilizar CHECK TABLE para comprobar tablas
Utilizar REPAIR TABLE para reparar tablas
Utilizar mysqlcheck para comprobar y reparar tablas
Utilizar myisamchk para comprobar y reparar tablas
Comprobar tablas con myisamchk
Reparar tablas con myisamchk
Hacer que myisamchk se ejecute más rápido
Utilizar copias de seguridad para recuperar datos
Recuperar bases de datos enteras
Recuperar tablas individuales
Volver a ejecutar las sentencias de los archivos de registro de binarios
Recuperar tablas InnoDB con relaciones de claves externas
Hacer frente a los problemas de auto-recuperación de InnoDB o BDB
Parte IV. Apéndices
Apéndice A. Obtener e instalar el software
Obtener la distribución de la base de datos de ejemplo sampdb
Obtener MySQL y el software relacionado
Elegir una versión de MySQL
Instalación de MySQL en Unix
Visión preliminar de la instalación de MySQL en Unix
Crear una cuenta de acceso para el usuario MySQL
Obtener e instalar una distribución MySQL en Unix
Instalar un archivo de distribución binaria tar
Instalar una distribución RPM
Instalar una distribución fuente
Pasos posteriores a la instalación
Configurar la variable de entorno PATH
Inicializar la carpeta de datos y las tablas de autorizaciones
Iniciar el servidor
Instalar o actualizar tablas de sistema adicionales
Instalar el soporte Perl DBI en Unix
Instalar Apache y PHP en Unix
Instalar MySQL en Windows
Instalar el soporte Perl DBI en Windows
Instalar Apache y PHP en Windows
Instalar Connector/ODBC en Windows
Apéndice B. Referencia de tipos de datos
Tipos numéricos
Tipos enteros
Tipos de coma flotante
Tipos de coma fija
Tipo BIT
Tipos de cadena
Tipos de cadenas binarios
Tipos de cadenas no binarios
Tipos ENUM y SET
Tipos de fecha y hora
Tipos espaciales
Apéndice C. Referencia de operadores y funciones
Operadores
Precedencia de operadores
Operadores de agrupación
Operadores aritméticos
Operadores de comparación
Operadores de bits
Operadores lógicos
Operadores de conversión de tipos
Operadores de coincidencia de patrones
Funciones
Funciones de comparación
Funciones de conversión de tipos
Funciones numéricas
Funciones de cadena
Funciones de fecha y hora
Funciones de resumen
Funciones de seguridad y compresión
Funciones de bloqueo consultivo
Funciones espaciales
Funciones de conversión de formato de valores espaciales
Funciones de propiedades espaciales
Funciones de relaciones espaciales
Otras funciones
Apéndice D. Referencia de variables de sistema, estado y usuario
Variables de sistema
Variables de sistema sólo de sesión
Variables de estado
Variables de estado de contadores de sentencias
Variables de estado InnoDB
Variables de estado de la caché de consultas
Variables de estado SSL
Variables definidas por el usuario
Índice alfabético
Otros clientes que compraron MySQL, también compraron:
Otros libros de MYSQL: