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 Horarios
- XML
- JSON
- Booleano
- Bits
- Datos binarios
- La red
- Matrices
- Crea tu tipo de datos
- Booleano
- Temporal
- UUID
- Formación
- JSON
- Tipos de datos especiales para almacenar una dirección de red y datos geométricos.
Estudiemos en detalle los tipos de datos de PostgreSQL
- Tipos de datos de caracteres
- Tipos de datos numéricos
- Tipos de datos binarios
- Tipo de dirección de red
- Tipo de búsqueda de texto
- Tipos de datos de fecha / hora
- Tipo booleano
- Tipos de datos geométricos
- Tipos enumerados
- Tipo de rango
- Tipo de UUID
- Tipo XML
- Tipo JSON
- Pseudo-tipos
Tipos de datos de caracteres
PostgreSQL admite tipos de datos de caracteres para almacenar valores de texto. PostgreSQL crea 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 |
---|---|
varchar (n) | Le permite declarar longitud variable con un límite |
Char (n) | De longitud fija, en blanco acolchado |
Texto | El uso puede usar 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 | Abarcar |
---|---|---|
pequeño | 2 bytes | -32768 al +32767 |
entero | 4 bytes | -2147483648 al +2147483647 |
Empezando | 8 bytes | -9223372036854775808 al 9223372036854775807 |
decimal | variable | Si lo declaró como tipo de datos decimal, oscila entre 131072 dígitos antes del punto decimal y 16383 dígitos después del punto decimal. |
numérico | variable | Si lo declara como el 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. |
verdadero | 4 bytes | Precisión de 6 dígitos decimales |
doble | 8 bytes | 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 formas.
- 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 |
---|---|---|
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 red como la dirección IP de los usuarios o
sensores. PostgreSQL tiene tres tipos nativos que le ayudan a optimizar los datos de la red.
Nombre | Tamaño | Descripción |
---|---|---|
sidra | 7 o 19 byes | Redes IPV4 e IPv6 |
Inet | 7 o 19 bytes | Host y redes IPV4 e IPV5 |
macaddr | 6 bytes | Direcciones MAC |
El uso de tipos de direcciones de red tiene las siguientes ventajas
- Ahorro de espacio de almacenamiento
- Comprobación de errores de entrada
- Funciones como buscar datos por subred
Tipo de búsqueda de texto
PostgreSQL proporciona dos tipos de datos que están diseñados para admitir la búsqueda de texto completo. La búsqueda de texto completo consiste en buscar a través de una colección de documentos en lenguaje natural para buscar los que mejor coinciden con una consulta.
- Búsqueda de texto de Tsvector Los tipos de variables de PostgreSQL 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
La marca de tiempo de PostgreSQL ofrece precisión de microsegundos en lugar de precisión de segundos. Además, también tiene la opción de almacenar con zona horaria o sin ella. PostgreSQL convertirá la marca de tiempo con la zona horaria a UTC en la entrada y la almacenará.
La entrada de fecha y hora se acepta en varios formatos, incluido el tradicional Postgres, 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 | Abarcar | Resolución |
---|---|---|---|
Marca de tiempo sin zona horaria | 8 bytes | 4713 a.C. al 294276 d.C. | 1microsegundo / 14 dígitos |
Marca de tiempo con zona horaria | 8 bytes | 4713 a.C. al 294276 d.C. | 1microsegundo / 14 dígitos |
fecha | 4 bytes | 4713 a.C. al 294276 d.C. | Un día |
Tiempo sin zona horaria | 8 bytes | 00:00:00 a 24:00:00 | 1microsegundo / 14 dígitos |
Hora con zona horaria | 12 bytes | 00:00:00 + 1459 a 24: 00: 00-1459 | 1microsegundo / 14 dígitos |
Intervalo | 12 bytes | -178000000 a 178000000 años | 1microsegundo / 14 dígitos |
Ejemplos:
Aporte | Descripción |
---|---|
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 |
7/9/2025 | 7 de septiembre con MDY, 9 de julio con DMY |
7/9/25 | 7 de septiembre de 2025, con MDY |
7 de septiembre de 2025 | 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 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
Aporte | Descripción |
---|---|
11: 19: 38.507 11:19:38 11:19 111938 | ISO 8601 |
11:19 a. M. | Igual que 11:19 |
11:19 p. M. | lo mismo 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.
Se utiliza un bool o boolean palabra clave para declarar una columna con el tipo de datos Boolean.
Cuando inserta valores en una columna booleana, Postgre convierte valores como
- sí
- y
- 1
- t
- cierto
en 1.
Mientras que valores como
- No
- norte
- 0
- F
- Falso
se convierten a 0
Al seleccionar los datos, los valores se vuelven a convertir nuevamente en 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 |
---|---|---|---|
Punto | 16 bytes | Punto en un avión | (x, y) |
Línea | 32 bytes | Línea infinita | ((xl.yl). (x2.y2)) |
Lseg | 32 bytes | Segmento de línea finita | ((xl.yl). (x2.y2)) |
Caja | 32 bytes | Caja rectangular | ((xl.yl). (x2.y2)) |
Camino | 16n + 16n bytes | Cerrar y abrir camino | ((xl.yl),…) |
Polígono | 40 + 16n bytes | Polígono | [(xl.yl)….] |
Circulo | 24 bytes | Circulo | <(xy) .r> (punto central y radio) |
Tipos enumerados
El tipo de datos enumerado de PostgreSQL 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')
Tipo de rango
Muchas aplicaciones comerciales 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 construido tipos de rango de la siguiente manera
- int4range: rango de visualización del entero
- int8range: rango de visualización de bigint
- rango numérico: 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
- intervalo de fechas: intervalo de fechas
Tipo de UUID
Las identificaciones únicas universales (UUID) son una cantidad de 128 bits que se genera mediante 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 sola base de datos. Un UUID se escribe como un grupo de dígitos hexadecimales en minúsculas, 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 todas las 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 '') Data Type …
Tipo JSON
Para almacenar datos JSON, PostgreSQL ofrece 2 tipos de datos
- JSON
- 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 |
Insertar es rápido 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 de la forma en que incluyen los espacios en blanco. | Admite la 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 usó jsonb a menos que exista alguna necesidad especializada de usar 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}');
Pseudo-tipos
PostgreSQL tiene muchas entradas de propósito especial que se denominan pseudo-tipos. No puede usar pseudo-tipos como tipos de columna de PostgreSQL. Se utilizan para declarar el argumento de la función o el tipo de retorno.
Cada uno de los pseudo-tipos disponibles es útil en situaciones donde los documentos de comportamiento de una función no se corresponden simplemente con tomar o devolver un valor de un tipo de datos SQL específico.
Nombre | Descripción |
---|---|
Alguna | 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. |
Nonarray | La función acepta cualquier tipo de datos que no sea 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 interno del servidor. |
Language_handler | Se declara que devuelve el controlador de idioma. |
Registro | Busque una función que devuelva un tipo de fila no especificado. |
Desencadenar | Se utiliza una función de disparo para devolver el disparo. |
Es importante que el usuario que utiliza esta función debe asegurarse de que la función se comportará de forma segura cuando se utilice un pseudo-tipo como tipo de argumento.
Mejores prácticas en el uso de tipos de datos
- Utilice el tipo de datos "texto" a menos que desee limitar la entrada
- Nunca use "char".
- Los enteros usan "int". Use bigint solo cuando tenga números realmente grandes
- Utilice "numérico" casi siempre
- Use float en PostgreSQL si tiene una fuente de datos IEEE 754
Resumen
- PostgreSQL ofrece un amplio 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. Enteros, 2. Números de coma flotante
- Una cadena binaria es una secuencia de bytes u octetos.
- PostgreSQL tiene un tipo de dirección de red para ayudarlo a optimizar el almacenamiento de datos de red
- Búsqueda de texto Las estructuras de datos de PostgreSQL están diseñadas para admitir la búsqueda de texto completo
- Los tipos de datos de fecha / hora PSQL permiten información de fecha y hora en varios formatos
- Los tipos de campo booleanos de Postgres pueden contener tres valores 1. Verdadero 2. Falso 3. Nulo
- Los tipos de datos geométricos de PostgreSQL representan objetos espaciales bidimensionales
- Los tipos de datos enumerados en PostgreSQL son útiles para representar información que rara vez cambia, como el código de país o la identificación de la sucursal.
- Las identificaciones únicas universales (UUID) son una cantidad de 128 bits que se genera mediante un algoritmo
- PostgreSQL tiene muchas entradas de propósito especial que se denominan pseudo-tipos
- Es una buena práctica utilizar el tipo de datos "texto" a menos que desee limitar la entrada