BD InteractivaBase de Datos II · ISFD Mercedes

← Catálogo · Antes: Leer un esquema

Semana 3 · Material complementario

Crear una tabla: del CREATE TABLE al DESCRIBE

Al terminar vas a poderescribir un CREATE TABLE con columnas, tipos y clave primaria; explicar qué comprueba el servidor antes de crearla; y reconocer los errores más comunes por su mensaje.

1. DDL: el lenguaje de la estructura

Hasta ahora leíste bases que ya existían. DDL (Data Definition Language) es la parte de SQL que crea y modifica la estructura; no toca los datos. Hoy usamos CREATE: primero la base (CREATE DATABASE y USE), después cada tabla. La ficha que aprendiste a leer con DESCRIBE es exactamente lo que escribís acá.

2. Seguí la sentencia hasta que la tabla existe

Elegí una tabla y avanzá paso a paso: vas a ver cómo el servidor revisa la sintaxis, comprueba las reglas, guarda la definición en el catálogo y confirma. Al final, DESCRIBE muestra qué quedó. Probá también provocar un error: el servidor lo detecta en un paso y la tabla no se crea.

SEMANA 3 · SIMULACIÓN DIDÁCTICA

Crear una tabla: del CREATE TABLE al DESCRIBE

Qué se simplifica

Es una simulación con datos de ejemplo: no se conecta a MySQL ni ejecuta SQL real. Los mensajes de error y las fichas son los que devolvió MySQL 8.0.30 al ejecutar estas mismas sentencias en una instancia temporal. En MariaDB algunos textos y tipos cambian (por ejemplo int(11)).

Cargando la simulación…Si no aparece, tu navegador tiene desactivado JavaScript, que esta animación necesita.

3. Anatomía de una columna

Cada línea entre paréntesis es una columna: nombre TIPO restricciones. Se separan con coma, menos la última.

ElementoQué haceEn la ficha de DESCRIBE
NOT NULLLa columna es obligatoriaNull = NO
UNIQUEEl valor no puede repetirse (acepta NULL)Key = UNI
DEFAULT valorValor automático si no se indicaDefault = ese valor
AUTO_INCREMENTEl servidor numera solo: 1, 2, 3…Extra = auto_increment
PRIMARY KEY (id)Identifica de forma única cada filaKey = PRI
ENGINE=InnoDBEl motor de almacenamiento (en S9 vemos por qué InnoDB)No aparece en DESCRIBE

4. La clave primaria

La clave primaria identifica de forma única cada fila: no se repite, no puede ser NULL y hay una sola por tabla. En este curso usamos una clave artificial numérica llamada id con AUTO_INCREMENT, y marcamos los datos naturales (como el dni) como UNIQUE: un dato del mundo real puede tener errores o cambiar.

Con AUTO_INCREMENT no escribís el id al insertar: el servidor pone el siguiente número. Si borrás la fila 5, el próximo no reutiliza el 5.

5. Clínica de errores de CREATE TABLE

Todos estos los podés provocar en el recurso de arriba, con el mensaje real de MySQL.

MensajeCausa típicaArreglo
ERROR 1064 … near ') ENGINE=InnoDB'Una coma de más antes del ) finalSacar la coma de la última línea
ERROR 1064 … near 'NOT NULL,…'Falta el largo de un VARCHARVARCHAR(80)
ERROR 1075: Incorrect table definition…AUTO_INCREMENT sin ser claveAgregar PRIMARY KEY (id)
ERROR 1068: Multiple primary key definedDos PRIMARY KEYDejar una sola
ERROR 1046: No database selectedFalta USEUSE biblioteca;
ERROR 1050: Table '…' already existsYa la creasteDROP TABLE o IF NOT EXISTS

Estrategia: el mensaje cita desde dónde no entendió. El error casi siempre está justo antes: revisá la línea anterior (¿falta una coma?, ¿un paréntesis?).

6. Autoevaluación

  1. ¿Qué diferencia hay entre NOT NULL y PRIMARY KEY?
  2. ¿Por qué dni es UNIQUE y no la clave primaria?
  3. Borraste la fila con id = 5. ¿Qué id recibe el próximo INSERT?
  4. En el recurso, ¿por qué activo BOOLEAN aparece como tinyint(1) en DESCRIBE?
Ver las respuestas
  1. NOT NULL obliga a que haya valor; PRIMARY KEY además exige que sea único y sirve para identificar la fila.
  2. Porque un dato del mundo real puede tener errores o cambiar; la clave artificial es estable. UNIQUE igual impide repetidos.
  3. El siguiente número del contador (6 o más): AUTO_INCREMENT no reutiliza ids.
  4. MySQL no tiene un tipo booleano propio: BOOLEAN es otro nombre de TINYINT(1), y TRUE se guarda como 1.

Para insertar en el aula

Copiá este código y pegalo en el editor del aula, en la vista de código fuente (HTML). Usa solo atributos, sin estilos, porque el editor del aula suele quitarlos. Incluye allowfullscreen para que el botón de pantalla completa funcione dentro del aula.

Ver el código