Contenido del curso
CREATE
INSERT
Bash y archivos SQL
SELECT
Consultas en MySQL
Contenido Bonus
Crear tablas con relaciones lógicas en MySQL




Todos los cursos GRATIS
Resumen
Construir bases de datos confiables empieza por definir relaciones lógicas claras y aplicar buenas prácticas al crear tablas. Aquí verás cómo vincular columnas por ID, leer errores y warnings útiles de MySQL, inspeccionar estructuras con comandos esenciales y evitar pérdidas irreversibles con DROP, todo con un enfoque práctico y directo.
¿Cómo se relacionan lógicamente las tablas sin claves foráneas?
En este enfoque, la relación entre tablas es lógica, no dura: no hay restricción activa y puede existir un libro sin autor. La vinculación se hace por ID coincidentes y tipos de datos iguales en ambas tablas.
- Usa el mismo tipo y atributos en las columnas relacionadas: por ejemplo, INT UNSIGNED en ambas tablas.
- Define la llave primaria solo en la tabla dueña del dato (authors), y como entero simple en la referenciada (books).
- Aclara criterios de nulabilidad: por ejemplo, nombre NOT NULL y país opcional.
- Adopta una convención de estilo: palabras reservadas en mayúsculas y nombres de tablas/columnas en minúsculas para mejorar lectura.
Ejemplo de tabla de autores y referencia lógica en books:
CREATE TABLE IF NOT EXISTS authors ( author_id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL, country_code VARCHAR(3) NULL ); -- En books, author_id es solo referencia lógica (no PRIMARY KEY) -- Debe coincidir el tipo: INT UNSIGNED. ALTER TABLE books ADD COLUMN author_id INT UNSIGNED;
Claves prácticas:
- PRIMARY KEY y AUTO_INCREMENT donde nace el dato (authors).
- En la otra tabla, la columna es solo referencia y no controla la operación de esa tabla.
- Mantén coherencia de tipos siempre que una columna relacione dos o más tablas.
¿Qué buenas prácticas y comandos evitan errores al crear tablas?
MySQL ofrece mensajes de error y warnings muy descriptivos. Úsalos a tu favor y protege tus workflows.
- Crea tablas de forma idempotente con IF NOT EXISTS.
- Verifica si ya existen tablas con SHOW TABLES.
- Lee advertencias con SHOW WARNINGS si ves “One warning”.
- Comprueba contenido inicial con SELECT.
Fragmentos útiles:
-- Crear sin romper el flujo si la tabla ya existe CREATE TABLE IF NOT EXISTS authors (...); -- Ver tablas disponibles SHOW TABLES; -- Consultar advertencias tras un “Query OK, 1 warning” SHOW WARNINGS; -- Verificar que está vacía SELECT * FROM authors;
Cuidado extremo con DROP: es un “delete sin papelera”. Borra estructura y datos.
-- Confirmar dos veces antes de ejecutar DROP TABLE authors; -- irreversible sin respaldo
Notas clave:
- IF NOT EXISTS evita errores que pueden romper un workflow automatizado.
- Un warning no rompe la ejecución, pero debe revisarse.
- DROP elimina todo; más adelante se puede usar TRUNCATE cuando solo se requiere vaciar, no borrar estructura.
¿Cómo inspeccionar estructura, comentarios y palabras reservadas?
Antes de modificar o consultar, entiende la estructura con comandos de inspección. Además, evita choques con palabras reservadas usando comillas invertidas.
- Usa DESCRIBE o su acrónimo DESC para ver columnas y tipos.
- Emplea SHOW FULL COLUMNS FROM para ver comentarios, collation y privilegios.
- Si una columna necesita un nombre reservado (p. ej., YEAR), encierra el identificador con
backticks.
Comandos clave:
-- Estructura de una tabla DESCRIBE authors; DESC books; -- Estructura ampliada: comentarios y más metadatos SHOW FULL COLUMNS FROM books; -- Evitar ambigüedades con palabras reservadas CREATE TABLE ejemplo ( `year` INT, -- nombre reservado protegido `sum` DOUBLE -- otro ejemplo de identificador sensible );
Habilidades y conceptos reforzados:
- Relaciones lógicas por ID: coherencia de tipos y ausencia de restricción física.
- Convención de estilo: SQL en mayúsculas; identificadores en minúsculas para lectura clara.
- Tipos de datos: INT, DOUBLE, VARCHAR, TINYINT como bandera booleana.
- Nulabilidad: uso de NOT NULL y posibilidad de NULL donde aplica (p. ej., country_code).
- Manejo de errores y warnings: lectura del mensaje “near ...” y uso de SHOW WARNINGS.
- Seguridad operativa: uso responsable de DROP TABLE.
- Metadatos de columnas: comentarios, collation y permisos con SHOW FULL COLUMNS.
- Identificadores con backticks: protección ante palabras reservadas y definición de alias sin ambigüedades.
Más adelante, se aplicarán tipos de fecha y se construirá la tabla de clientes como pilar del proyecto, integrando estos principios desde el diseño.
¿Tienes dudas o quieres compartir una práctica que te funcione? Deja tu comentario y conversemos.