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
- Ahorro de espacio de almacenamiento
- Comprobación de errores de entrada
- 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
- 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 | 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')
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
- 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. |
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.