Chapter 8. Tipos de datos

Table of Contents

8.1. Tipos numéricos
8.1.1. Tipos enteros
8.1.2. Números de precisión arbitraria
8.1.3. Tipos de punto flotante
8.1.4. Tipos serial
8.2. Monetary Types
8.3. Character Types
8.4. Binary Data Types
8.4.1. bytea Hex Format
8.4.2. bytea Escape Format
8.5. Tipos de fecha y hora
8.5.1. Entrada de fecha y hora
8.5.2. Salida de fecha y hora
8.5.3. Zonas horarias
8.5.4. Entrada de intervalos
8.5.5. Salida de intervalos
8.6. Tipo booleano
8.7. Tipos enumerados
8.7.1. Declaración de tipos enumerados
8.7.2. Ordenación
8.7.3. Seguridad de tipos
8.7.4. Detalles de implementación
8.8. Tipos geométricos
8.8.1. Puntos (points)
8.8.2. Líneas (lines)
8.8.3. Segmentos de línea (lsegs)
8.8.4. Cajas (boxes)
8.8.5. Rutas (paths)
8.8.6. Polígonos (polygons)
8.8.7. Círculos (circles)
8.9. Tipos de direcciones de red
8.9.1. inet
8.9.2. cidr
8.9.3. inet vs. cidr
8.9.4. macaddr
8.9.5. macaddr8
8.10. Tipos de cadenas de bits
8.11. Tipos de búsqueda de texto
8.11.1. tsvector
8.11.2. tsquery
8.12. Tipo UUID
8.13. Tipo XML
8.13.1. Creación de valores XML
8.13.2. Manejo de codificaciones
8.13.3. Acceso a valores XML
8.14. Tipos JSON
8.14.1. Sintaxis de entrada y salida de JSON
8.14.2. Diseño de documentos JSON
8.14.3. Contención y existencia de jsonb
8.14.4. Indexación de jsonb
8.14.5. Subindizado de jsonb
8.14.6. Transformaciones
8.14.7. Tipo jsonpath
8.15. Arrays
8.15.1. Declaración de tipos de arrays
8.15.2. Entrada de valores de arrays
8.15.3. Acceso a arrays
8.15.4. Modificación de arrays
8.15.5. Búsqueda en arrays
8.15.6. Sintaxis de entrada y salida de arrays
8.16. Tipos compuestos
8.16.1. Declaración de tipos compuestos
8.16.2. Construcción de valores compuestos
8.16.3. Acceso a tipos compuestos
8.16.4. Modificación de tipos compuestos
8.16.5. Uso de tipos compuestos en consultas
8.16.6. Sintaxis de entrada y salida de tipos compuestos
8.17. Tipos de rangos (Range Types)
8.17.1. Tipos de rangos y multirangos integrados
8.17.2. Ejemplos
8.17.3. Límites inclusivos y exclusivos
8.17.4. Rangos infinitos (no acotados)
8.17.5. Entrada/Salida de rangos
8.17.6. Construcción de rangos y multirangos
8.17.7. Tipos de rangos discretos
8.17.8. Definición de nuevos tipos de rangos
8.17.9. Indexación
8.17.10. Restricciones en rangos
8.18. Tipos de dominios
8.19. Tipos de identificadores de objetos (OIDs)
8.20. Tipo pg_lsn
8.21. Pseudotipos

PostgreSQL tiene un rico conjunto de tipos de datos nativos disponibles para los usuarios. Los usuarios pueden añadir nuevos tipos a PostgreSQL usando el comando CREATE TYPE.

La Table 8.1 muestra todos los tipos de datos incorporados de propósito general. La mayoría de los nombres alternativos listados en la columna Alias son los nombres usados internamente por PostgreSQL por razones históricas. Además, algunos tipos usados internamente o obsoletos están disponibles, pero no se listan aquí.

Table 8.1. Tipos de datos

NombreAliasDescripción
bigintint8entero con signo de ocho bytes
bigserialserial8entero autoincrementable de ocho bytes
bit [ (n) ] cadena de bits de longitud fija
bit varying [ (n) ]varbit [ (n) ]cadena de bits de longitud variable
booleanboolbooleano lógico (verdadero/falso)
box caja rectangular en un plano
bytea datos binarios (arreglo de bytes)
character [ (n) ]char [ (n) ]cadena de caracteres de longitud fija
character varying [ (n) ]varchar [ (n) ]cadena de caracteres de longitud variable
cidr dirección de red IPv4 o IPv6
circle círculo en un plano
date fecha del calendario (año, mes, día)
double precisionfloat, float8número de punto flotante de doble precisión (8 bytes)
inet dirección de host IPv4 o IPv6
integerint, int4entero con signo de cuatro bytes
interval [ fields ] [ (p) ] intervalo de tiempo
json datos JSON textuales
jsonb datos JSON binarios, descompuestos
line línea infinita en un plano
lseg segmento de línea en un plano
macaddr dirección MAC (Media Access Control)
macaddr8 dirección MAC (Media Access Control) (formato EUI-64)
money cantidad monetaria
numeric [ (p, s) ]decimal [ (p, s) ]numérico exacto de precisión seleccionable
path ruta geométrica en un plano
pg_lsn Número de Secuencia de Registro (LSN) de PostgreSQL
pg_snapshot instantánea de ID de transacción a nivel de usuario
point punto geométrico en un plano
polygon ruta geométrica cerrada en un plano
realfloat4número de punto flotante de precisión simple (4 bytes)
smallintint2entero con signo de dos bytes
smallserialserial2entero autoincrementable de dos bytes
serialserial4entero autoincrementable de cuatro bytes
text cadena de caracteres de longitud variable
time [ (p) ] [ without time zone ] hora del día (sin zona horaria)
time [ (p) ] with time zonetimetzhora del día, incluyendo zona horaria
timestamp [ (p) ] [ without time zone ] fecha y hora (sin zona horaria)
timestamp [ (p) ] with time zonetimestamptzfecha y hora, incluyendo zona horaria
tsquery consulta de búsqueda de texto
tsvector documento de búsqueda de texto
txid_snapshot instantánea de ID de transacción a nivel de usuario (obsoleto; ver pg_snapshot)
uuid identificador único universal
xml datos XML

Compatibilidad

Los siguientes tipos (o sus variantes de escritura) están especificados por SQL: bigint, bit, bit varying, boolean, char, character varying, character, varchar, date, double precision, integer, interval, numeric, decimal, real, smallint, time (con o sin zona horaria), timestamp (con o sin zona horaria), xml.

Cada tipo de datos tiene una representación externa determinada por sus funciones de entrada y salida. Muchos de los tipos incorporados tienen formatos externos obvios. Sin embargo, varios tipos son únicos de PostgreSQL, como las rutas geométricas, o tienen varios formatos posibles, como los tipos de fecha y hora. Algunas de las funciones de entrada y salida no son invertibles, es decir, el resultado de una función de salida podría perder precisión al compararse con la entrada original.