PostgreSQL Tipos de datos: Numérico, Carácter, Byte

⚡ Resumen inteligente

PostgreSQL Los tipos de datos definen el tipo de valor que puede almacenar cada columna, abarcando categorías como caracteres, numéricos, binarios, fecha y hora, booleanos, geométricos, de red, UUID, XML y JSON. PostgreSQL También permite a los usuarios crear tipos personalizados con el comando CREATE TYPE.

  • 🔤 Tipos de personajes: CHAR, VARCHAR y TEXT almacenan valores de texto de longitud fija, longitud variable y longitud ilimitada, respectivamente.
  • 🔢 Tipos numéricos: Los tipos de datos enteros y de punto flotante abarcan desde smallint hasta bigint, además de valores numéricos y decimales exactos.
  • 🕒 Fecha y hora: Los tipos de marca de tiempo, fecha, hora e intervalo ofrecen una precisión de microsegundos con zonas horarias opcionales.
  • Booleano y enumeración: Los tipos booleanos pueden ser verdaderos, falsos o nulos, mientras que los tipos enumerados modelan conjuntos fijos que rara vez cambian.
  • 🌐 Tipos especializados: Los formatos de red, geométricos, UUID, XML, JSON y JSONB manejan direcciones, formas, identificadores y datos estructurados.
  • ???? Mejora la práctica: Utilice el tipo de dato TEXTO para las cadenas de texto y NUMÉRICO para los números, y cree tipos personalizados solo cuando sea necesario.

PostgreSQL ofrece un amplio conjunto de tipos de datos nativos para los usuarios. Los usuarios pueden agregar nuevos tipos con la ayuda del comando CREATE TYPE. También hace que las consultas sean más sencillas y legibles.

Tipos de datos en PostgreSQL

PostgreSQL Admite los siguientes tipos de datos:

  • Tipos de texto
  • Tipos numéricos
  • Fechas y horas
  • XML
  • JSON
  • Boolean
  • Bits
  • Datos binarios
  • Network
  • Matrices
  • Crea tu tipo de datos
  • Temporal
  • UUID
  • Tipos de datos especiales para almacenar una dirección de red y datos geométricos.

Estudiemos PostgreSQL tipos de datos en detalle

Tipos de datos de caracteres

PostgreSQL admite tipos de datos de caracteres para almacenar valores de texto. PostgreSQL construye tipos de datos de caracteres a partir de las mismas estructuras internas. PostgreSQL ofrece tres tipos de datos de caracteres: CHAR(n), VARCHAR(n) y TEXT.

Nombre Mareas Ideales para Lecciones
varchar(n) Le permite declarar una longitud variable con un límite.
Carácter (n) Acolchado en blanco de longitud fija
Texto El uso puede utilizar este tipo de datos para declarar una variable con longitud ilimitada

Tipos de datos numéricos

PostgreSQL Admite dos tipos distintos de números:

  • Enteros
  • Números de punto flotante
Nombre Tamaño de la tienda Autonomía
letra pequeña Bytes 2 -32768 a + 32767
entero Bytes 4 -2147483648 a + 2147483647
Empezando Bytes 8 -9223372036854775808 a 9223372036854775807
decimal variable Si lo declaró como tipo de datos decimal, el rango va desde 131072 dígitos antes del punto decimal hasta 16383 dígitos después del punto decimal
numérico variable Si lo declara como número, puede incluir un número de hasta 131072 dígitos antes del punto decimal hasta 16383 dígitos después del punto decimal.
real Bytes 4 Precisión de 6 dígitos decimales.
doble Bytes 8 Precisión de 15 dígitos decimales.

Tipos de datos binarios

Una cadena binaria es una secuencia de octetos o bytes. Los tipos de datos binarios de Postgres se dividen de dos maneras.

  • Las cadenas binarias permiten almacenar probabilidades de valor cero
  • Octetos no imprimibles

