Modificar tablas con ALTER TABLE en MySQL
Clase 23 de 24 • Curso de SQL y MySQL 2018
Contenido del curso
CREATE
INSERT
Bash y archivos SQL
SELECT
Consultas en MySQL
Contenido Bonus
Modificar tablas y respaldar bases de datos en MySQL puede ser seguro y eficiente si dominas los comandos adecuados. Aquí verás cómo usar ALTER TABLE para agregar, cambiar y eliminar columnas con cuidado, y cómo mysqldump crea respaldos completos o solo de schema para versionar sin riesgos.
¿Cómo modificar tablas con ALTER TABLE en MySQL?
Cambiar el esquema es común y debe hacerse con precisión. El comando ALTER TABLE permite añadir, reordenar, modificar tipos y borrar columnas. El consejo central: consulta la documentación oficial y respalda antes de alterar; un error puede comprometer datos y estructura.
¿Cómo agregar columnas con add column y default?
- Agrega un campo al final o colócalo con AFTER o FIRST.
- Define un DEFAULT para valores por omisión.
Ejemplo de agregado con posición y default:
ALTER TABLE authors
ADD COLUMN birth_year INTEGER AFTER name DEFAULT 1930;
Verifica con DESC:
DESC authors;
Puntos clave: - ADD COLUMN crea el campo nuevo. - AFTER name posiciona la columna debajo de name. - DEFAULT 1930 asigna valor por defecto.
¿Cómo cambiar tipos con modify y ordenar columnas con after/first?
- Usa MODIFY COLUMN para cambiar tipo y default sin borrar datos.
ALTER TABLE authors
MODIFY COLUMN birth_year YEAR DEFAULT 1920;
Notas prácticas: - FIRST coloca una columna al inicio. Úsalo con criterio; el identificador suele ir primero. - Revisa con DESC authors tras cada cambio.
¿Cuándo usar drop column y por qué tener cuidado?
- DROP COLUMN elimina una columna de forma permanente. Máximo cuidado.
ALTER TABLE authors
DROP COLUMN birth_year;
Prevención rápida: - Haz un respaldo antes de un DROP. - Valida en ambiente de pruebas. - Documenta los cambios del esquema.
Tip adicional para explorar nombres:
SHOW TABLES LIKE '%i%';
Esto filtra tablas por patrón con LIKE.
¿Cómo respaldar y versionar con mysqldump?
La herramienta del sistema mysqldump exporta una base completa o solo su schema. Diferencia crucial: los datos se respaldan; el esquema se versiona junto al código. Versionar datos no es práctico.
¿Cuál es la diferencia entre esquema y datos?
- Esquema y datos: ideal para un respaldo local completo.
- Solo esquema: perfecto para control de versiones y migraciones.
Contenido típico del volcado completo: - Variables del entorno de creación. - Instrucciones para crear base y tablas. - Inserts con múltiples filas por tabla.
¿Qué banderas usar: -u, -p, --host, -D?
Comandos base similares al prompt de MySQL:
mysqldump -u root -p <base_de_datos>
Servidor remoto con --host:
mysqldump -u root -p --host=IP_o_dominio <base_de_datos>
Solo esquema (sin datos). En la sesión se indicó "menos D" para esto:
mysqldump -u root -p -D <base_de_datos>
¿Cómo redirigir salida y paginar con more?
- Paginar salida en consola con more.
mysqldump -u root -p -D <base_de_datos> | more
- Guardar a archivo con redirección "mayor que" para versionar el schema:
mysqldump -u root -p -D <base_de_datos> > esquema.sql
Claves de uso seguro: - Respalda antes de alteraciones mayores. - Versiona solo el esquema; no versionar datos. - Documenta banderas usadas y contexto del volcado.
¿Qué buenas prácticas fortalecen el diseño y rendimiento?
El diseño de la base de datos es el corazón del rendimiento de una aplicación. Un esquema bien normalizado y relaciones claras evitan cuellos de botella. Optimizar consultas puede aportar microsegundos valiosos cuando el tráfico crece.
Recomendaciones prácticas: - La documentación es tu aliada: confirma sintaxis de ALTER TABLE, ADD/MODIFY/DROP, AFTER/FIRST, DESC, SHOW TABLES LIKE. - Respalda con mysqldump antes de cambios estructurales. - Versiona el esquema junto al código; mantén un archivo como esquema.sql. - Usa patrones con LIKE para inspeccionar rápidamente tablas. - Consulta foros como Stack Overflow con preguntas claras y contexto. - Evita decisiones que resten rendimiento; piensa en normalización y relaciones desde el inicio.
¿Tienes dudas o quieres compartir tu estrategia para respaldos y cambios de esquema? Comenta y conversemos sobre tus prácticas con MySQL.