viernes, 26 de junio de 2026

馃悩 Tipos de Datos en PostgreSQL

馃 ¿Qu茅 son los tipos de datos?

Un tipo de dato define qu茅 tipo de informaci贸n puede almacenarse en una columna de una tabla.

馃憠 Es una regla que garantiza que los datos tengan el formato correcto.

Ejemplo:

CREATE TABLE usuarios (

id INTEGER,

nombre VARCHAR(100),

activo BOOLEAN

);

  • INTEGER → solo n煤meros enteros

  • VARCHAR(100) → texto

  • BOOLEAN → verdadero/falso


馃摝 ¿Por qu茅 son importantes?

Elegir correctamente los tipos de datos:

  • ✅ Mejora el rendimiento

  • ✅ Ahorra espacio

  • ✅ Evita errores

  • ✅ Facilita validaciones

馃憠 Un mal dise帽o puede afectar seriamente tu aplicaci贸n.


馃敘 Tipos num茅ricos

馃敼 Enteros

Tipo

Descripci贸n

SMALLINT

Enteros peque帽os

INTEGER

Enteros comunes

BIGINT

Enteros grandes

✅ Ejemplo:

CREATE TABLE productos (

id SERIAL PRIMARY KEY,

stock INTEGER

);


馃敼 Decimales

Tipo

Uso

NUMERIC

Precisi贸n exacta

DECIMAL

Similar a NUMERIC

REAL

Punto flotante

DOUBLE PRECISION

Mayor precisi贸n flotante

✅ Ejemplo:

precio NUMERIC(10,2)

馃憠 Perfecto para dinero (evitar float).


馃敜 Tipos de texto

Tipo

Descripci贸n

CHAR(n)

Longitud fija

VARCHAR(n)

Longitud variable con l铆mite

TEXT

Longitud ilimitada

✅ Ejemplo:

nombre VARCHAR(100),

descripcion TEXT

馃挕 Recomendaci贸n:

  • Usa TEXT en la mayor铆a de casos (PostgreSQL lo maneja muy bien)


馃搮 Tipos de fecha y tiempo

Tipo

Descripci贸n

DATE

Fecha

TIME

Hora

TIMESTAMP

Fecha y hora

TIMESTAMPTZ

Fecha y hora con zona horaria

✅ Ejemplo:

created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

馃憠 Muy usados para auditor铆a.


✅ Tipo booleano

activo BOOLEAN

Valores posibles:

  • TRUE

  • FALSE

  • NULL

✅ Ejemplo:

SELECT * FROM usuarios WHERE activo = TRUE;


馃攽 Tipos auto-incrementales

PostgreSQL tiene formas modernas de generar IDs autom谩ticamente.

馃敼 SERIAL (cl谩sico)

id SERIAL PRIMARY KEY


馃敼 IDENTITY (recomendado moderno)

id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY

馃憠 Mejor pr谩ctica en versiones recientes.


馃З Tipos JSON

PostgreSQL soporta datos tipo NoSQL:

Tipo

Descripci贸n

JSON

Texto JSON

JSONB

JSON binario (m谩s eficiente)

✅ Ejemplo:

config JSONB

Insert:

INSERT INTO settings (config)

VALUES ('{"tema": "oscuro", "idioma": "es"}');

馃憠 JSONB es el m谩s usado.


馃摎 Arrays

PostgreSQL permite arrays directamente:

tags TEXT[]

✅ Ejemplo:

INSERT INTO posts (tags)

VALUES (ARRAY['postgres', 'sql', 'tutorial']);


馃實 UUID

Para identificadores 煤nicos globales:

id UUID

✅ Ejemplo:

id UUID DEFAULT gen_random_uuid()

馃憠 Muy usado en microservicios.


馃搷 Tipos especiales interesantes

馃敼 ENUM

Permite valores definidos:

CREATE TYPE estado AS ENUM ('pendiente', 'enviado', 'entregado');


CREATE TABLE pedidos (

id SERIAL,

estado estado

);


馃敼 BYTEA

Para almacenar binarios:

archivo BYTEA


⚖️ ¿C贸mo elegir el tipo adecuado?

✅ Reglas pr谩cticas

  • N煤meros → INTEGER o BIGINT

  • Dinero → NUMERIC(10,2)

  • Texto → TEXT o VARCHAR

  • Fechas → TIMESTAMP

  • JSON → JSONB

  • IDs → IDENTITY o UUID


馃毇 Errores comunes

❌ Usar VARCHAR en todo

precio VARCHAR(50)  -- mala pr谩ctica

✅ Mejor:

precio NUMERIC(10,2)

``


❌ Usar FLOAT para dinero

Puede generar errores de precisi贸n.


❌ Sobredimensionar campos

VARCHAR(1000) para nombre


馃И Ejemplo completo

CREATE TABLE usuarios (

id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,

nombre VARCHAR(100),

email TEXT,

edad INTEGER,

activo BOOLEAN DEFAULT TRUE,

saldo NUMERIC(10,2),

preferencias JSONB,

creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP

);


馃挕 Buenas pr谩cticas

  • Prefiere TEXT sobre VARCHAR cuando no necesitas l铆mite

  • Usa NUMERIC para valores financieros

  • Usa TIMESTAMPTZ si trabajas con diferentes zonas horarias

  • Evita tipos innecesariamente grandes

  • Usa JSONB en lugar de JSON

  • Prefiere IDENTITY en lugar de SERIAL


✅ Conclusi贸n

Los tipos de datos son la base de un buen dise帽o en PostgreSQL. Elegirlos correctamente no solo mejora el rendimiento, sino que tambi茅n garantiza la integridad y escalabilidad de tu sistema.


No hay comentarios:

Publicar un comentario

馃悩 Tipos de Datos en PostgreSQL