Tipos de datos en PostgreSQL

En el siguiente articulo vamos detallar todos los tipos de datos que tiene disponible PostgreSQL. En la mayoría de casos son idénticos a cualquier otra base de datos relacional cómo SQL Server o Oracle, pero otros son muy particulares. Aprenderte los tipos de datos disponibles te ayudará a crear las tablas correctamente y a crear sentencias más optimas.

Tipos de datos en PostgreSQL

Tipos Lógicos

Disponemos del tipo lógico llamado boolean o también conocido como bool. En el solo se puede almacenar los valores true o false.

create table TipoDatos (
	EnActivo	boolean
);

insert into TipoDatos
  values ('yes'), ('1'), ('y'), ('t');Lenguaje del código: JavaScript (javascript)

Cuando insertas ciertos valores en una columna boolena, PostgreSQL lo convierte automáticamente:

  • Los valores 1, yes, y, t y true son convertidos a true.
  • Los valores 0, no, n, f y false son convertidos a false.

Tipos Numéricos

Disponemos de varios tipos de datos numéricos, por ejemplo en lo que respecta a números enteros tenemos smallint, int y bigint.

Si queremos almacenar números con decimales tendremos que crear campos de tipo real o double precisión. Estos tipos de datos se consideran de punto flotante y tienen la peculiaridad que pierden exactitud según van creciendo o decreciendo los valores, algo sin importancia en la mayoría de casos.

Para evitar esta perdida, también puedes utilizar el tipo de dato numeric, pero debes tener en cuenta que este tipo ocupa más espacio y las operaciones se ejecutan más lentas sobre ellos. En este tipo de dato le puedes asignar una precisión y una escala, pero si lo obvias podrás almacenar cualquier número. Recuerda que si creas un numeric(5,3) le estas indicando que el número va tener en total 5 numeros siendo 3 de ellos decimales. No pensar cómo es habitual que tendrá 5 enteros y 3 decimales.

Tipo de DatoTamañoNombre alternativo
smallint2 bytesint2
int4 bytesint4, integer
bigint8 bytesint8
numeric (p, e)11 + (p/2)
real4 bytesfloat, float4
double precision8 bytesfloat8
create table TipoDatos (
	numero1		smallint,
	numero2		int,
	numero3		bigint,
	numero4		numeric(5,3),
	numero5		real,
	numero6		double precision
);

Tipo Auto numérico

Este tipo especial de PostgreSQL es bastante útil para crear valores incrementales. Al definir este tipo de datos conseguirás que su valor se vaya incrementando según se van insertando registros sin necesidad de indicarle nada. Cuando se inserten valores en esta tabla no debemos indicarle el valor de identificador ya que obtendrá el máxima valor del campo y le sumara uno.

create table TipoDatos (
	Identificador	serial,
	Nombre varchar(10)
);

Este tipo de datos lleva implícita la creación de una secuencia que será la encargada de conseguir este funcionamiento. Puedes obtener más información leyendo este otro articulo.

Tipo de caracteres

Tenemos disponibles tres tipos de datos de cadena; char(n), varchar(n) y text.

  • Char(n): reserva n espacios para almacenar la cadena independientemente del valor que insertes.
  • Varchar(n): solo utiliza los espacios necesarios para guardar el texto indicado, siempre que sea igual o menor a n.
  • Text: almacena texto de cualquier longitud.

Como insertar caracteres

En primer lugar recuerda que al insertar un texto o cadena debes entrecomillarlo con comillas simples y si quieres guardar una comilla como parte de la cadena puedes entrecomillar la palabra en sí y despues todo el texto.

También es posible utilizar una serie de caracteres de escape para introducir saltos de lineas, tabuladores, etc…

Caracter de escapeFunción que realiza
\\escribe el caracter \
\nnueva linea
\rretorno de carro
\bretroceso
\ttabulador
\fcambio de pagina

En el siguiente ejemplo la palabra gracias, estará en una segunda linea.

select 'Hola visitante de ''MiguelTroyano.com'' \n  Gracias.' Columna1Lenguaje del código: JavaScript (javascript)

Tipo de Fecha y Hora

Tenemos disponibles 4 tipos de datos para insertar la fecha y hora en un campo. Son los siguientes:

DescripciónTipo de datosUnidadTamaño
Fechadatedía, mes y año4 bytes
Horatimehora, minuto, segundo y microsegundo4 bytes
Fecha y
Hora
timestampdía, mes, año, hora, minuto, segundo
y microsegundo
8 bytes
Intervalo
de tiempo
intervalsegundo, minuto, hora, dia, semana,
mes, año, decada, siglo y milenio
12 bytes
create table TipoDatos (
	Fecha 		date,
	Hora		time,
	FechaHora	timestamp,
	Intervalo	interval
);
Tipos de datos en PostgreSQL

Tipo array

El tipo de dato Array es un tipo especial de PostgreSQL que permite almacenar más de un valor del mismo tipo en una columna.

create table TipoDatos (
	NEmpleado 	int,
	Deptno		text[3]
);

insert into TipoDatos 
values (1, '{Contabilidad,Secretaria}');Lenguaje del código: JavaScript (javascript)

Puedes acceder a los datos de este array viendo todos los valores o escogiendo la posición que quieras.

-- Visualizar todos los valores del array
select NEmpleado, deptno 
from TipoDatos;

-- Visualizar la segunda posición del array del campo deptno
select NEmpleado, deptno[2] 
from TipoDatos;Lenguaje del código: JavaScript (javascript)

Si quieres conocer las dimensiones de un array puedes utilizar la función array_dims() indicando el nombre del campo entre paréntesis.

Tipos de geometría y red

Existen ciertos tipos de datos especiales relacionados con la geometría y la red:

  • Box: un caja rectangular
  • Linea: un conjunto de puntos.
  • Point: un par geométrico de números.
  • Lseg: un segmento de línea.
  • Polygoon: una geometría.
  • Inet: una dirección IP
  • Macaddr: un dirección MAC

Tipo UUID

El tipo de datos UUID te permite almacenar identificadores únicos universales definidos por RFC 4122. Los valores UUID garantizan una mejor unicidad que SERIAL y se pueden utilizar para ocultar datos confidenciales expuestos al público, como los valores de ID en la URL.

Tipo JSON

PostgreSQL proporciona dos tipos de datos JSON: JSON y JSONB para almacenar datos JSON.

El tipo de datos JSON almacena datos JSON simples que requieren revisión para cada procesamiento, mientras que el tipo de datos JSONB almacena datos JSON en un formato binario que es más rápido de procesar pero más lento de insertar. Además, JSONB admite la indexación.

Escribir un comentario