Introducción
PostgreSQL es un sistema de gestión de bases de datos relacionales de código abierto conocido por su robustez y extensibilidad. Esto también significa que PostgreSQL ofrece una variedad de tipos de datos para los usuarios.
En este tutorial, cubriremos los diferentes tipos de datos integrados disponibles en PostgreSQL.
Tipos de datos PostgreSQL
Al crear una tabla en PostgreSQL, puede especificar un tipo de datos para cada columna. PostgreSQL admite una amplia gama de tipos de datos integrados:
Personaje
PostgreSQL usa tipos de datos de caracteres para almacenar valores de texto. Hay tres tipos de datos de caracteres en PostgreSQL:
Nombre | Descripción |
carácter(n), carácter(n) | Cadenas de longitud fija, donde n es el número de caracteres. Espacio en blanco acolchado a la derecha para igualar a n . |
variación de caracteres(n), varchar(n) | Cadena de longitud variable con un límite de caracteres, donde n es el número de caracteres. |
texto | Longitud variable, cadena ilimitada. |
Tipos numéricos
Tipos de datos numéricos incluir:
- Enteros de dos, cuatro y ocho bytes
- Números de punto flotante de cuatro y ocho bytes
- Decimales seleccionables:
Nombre | Tamaño de almacenamiento | Descripción | Alcance |
inteligencia pequeña | 2 bytes | Entero de rango pequeño. | -32768 a +32767 |
entero | 4 bytes | Entero de rango medio. | -2147483648 a +2147483647 |
grande | 8 bytes | Entero de rango grande. | -9223372036854775808 al 9223372036854775807 |
decimales | variable | Decimal de precisión especificado por el usuario. | Hasta 131072 dígitos antes del punto decimal. Hasta 16383 dígitos después del punto decimal |
numérico | variable | Decimal de precisión especificado por el usuario. | hasta 131072 dígitos antes del punto decimal. Hasta 16383 dígitos después del punto decimal |
real | 4 bytes | Decimal de precisión variable. | Precisión de 6 dígitos decimales |
doble precisión | 8 bytes | Decimal de precisión variable. | Precisión de 15 dígitos decimales |
pequeña serie | 2 bytes | Entero pequeño autoincrementable. | 1 a 32767 |
serie | 4 bytes | Entero autoincrementable medio. | 1 a 2147483647 |
gran serie | 8 bytes | Entero grande autoincrementable. | 1 a 9223372036854775807 |
Monetario
El tipo de datos monetarios almacena una cantidad numérica de dinero con precisión fraccionaria fija. Este tipo almacena hasta 8 bytes de datos con un rango de -92233720368547758.08 a +92233720368547758.07 y usa numeric , entero y bigint tipos de datos como valores.
Fecha/Hora
PostgreSQL Admite todos los tipos de datos de fecha y hora de SQL estándar , con una resolución de 1 microsegundo o 14 dígitos. La fecha es la única excepción, con resolución de un día, contado según el calendario gregoriano:
Nombre | Tamaño de almacenamiento | Descripción | Alcance |
marca de tiempo | 8 bytes | Fecha y hora, sin zona horaria. | 4713 aC a 294276 dC |
timestampz | 8 bytes | Fecha y hora, con zona horaria. | 4713 aC a 294276 dC |
fecha | 4 bytes | Fecha. | 4713 aC a 294276 dC |
hora sin zona horaria | 8 bytes | Hora del día, sin zona horaria. | 00:00:00 a 24:00:00 |
hora con zona horaria | 12 bytes | Hora del día, con zona horaria. | 00:00:00 + 1459 a 24:00:00-1459 |
intervalo | 12 bytes | Intervalo de tiempo. | -178000000 a 178000000 años |
Binario
PostgreSQL puede guardar cadenas binarias de longitud variable como el tipo de datos bytea , tomando 1 o 4 bytes más el tamaño de la cadena binaria real.
Booleano
Un tipo de datos booleano se declara usando bool
o boolean
palabras clave Puede contener verdadero (1) , falso (0) o desconocido (nulo) valores.
Enumerado
Tipos de datos enumerados consisten en un conjunto estático y ordenado de valores, como números del 1 al 10 o meses en el año. A diferencia de otros tipos de datos, puede crear tipos enumerados usando el create type
comando:
CREATE TYPE year AS ENUM ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
Cadena de bits
Tipo de cadena de bits almacena cadenas de 1 y 0, que se utilizan para almacenar o visualizar máscaras de bits:
Nombre | Descripción |
bit(n) | Almacena una cadena de bits con una longitud fija de n personajes. |
variable(n) | Almacena una cadena de bits de longitud variable, hasta n personajes. |
UUID
Un UUID (Universally Unique Identifiers) es un conjunto de 32 dígitos creado por un algoritmo. Consta de varios grupos de cuatro, ocho y doce dígitos, separados por guiones:
Dirección de red
PostgreSQL utiliza tipos de datos de direcciones de red para almacenar direcciones IPv4, IPv6 y MAC:
Nombre | Tamaño de almacenamiento | Descripción |
cidr | 7 o 19 bytes | Almacena redes IPv4 e IPv6. |
inet | 7 o 19 bytes | Almacena hosts y redes IPv4 e IPv6. |
macaddr | 6 bytes | Almacena direcciones MAC. |
El uso de tipos de datos de direcciones de red tiene varias ventajas sobre el uso de texto sin formato. Esto incluye ahorrar espacio de almacenamiento, funciones y comandos especializados y una verificación de errores más sencilla.
Búsqueda de texto
Tipo de datos de búsqueda de texto le permite buscar la mejor coincidencia en una colección de documentos en lenguaje natural:
Nombre | Descripción |
tsvector | Representa un documento optimizado para la búsqueda de texto, con una lista de palabras distintas normalizadas para fusionar diferentes variantes de la misma palabra (lexemas). |
tsquery | Almacena las palabras clave que deben buscarse y las combina mediante operadores booleanos (AND, OR y NOT). |
Geométrica
Tipos de datos geométricos representar objetos espaciales representados en dos dimensiones, como puntos, líneas y polígonos:
Nombre | Tamaño de almacenamiento | Representación | Descripción numérica |
punto | 16 bytes | Punto en un plano. | (x,y) |
línea | 32 bytes | Línea infinita. | ((x1,y1),(x2,y2)) |
lseg | 32 bytes | Segmento de línea finita. | ((x1,y1),(x2,y2)) |
caja | 32 bytes | Caja rectangular. | ((x1,y1),(x2,y2)) |
ruta | 16+16n bytes | Ruta abierta o cerrada. | ((x1,y1),...(xn,yn)) |
polígono | 40+16n bytes | Polígono. | ((x1,y1),...(xn,yn)) |
círculo | 24 bytes | Círculo. | ((x,y),r) (punto central y radio) |
XML
PostgreSQL le permite guardar datos XML como un tipo de datos XML usando el XMLPARSE
función:
XMLPARSE (DOCUMENT [document name] WELLFORMED)
o:
XMLPARSE (CONTENT [XML content] WELLFORMED)
donde:
[document name]
:un documento XML de raíz única.
[XML content]
:Valor XML válido
WELLFORMED
:esta opción garantiza que [nombre del documento] o [contenido XML] se resuelva en un documento XML bien formado. Úselo solo cuando no desee que la base de datos verifique si la entrada está bien formada.
JSON
PostgreSQL ofrece dos tipos de datos JSON :
- json: Una extensión del tipo de datos de texto con validación JSON. Este tipo de datos guarda los datos exactamente como están (incluidos los espacios en blanco). Puede insertarlo rápidamente en la base de datos, pero es relativamente lento de recuperar debido al reprocesamiento.
- jsonb: Representa datos JSON en formato binario. Es más lento de insertar en la base de datos, pero el soporte de indexación y la falta de reprocesamiento hacen que la recuperación sea significativamente más rápida.
Matriz
El tipo de datos de matriz le permite definir una columna de una tabla como una matriz multidimensional que puede usar cualquier tipo de datos base, enumerado o compuesto. Puede declarar, modificar y buscar matrices como lo haría con cualquier otra columna de la base de datos.
Compuesto
Tipos de datos compuestos le permiten utilizar una fila o registro de una tabla como elemento de datos. De forma similar a los tipos de datos de matriz, también puede declarar, buscar y modificar valores compuestos.
Alcance
Tipos de datos de rango use rangos discretos o continuos de otros tipos de datos. Los tipos de datos de rango incorporados incluyen:
Nombre | Descripción |
rango int4 | Rango de enteros de tamaño medio. |
rango int8 | Rango de enteros grandes. |
rango numérico | Rango de decimales de precisión especificados por el usuario. |
extraño | Rango de horas y fechas sin zona horaria. |
rango de tstz | Rango de horas y fechas con una zona horaria. |
intervalo de fechas | Rango de fechas. |
También puede crear tipos de rango personalizados utilizando otros tipos de datos como base.
Identificador de objeto
PostgreSQL utiliza identificadores de objetos como sistemas de clave principal cuando realiza operaciones de entrada y salida especializadas:
Nombre | Referencias | Descripción |
oide | cualquiera | Identificador de objeto numérico. |
regproc | pg_proc | Nombre de la función. |
procedimiento de registro | pg_proc | Función con tipos de argumentos. |
registrar | operador_pg | Nombre del operador. |
regoperador | operador_pg | Operador con tipos de argumentos. |
clase de registro | pg_clase | Nombre de la relación. |
tipo de registro | tipo_pg | Nombre del tipo de datos. |
regconfig | pg_ts_config | Configuración de búsqueda de texto. |
registro | pg_ts_dict | Diccionario de búsqueda de texto. |
Pseudotipos
Los pseudotipos son una colección de entradas especiales para declarar el argumento de una función o el tipo de resultado:
Nombre | Descripción |
cualquiera | La función acepta cualquier tipo de datos de entrada. |
cualquier elemento | La función acepta cualquier tipo de datos. |
cualquier matriz | La función acepta cualquier tipo de datos de matriz. |
cualquier matriz | La función acepta cualquier tipo de datos que no sea de matriz. |
anyenum | La función acepta cualquier tipo de datos enumerados. |
cualquier rango | La función acepta cualquier tipo de datos de rango. |
cadena c | La función acepta o devuelve una cadena C terminada en nulo. |
interno | La función acepta o devuelve el tipo de datos interno del servidor. |
controlador_idioma | La función devuelve el controlador de idioma. |
manejador_fdw | Un controlador contenedor de datos externos devuelve fdw_handler. |
grabar | Encuentra una función que devuelve un tipo de fila no especificado. |
gatillo | Una función de activación devuelve activación. |
vacío | La función no devuelve ningún valor. |