Las cadenas de caracteres no permiten cero octetos y tampoco permiten otros valores y secuencias de octetos que no sean válidos según las reglas de codificación del juego de caracteres de la base de datos.

Nombre Tamaño de almacenamiento Mareas Ideales para Lecciones
Byte 1 a 4 bytes más el tamaño de la cadena binaria Cadena binaria de longitud variable

Tipo de dirección de red

Muchas aplicaciones almacenan información de la red, como direcciones IP de usuarios o sensores. PostgreSQL Tiene tres tipos nativos que le ayudan a optimizar los datos de la red.

Nombre Tamaño Mareas Ideales para Lecciones
sidra 7 o 19 bytes IPv4 e IPv6 telecomunicaciones
Inet 7 o 19 bytes Hosts y redes IPv4 e IPv6
Macaddr Bytes 6 Direcciones MAC

El uso de tipos de direcciones de red tiene las siguientes ventajas

  1. Ahorro de espacio de almacenamiento
  2. Comprobación de errores de entrada
  3. Funciones como la búsqueda de datos por subred

Tipo de búsqueda de texto

PostgreSQL Proporciona dos tipos de datos diseñados para admitir la búsqueda de texto completo. La búsqueda de texto completo consiste en buscar en una colección de documentos en lenguaje natural aquellos que mejor coinciden con una consulta.

  • Búsqueda de texto tsvector PostgreSQL Los tipos de variables representan un documento en una forma optimizada para la búsqueda de texto.
  • La búsqueda de texto del tipo de consulta almacena las palabras clave que deben buscarse

Tipos de datos de fecha/hora

PostgreSQL La marca de tiempo ofrece una precisión de microsegundos en lugar de una precisión de segundos. Además, también tienes la opción de almacenar con zona horaria o sin ella. PostgreSQL convertirá la marca de tiempo con zona horaria a UTC en la entrada y la almacenará.

La entrada de fecha y hora se acepta en varios formatos, incluidos Postgres tradicional, ISO 8601, compatible con SQL, etc.

PostgreSQL admite pedidos de día/mes/año. Los formatos admitidos son DMY, MDY, YMD

Tipos de datos temporales

Nombre Tamaño Autonomía Resolución
Marca de tiempo sin zona horaria Bytes 8 4713 aC a 294276 dC 1 microsegundo/14 dígitos
Marca de tiempo con zona horaria Bytes 8 4713 aC a 294276 dC 1 microsegundo/14 dígitos
datos Bytes 4 4713 aC a 294276 dC Un día
Hora sin zona horaria Bytes 8 00:00:00 to 24:00:00 1 microsegundo/14 dígitos
Hora con zona horaria Bytes 12 00:00:00 + 1459 a 24:00:00-1459 1 microsegundo/14 dígitos
Intervalo Bytes 12 -178000000 a 178000000 años 1 microsegundo/14 dígitos

Ejemplos

Entrada Mareas Ideales para Lecciones
2025-09-07 ISO 8601, 7 de septiembre con cualquier estilo de fecha (formato recomendado)
7 de septiembre de 2025 7 de septiembre con cualquier estilo de fecha.
9/7/2025 7 de septiembre con MDY, 9 de julio con DMY
9/7/25 7 de septiembre de 2025, con MDY
2025-Sep-7 7 de septiembre con cualquier estilo de fecha.
7 de septiembre de 2018 7 de septiembre con cualquier estilo de fecha.
7-Sep-25 7 de septiembre de 2025, con YMD
20250907 ISO 8601, 7 de septiembre de 2025 en cualquier modo
2025.250 año y día del año, en este caso, 7 de septiembre de 2025
J25250 fecha de Julian

Hora/Hora con entrada de zona horaria

