Tipos de datos de PostgreSQL: Carácter - Numérico - Binario - Booleano

Tabla de contenido:

Anonim

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

  1. Ahorro de espacio de almacenamiento
  2. Comprobación de errores de entrada
  3. 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

  • 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

  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
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