PostgreSQL Tipos de datos: byte, numérico, carácter, binario

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
  • Nuestra red
  • Matrices
  • Crea tu tipo de datos
  • Boolean
  • Temporal
  • UUID
  • Formación
  • JSON
  • 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 Descripción original
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 Descripción original
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 Descripción original
sidra 7 o 19 bytes IPV4 e IPv6 telecomunicaciones
Inet 7 o 19 bytes Host y redes IPV4 e IPV5
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 Descripción original
2025-09-07 ISO 8601, 7 de septiembre con cualquier estilo de fecha (formato recomendado)
7 de septiembre 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 septiembre 20225 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 Descripción original
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

  • 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 Descripción original
punto Bytes 16 Punto en un avión (x, y)
Línea 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),…)
Polígono 40 + 16n bytes Polígono [(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

Los identificadores universalmente únicos (UUID) son una cantidad de 128 bits generada por un algoritmo. Es muy poco probable que otra persona en el mundo genere el mismo identificador utilizando el mismo algoritmo. Es por eso que, para los sistemas distribuidos, estos identificadores son una opción ideal, ya que ofrecen unicidad dentro de una única 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 datos UUID nativo que consume 16 bytes de almacenamiento. UUID es un tipo de datos 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"], "onboareded": 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 Descripción original
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

Resum

  • PostgreSQL ofrece un rico conjunto de tipos de datos nativos para los usuarios
  • PostgreSQL admite tipos de datos de caracteres para almacenar valores de texto
  • PostgreSQL Admite dos tipos distintos de números: 1. Números enteros, 2. Números de punto flotante
  • Una cadena binaria es una secuencia de bytes u octetos.
  • PostgreSQL tiene un tipo de dirección de red para ayudarle a optimizar el almacenamiento de datos de red
  • Búsqueda de texto PostgreSQL Las estructuras de datos están diseñadas para admitir la búsqueda de texto completo.
  • Fecha/Hora Los tipos de datos PSQL permiten información de fecha y hora en varios formatos
  • Los tipos de campos booleanos de Postgres pueden contener tres valores 1. Verdadero 2. Falso 3. Nulo
  • Geométrico PostgreSQL Los tipos de datos representan objetos espaciales bidimensionales.
  • Tipos de datos enumerados en PostgreSQL Es útil para representar información que rara vez cambia, como el código de país o la identificación de sucursal.
  • Las identificaciones universalmente únicas (UUID) son una cantidad de 128 bits generada por un algoritmo.
  • PostgreSQL tiene muchas entradas de propósito especial que se denominan pseudotipos
  • Es una buena práctica utilizar el tipo de datos "texto" a menos que desee limitar la entrada.