Entrada Mareas Ideales para Lecciones
11:19:38.507
11:19:38
11:19
111938
ISO 8601,
11:19 Igual que 11:19
11:19 igual que 23:19
23:19-3
23:19 - 03:00
231900-03
ISO 8601, igual que a las 11:19 p.m. EST
23: 19 EST zona horaria especificada como EST, igual que 11:19 p. m. EST

Tipo booleano

Un tipo de datos booleano puede contener

  • Cierto
  • Falso
  • nulo

valores.

Usas un bool or booleano palabra clave para declarar una columna con el tipo de datos booleanos.

Cuando insertas valores en una columna booleana, Postgre convierte valores como

  • Sí:
  • y
  • 1
  • t
  • su verdadero

en 1.

Mientras que valores como

  • No
  • N
  • 0
  • F
  • Falso

se convierten a 0

Al seleccionar datos, los valores se convierten nuevamente a sí, verdadero, y, etc.

Tipos de datos geométricos

Los tipos de datos geométricos representan objetos espaciales bidimensionales. Ayudan a realizar operaciones como rotaciones, escalado, traslación, etc.

Nombre Tamaño de almacenamiento Representación Mareas Ideales para Lecciones
punto Bytes 16 Punto en un avión (x, y)
Line Bytes 32 linea infinita ((xl.yl).(x2.y2))
Lseg Bytes 32 segmento de recta finita ((xl.yl).(x2.y2))
Box Bytes 32 Rectangular Box ((xl.yl).(x2.y2))
Path 16n + 16n bytes Cerrar y abrir camino ((xl.yl),…)
Polygon 40 + 16n bytes Polygon [(xl.yl),….]
Círculo Bytes 24 Círculo (punto central y radio)

Tipos enumerados

Enumerado PostgreSQL El tipo de datos es útil para representar información que rara vez cambia, como el código de país o la identificación de sucursal. El tipo de datos enumerados se representa en una tabla con claves externas para garantizar la integridad de los datos.

Ejemplo

El color del cabello es bastante estático en una base de datos demográfica.

CREATE TYPE hair_color AS ENUM
('brown','black','red','grey','blond')

Tipos enumerados

Tipo de rango

Muchas aplicaciones empresariales requieren datos en rangos. Normalmente, se definen dos columnas (ejemplo: fecha de inicio, fecha de finalización) para tratar los rangos. Esto es ineficiente y difícil de mantener.

Postgre ha creado tipos de rango de la siguiente manera

  • int4range — Rango de visualización de números enteros
  • int8range — Rango de visualización de bigint
  • numrange — Muestra el rango numérico
  • tstrange: le ayuda a mostrar la marca de tiempo sin zona horaria
  • extraño: le permite mostrar la marca de tiempo con la zona horaria
  • rango de fechas — Rango de fechas

tipo de UUID

Un identificador único universal (UUID) es una cantidad de 128 bits generada por un algoritmo. Es muy improbable que otra persona en el mundo genere el mismo identificador utilizando el mismo algoritmo. Por ello, para los sistemas distribuidos, estos identificadores son una opción ideal, ya que ofrecen unicidad dentro de una misma base de datos. Un UUID se escribe como un grupo de dígitos hexadecimales en minúscula, con varios grupos separados por guiones.

PostgreSQL Tiene un tipo de dato UUID nativo que consume 16 bytes de almacenamiento. UUID es un tipo de dato ideal para claves primarias.

Ejemplo

d5f28c97-b962-43be-9cf8-ca1632182e8e

Postgre también acepta formas alternativas de entradas UUID, como mayúsculas, sin guiones, llaves, etc.

tipo XML

PostgreSQL le permite almacenar datos XML en un tipo de datos, pero no es más que una extensión de un tipo de datos de texto. Pero la ventaja es que comprueba que el XML de entrada esté bien formado.

Ejemplo

XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')

Tipo JSON

Para almacenar datos JSON PostgreSQL ofrece 2 tipos de datos

  1. JSON
  2. JSONB
