Saltar al contenido

Diseñar tablas con CREATE TABLE.

Antes de guardar un solo dato, declaras la forma de la tabla: qué columnas tiene, de qué tipo, y qué restricciones aplica el motor por ti.

01Anatomía de un CREATE TABLE

CREATE TABLE productos (
  id       INT PRIMARY KEY AUTO_INCREMENT,
  nombre   VARCHAR(80) NOT NULL,
  precio   DECIMAL(10,2) DEFAULT 0,
  stock    INT NOT NULL DEFAULT 0
);
  • INT, VARCHAR(80), DECIMAL(10,2) son tipos.
  • PRIMARY KEY dice “esta columna identifica cada fila de forma única”.
  • NOT NULL prohíbe valores vacíos.
  • DEFAULT rellena un valor cuando el INSERT no lo especifica.
  • AUTO_INCREMENT hace que el motor invente el siguiente número él solo.

02Tipos que vas a usar 90% del tiempo

#
Numéricos
INT, BIGINT para enteros. DECIMAL(p,e) para dinero. FLOAT solo si no te importa la precisión.
A
Texto
VARCHAR(n) cuando hay límite razonable. TEXT para texto largo y libre.
τ
Fecha/hora
DATE solo fecha, TIMESTAMP incluye hora. Útiles para auditoría y reportes.
Lógicos
BOOLEAN verdadero/falso. En MySQL clásico se usa TINYINT(1).
Tip de profesor

Para dinero usa DECIMAL, nunca FLOAT. FLOAT aproxima y te va a regalar centavos perdidos en facturas.

03Laboratorio · construye tu primera tabla

Ejecuta el ejemplo, mira cómo aparece la tabla. Luego prueba con los chips de abajo para añadir columnas o crear más tablas — verás cómo el lienzo se reorganiza.

~/sql-labpostgres · in-memory
query.sql
CREATE TABLE productos (
  id       INT PRIMARY KEY AUTO_INCREMENT,
  nombre   VARCHAR(80) NOT NULL,
  precio   DECIMAL(10,2) DEFAULT 0,
  stock    INT NOT NULL DEFAULT 0
);
listo
Aún no hay tablas. Escribe CREATE TABLE y dale Ejecutar.

04Modificar el esquema con ALTER

Una tabla creada no es para siempre. ALTER TABLE te deja añadir columnas, quitarlas o renombrarlas — sin perder los datos existentes.

ALTER TABLE productos ADD COLUMN destacado BOOLEAN DEFAULT FALSE;
ALTER TABLE productos DROP COLUMN stock;
En producción

Cambiar el esquema con tráfico vivo se llama migración. Existen herramientas como Flyway, Liquibase o las migrations de Django/Rails que aplican cambios de forma versionada. Lección para más adelante.

05Desafíos · ponete a prueba

Tres retos de creación y modificación de esquema, de menor a mayor dificultad. Escribí tu consulta y dale Comprobar.

Creá una tabla llamada `empleados` con tres columnas: `id` (INT, clave primaria), `nombre` (VARCHAR(60), NOT NULL) y `salario` (DECIMAL(10,2)). Luego el sistema verificará que la estructura sea correcta.

Básico

La tabla `proyectos` ya existe con columnas `id` y `titulo`. Usando ALTER TABLE, agregale la columna `presupuesto` de tipo DECIMAL(12,2). El sistema verificará insertando una fila que use esa columna.

Intermedio

Creá una tabla llamada `asignaciones` con cuatro columnas: `id` (INT, clave primaria), `empleado_id` (INT, NOT NULL), `departamento_id` (INT, NOT NULL, clave foránea que referencia `departamentos(id)`) y `fecha` (DATE, NOT NULL). El sistema verificará insertando una fila válida.

Avanzado