Aprende a construir una base de datos en MySQL con comandos claros y decisiones sólidas: desde CREATE DATABASE con IF NOT EXISTS hasta el diseño de la tabla books con un ID autoincremental, tipos de datos correctos, restricciones NOT NULL y valores por defecto. Todo con enfoque práctico y listo para producción.
¿Cómo crear y validar una base de datos en MySQL?
Para comenzar, se crea la base separando operación y catálogo: CREATE DATABASE y el modificador IF NOT EXISTS evitan errores innecesarios y devuelven warnings cuando ya existe.
Usa IF NOT EXISTS para blindar el flujo sin fallar en error.
Verifica con SHOW WARNINGS para entender el motivo del aviso.
Diferencia entre error y query OK: afecta el control de flujo.
CREATEDATABASEIFNOTEXISTS platzi_operation;SHOWWARNINGS;-- explica si ya existía
¿Qué diferencia hay entre error y query OK?
Sin IF NOT EXISTS: causa error si la base ya existe.
Con IF NOT EXISTS: devuelve query OK y un warning amigable.
Impacto clave: control de flujo y experiencia del developer.
¿Cómo seleccionar y explorar la base de datos?
Selecciona el contexto con USE: cambia el puntero de la consola.
Lista bases con SHOW DATABASES.
Si no hay tablas, MySQL responde Empty set.
USE platzi_operation;SHOWDATABASES;
¿Cómo nombrar y crear la tabla books con best practices?
Usa nombres en plural y en inglés: books. Facilita la interoperabilidad por convention over configuration.
Nombre plural en inglés: books.
Evita ambigüedades en dominios y sistemas distintos.
Crea con IF NOT EXISTS para ejecuciones repetibles.
CREATETABLEIFNOTEXISTS books ( book_id INTUNSIGNEDPRIMARYKEYAUTO_INCREMENT-- más columnas abajo);
¿Por qué toda tabla necesita un ID autoincremental?
Identifica de forma única cada tupla con un entero autoincremental.
Considera el comportamiento: si borras el 3, el siguiente será el 4. No hay reutilización de IDs.
Nota clave: el máximo ID no equivale a la cardinalidad de la tabla.
¿Qué tipos de datos, restricciones y defaults aplicar?
Diseña cada columna como una característica del libro. Evita guardar binarios; mejor guarda referencias numéricas y URLs cuando corresponda.
¿Cómo manejar texto, nulos y longitud con VARCHAR?
title VARCHAR(100) NOT NULL: todo libro debe tener título.
Diferencia crítica: NULL no es lo mismo que cadena vacía "".
Piensa en desempeño: limita longitud según la búsqueda y el caso de uso.
ALTERTABLE books
ADDCOLUMN title VARCHAR(100)NOTNULL;
¿Por qué usar UNSIGNED e interpretar la cardinalidad?
UNSIGNED extiende el rango positivo al no almacenar el signo.
Útil para IDs y valores que nunca serán negativos.
Tipos de enteros: TINYINT, INT, BIGINT. Elige según el tamaño del dominio.
Banderas booleanas con TINYINT(1): 1 o 0 para estados como vendible.
ALTERTABLE books
ADDCOLUMN sellable TINYINT(1)NOTNULLDEFAULT1;-- true por defecto
Copias disponibles: entero no nulo; al menos 1 en la práctica.
ALTERTABLE books
ADDCOLUMN copies INTNOTNULL;
Descripción extensible con TEXT: elige entre TINYTEXT, TEXT y LONGTEXT según tamaño esperado.
ALTERTABLE books
ADDCOLUMN description TEXTNULL;
Punto a futuro: el autor no se guarda como texto libre, sino como referencia numérica a otra tabla vinculada por IDs, aprovechando comparaciones binarias eficientes.
¿Agregarías otra columna o ajustarías tipos y límites para tu caso? Cuéntalo en los comentarios y explica tu criterio.