CREATE TABLE y tipos de datos
Hasta ahora usaste tablas que ya existían. Ahora aprendés a crearlas: elegir tipos de datos, definir restricciones (constraints) que protejan la integridad de los datos, y diseñar esquemas relacionales con claves primarias y foráneas.
Concepto teórico
CREATE TABLE — definir la estructura
CREATE TABLE clientes (
id INTEGER PRIMARY KEY,
nombre TEXT NOT NULL,
cuit TEXT UNIQUE NOT NULL,
ciudad TEXT DEFAULT 'Buenos Aires',
score INTEGER CHECK (score BETWEEN 0 AND 999),
saldo REAL DEFAULT 0,
activo INTEGER DEFAULT 1,
fecha_alta TEXT DEFAULT (date('now'))
);
Tipos de datos principales
| Tipo SQLite | Equivalente PostgreSQL | Uso | Ejemplo |
|---|---|---|---|
INTEGER |
INT / BIGINT |
Números enteros, IDs, conteos | 42, -5, 0 |
REAL |
FLOAT / NUMERIC |
Decimales, saldos, tasas | 3.14, 150000.50 |
TEXT |
VARCHAR / TEXT |
Strings, nombres, descripciones | 'García', 'BsAs' |
BLOB |
BYTEA |
Datos binarios (raro en análisis) | Imágenes, archivos |
| (no nativo) | DATE / TIMESTAMP |
Fechas (en SQLite se usa TEXT) | '2025-03-15' |
| (no nativo) | BOOLEAN |
Verdadero/Falso (SQLite usa INTEGER 0/1) | 0, 1 |
Constraints — proteger los datos
| Constraint | Qué hace | Ejemplo |
|---|---|---|
PRIMARY KEY |
Identificador único de cada fila (no nulo, no repetido) | id INTEGER PRIMARY KEY |
NOT NULL |
No permite valores nulos | nombre TEXT NOT NULL |
UNIQUE |
No permite duplicados | cuit TEXT UNIQUE |
DEFAULT |
Valor automático si no se especifica | activo INTEGER DEFAULT 1 |
CHECK |
Validación de rango/condición | CHECK (score BETWEEN 0 AND 999) |
FOREIGN KEY |
Referencia a otra tabla | FOREIGN KEY (cliente_id) REFERENCES clientes(id) |
FOREIGN KEY — relaciones entre tablas
CREATE TABLE cuentas (
id INTEGER PRIMARY KEY,
cliente_id INTEGER NOT NULL,
tipo TEXT NOT NULL,
saldo REAL DEFAULT 0,
FOREIGN KEY (cliente_id) REFERENCES clientes(id)
);
La FK garantiza que cliente_id en cuentas SIEMPRE corresponda a un id válido en
clientes. Si intentás insertar un cliente_id que no existe, da error.
ALTER TABLE y DROP TABLE
-- Agregar columna ALTER TABLE clientes ADD COLUMN email TEXT; -- Renombrar tabla ALTER TABLE clientes RENAME TO clientes_backup; -- Eliminar tabla (IRREVERSIBLE) DROP TABLE IF EXISTS clientes_temp;
IF EXISTS evita error si la tabla no existe. En producción, NUNCA hagas DROP sin backup previo.
Ejemplos explicados paso a paso
Ejemplo 1: CREATE TABLE con constraints
Hacé clic en ▶ Ejecutar
Ejemplo 2: FOREIGN KEY — relación clientes-cuentas
Hacé clic en ▶ Ejecutar
Ejemplo 3: Constraints en acción — rechazar datos inválidos
Hacé clic en ▶ Ejecutar
Ejemplo 4: Diseño multi-tabla con esquema completo
Hacé clic en ▶ Ejecutar
Ejemplo 5: ALTER TABLE y CREATE TABLE AS (tabla desde query)
Hacé clic en ▶ Ejecutar
Referencia rápida
| Sentencia DDL | Acción |
|---|---|
CREATE TABLE t (cols) |
Crear tabla nueva |
CREATE TABLE t AS SELECT ... |
Crear tabla desde query |
ALTER TABLE t ADD COLUMN c tipo |
Agregar columna |
ALTER TABLE t RENAME TO nuevo |
Renombrar tabla |
DROP TABLE IF EXISTS t |
Eliminar tabla (irreversible) |
Ejercicios
Ejercicio 1: CREATE TABLE simple
Creá una tabla productos con id (PK), nombre (NOT NULL), precio (REAL) y stock (INTEGER DEFAULT
0). Insertá 2 productos. Debe incluir Notebook.
Hacé clic en ▶ Ejecutar
Ejercicio 2: NOT NULL y DEFAULT
Creá tabla clientes donde nombre es NOT NULL y activo tiene DEFAULT 1. Insertá un cliente sin
especificar activo. Debe incluir 1.
Hacé clic en ▶ Ejecutar
Ejercicio 3: UNIQUE constraint
Creá tabla con CUIT UNIQUE. Insertá 2 clientes con CUITs distintos. Debe incluir UNIQUE (en el
CREATE).
Hacé clic en ▶ Ejecutar
Ejercicio 4: CHECK constraint
Creá tabla con CHECK que score esté entre 0 y 999. Insertá un cliente válido. Debe incluir 720.
Hacé clic en ▶ Ejecutar
Ejercicio 5: FOREIGN KEY
Creá tablas clientes y cuentas con FK. Insertá datos y hacé un JOIN. Debe incluir CA$.
Hacé clic en ▶ Ejecutar
Ejercicio 6: ALTER TABLE
Creá tabla, después agregá columna email con ALTER TABLE. Debe incluir email.
Hacé clic en ▶ Ejecutar
Ejercicio 7: CREATE TABLE AS SELECT
Creá una tabla resumen a partir de un SELECT agrupado. Debe incluir Buenos Aires.
Hacé clic en ▶ Ejecutar
Ejercicio 8: Esquema de 3 tablas relacionadas
Diseñá: sucursales → clientes → cuentas con PKs y FKs. Insertá datos y verificá. Debe incluir
Centro.
Hacé clic en ▶ Ejecutar
Ejercicio 9: CHECK + tipo restringido con IN
Creá tabla donde tipo solo acepta 'compra', 'venta' o 'transferencia'. Debe incluir
compra.
Hacé clic en ▶ Ejecutar
Ejercicio 10: Diseño completo + poblar + reporte
Diseñá un esquema bancario de 3 tablas con todos los constraints. Poblalo con datos. Generá un reporte con
JOINs. Debe incluir ESQUEMA.
Hacé clic en ▶ Ejecutar
Resumen y conexión
CREATE TABLEdefine estructura con tipos y constraints.- Constraints: PRIMARY KEY, NOT NULL, UNIQUE, DEFAULT, CHECK, FOREIGN KEY.
- FOREIGN KEY conecta tablas garantizando integridad referencial.
ALTER TABLEagrega columnas.DROP TABLEelimina tablas (irreversible).CREATE TABLE AS SELECTcrea tablas desde consultas.
En la siguiente lección (14 · Caso práctico) vas a aplicar TODO lo aprendido en un análisis completo sobre un dataset multi-tabla.