json Jsonb
Una extensión simple de un tipo de datos de texto con validación JSON Una representación binaria de los datos JSON.
La inserción es rápida pero la recuperación de datos es relativamente lenta. Insertar es lento pero seleccionar (la recuperación de datos es rápida)
Guarda los datos ingresados ​​exactamente como están, incluidos los espacios en blanco. Admite indexación. Puede optimizar el espacio en blanco para agilizar la recuperación.
Reprocesamiento en la recuperación de datos No se requiere reprocesamiento en la recuperación de datos

El tipo de datos JSON más utilizado es jsonb, a menos que exista alguna necesidad especializada de utilizar el tipo de datos JSON.

Ejemplo

CREATE TABLE employee (
  id integer NOT NULL,
  age  integer NOT NULL,
  data jsonb
);
INSERT INTO employee VALUES (1, 35, '{"name": "Tom Price", "tags": ["Motivated", "SelfLearner"], "onboarded": true}');

Pseudotipos

PostgreSQL tiene muchas entradas de propósito especial que se denominan pseudotipos. No puedes usar pseudotipos como PostgreSQL tipos de columnas. Se utilizan para declarar el argumento de una función o el tipo de retorno.

Cada uno de los pseudotipos disponibles es útil en situaciones en las que el comportamiento de una función no corresponde simplemente a tomar o devolver un valor de un objeto específico. Tipo de datos SQL.

Nombre Mareas Ideales para Lecciones
Año La función acepta todos los tipos de datos de entrada.
Una matriz La función acepta cualquier tipo de datos de matriz.
Cualquier elemento La función acepta cualquier tipo de datos.
Cualquier enumeración La función acepta cualquier tipo de datos de enumeración.
No matriz La función acepta cualquier tipo de datos que no sean de matriz.
Cuerda C La función acepta o devuelve una cadena C terminada en nulo.
Interno La función interna acepta o devuelve el tipo de datos internos del servidor.
Manejador de idioma Se declara que devuelve el controlador de idioma.
Record Encuentre una función que devuelva un tipo de fila no especificado.
Desencadenar Se utiliza una función de disparo para devolver el disparador.

Es importante que el usuario que utiliza esta función se asegure de que la función se comportará de forma segura cuando se utilice un pseudotipo como tipo de argumento.

Mejores prácticas utilizando tipos de datos

  • Utilice el tipo de datos "texto" a menos que desee limitar la entrada
  • Nunca utilices "char".
  • Los números enteros usan "int". Utilice bigint sólo cuando tenga números realmente grandes
  • Utilice "numérico" casi siempre
  • Usar flotador en PostgreSQL si tiene una fuente de datos IEEE 754

Preguntas Frecuentes

Los números decimales almacenan valores exactos y son ideales para dinero y cálculos precisos. Los números de coma flotante (reales y dobles) almacenan valores aproximados con un rendimiento más rápido, pero con pequeños errores de redondeo, por lo que conviene evitarlos para datos financieros exactos.

Sí. PostgreSQL Permite que cualquier columna almacene una matriz de un tipo base, como entero[] o texto[]. Las matrices son útiles para listas de valores y se pueden buscar, indexar y desagrupar en las consultas.

Utilice el tipo numérico para la moneda, ya que almacena valores decimales exactos. Evite los tipos de coma flotante, que introducen errores de redondeo. También existe un tipo específico para dinero, pero es menos flexible para datos en varias monedas.

La IA puede analizar tus datos de muestra y recomendar tipos adecuados, como numérico para datos monetarios o JSONB para campos flexibles. Explica las ventajas y desventajas en cuanto a almacenamiento, precisión y rendimiento para que puedas tomar una decisión con confianza.

Sí. La IA puede mapear tipos de datos desde MySQL, Oracleo SQL Server a su PostgreSQL Equivalentes y discrepancias de banderas, como TINYINT o NVARCHAR, ayudanping Planifica una migración de base de datos más fluida.

Resumir este post con: