Buscar..


Introducción

PostgreSQL tiene un amplio conjunto de tipos de datos nativos disponibles para los usuarios. Los usuarios pueden agregar nuevos tipos a PostgreSQL usando el comando CREAR TIPO.

https://www.postgresql.org/docs/9.6/static/datatype.html

Tipos numericos

Nombre Tamaño de almacenamiento Descripción Distancia
smallint 2 bytes entero de rango pequeño -32768 a +32767
integer 4 bytes elección ypical para entero -2147483648 a +2147483647
bigint 8 bytes entero de gran rango -9223372036854775808 a +9223372036854775807
decimal variable precisión especificada por el usuario, exacta hasta 131072 dígitos antes del punto decimal; hasta 16383 dígitos después del punto decimal
numeric variable precisión especificada por el usuario, exacta hasta 131072 dígitos antes del punto decimal; hasta 16383 dígitos después del punto decimal
real 4 bytes precisión variable, inexacta Precisión de 6 dígitos decimales
double precision 8 bytes precisión variable, inexacta Precisión de 15 dígitos decimales
smallserial 2 bytes pequeño entero autoincremento 1 a 32767
serial 4 bytes autoincremento entero 1 a 2147483647
bigserial 8 bytes entero autoincremento grande 1 a 9223372036854775807
int4range Rango de enteros
int8range Gama de bigint
numrange Rango de numérico

Tipos de fecha / hora

Nombre Tamaño de almacenamiento Descripción Bajo valor Alto valor Resolución
timestamp (sin zona horaria) 8 bytes fecha y hora (sin zona horaria) 4713 aC 294276 dC 1 microsegundo / 14 dígitos
timestamp (con zona horaria) 8 bytes fecha y hora, con zona horaria 4713 aC 294276 dC 1 microsegundo / 14 dígitos
date 4 bytes fecha (sin hora del día) 4713 aC 5874897 dC 1 día
time (sin zona horaria) 8 bytes hora del día (sin fecha) 00:00:00 24:00:00 1 microsegundo / 14 dígitos
time (con zona horaria) 12 bytes solo horas del día, con zona horaria 00: 00: 00 + 1459 24: 00: 00-1459 1 microsegundo / 14 dígitos
interval 16 bytes intervalo de tiempo -178000000 años 178000000 años 1 microsegundo / 14 dígitos
tsrange rango de marca de tiempo sin zona horaria
tstzrange rango de marca de tiempo con zona horaria
daterange rango de fecha

Tipos geometricos

Nombre Tamaño de almacenamiento Descripción Representación
point 16 bytes Punto en un avion (x, y)
line 32 bytes Linea infinita {A B C}
lseg 32 bytes Segmento de línea finita ((x1, y1), (x2, y2))
box 32 bytes Caja rectangular ((x1, y1), (x2, y2))
path 16 + 16n bytes Ruta cerrada (similar a polígono) ((x1, y1), ...)
path 16 + 16n bytes Camino abierto [(x1, y1), ...]
polygon 40 + 16n bytes Polígono (similar a la ruta cerrada) ((x1, y1), ...)
circle 24 bytes Circulo <(x, y), r> (punto central y radio)

Tipos de direcciones de red

Nombre Tamaño de almacenamiento Descripción
cidr 7 o 19 bytes Redes IPv4 e IPv6
inet 7 o 19 bytes IPv4 e IPv6 hosts y redes
macaddr 6 bytes Direcciones MAC

Tipos de personajes

Nombre Descripción
character varying(n) , varchar(n) longitud variable con límite
character(n) , char(n) longitud fija, acolchado en blanco
text longitud ilimitada variable

Arrays

En PostgreSQL puede crear matrices de cualquier tipo integrado, definido por el usuario o enumeración. De forma predeterminada, no hay límite para una matriz, pero puede especificarla.

Declarando una matriz

SELECT integer[];
SELECT integer[3];
SELECT integer[][];
SELECT integer[3][3];
SELECT integer ARRAY;
SELECT integer ARRAY[3];

Creando un Array

SELECT '{0,1,2}';
SELECT '{{0,1},{1,2}}';
SELECT ARRAY[0,1,2];
SELECT ARRAY[ARRAY[0,1],ARRAY[1,2]];

Accediendo a un Array

Por defecto, PostgreSQL usa una convención de numeración basada en uno para los arreglos, es decir, un arreglo de n elementos comienza con el array[1] y termina con el array[n] .

--accesing a spefific element
WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT int_arr[1] FROM arr;

int_arr
---------
        0
(1 row)

--sclicing an array
WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT int_arr[1:2] FROM arr;

int_arr
---------
    {0,1}
(1 row)

Obtener información sobre una matriz

--array dimensions (as text)
with arr as (select ARRAY[0,1,2] int_arr) select array_dims(int_arr) from arr;

array_dims
------------
       [1:3]
(1 row)

--length of an array dimension
 WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT array_length(int_arr,1) FROM arr;

 array_length
 --------------
              3
 (1 row)

--total number of elements across all dimensions
 WITH arr AS (SELECT ARRAY[0,1,2] int_arr) SELECT cardinality(int_arr) FROM arr;
 
 cardinality
 -------------
             3
 (1 row)

Funciones de matriz

será añadido



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow