La forma general
CREATE TABLE productos ( id INTEGER PRIMARY KEY, codigo VARCHAR(20) NOT NULL UNIQUE, nombre VARCHAR(100) NOT NULL, precio INTEGER CHECK (precio >= 0), stock INTEGER DEFAULT 0 );
Qué significa cada regla
| Regla | Qué hace |
|---|---|
PRIMARY KEY | Identifica cada fila. |
NOT NULL | No deja la columna vacía. |
UNIQUE | No permite valores repetidos. |
DEFAULT | Pone un valor si no se indica otro. |
CHECK | Exige una condición. |
Tipos de datos por base
| Dato | PostgreSQL | MySQL | SQLite | SQL Server |
|---|---|---|---|---|
| Entero | INTEGER | INT | INTEGER | INT |
| Entero grande | BIGINT | BIGINT | INTEGER | BIGINT |
| Monto exacto | NUMERIC(12,2) | DECIMAL(12,2) | Entero en la unidad menor | DECIMAL(12,2) |
| Texto corto | VARCHAR(n) | VARCHAR(n) | TEXT | NVARCHAR(n) |
| Texto largo | TEXT | TEXT | TEXT | NVARCHAR(MAX) |
| Fecha | DATE | DATE | TEXT | DATE |
| Verdadero o falso | BOOLEAN | TINYINT(1) | INTEGER | BIT |
Tres errores comunes
- Guardar montos en punto flotante.
FLOATredondea. Para dinero usa un decimal exacto, o enteros si manejas pesos. - Guardar códigos como número. Un código con ceros adelante debe ser texto.
- Guardar fechas en cualquier formato. Usa el tipo DATE, o texto AAAA-MM-DD en SQLite.
Si ya tienes los datos en una planilla, CSV a SQL escribe la tabla por ti.
Fuente para SQLite: tipos de datos.
Preguntas frecuentes
¿Cuál es la diferencia entre VARCHAR y TEXT?
VARCHAR tiene largo máximo; TEXT, en general, no. En PostgreSQL rinden igual. En SQLite todo se guarda como TEXT.
¿Cómo agrego una columna después?
Con ALTER TABLE productos ADD COLUMN peso INTEGER;
Revisado el 6 de noviembre de 2026.