4.7.1. Tipos logicos

4.7.1. Tipos logicos Dataprix 23 Octubre, 2009 - 13:54

PostgreSQL incorpora el tipo lógico boolean, también llamado bool. Ocupa un byte de espacio de almacenamiento y puede almacenar los valores falso y verdadero.

Valor Nombre
Falso false, ‘f’, ‘n’, ‘no’, 0
Verdadero true, ‘t’, ‘y’, ‘yes’, 1

PostgreSQL soporta los operadores lógicos siguientes: and, or y not.

Aunque los operadores de comparación se aplican sobre prácticamente todos los tipos de datos proporcionados por PostgreSQL, dado que su resultado es un valor lógico, describiremos su comportamiento en la siguiente tabla:

Operador Descripción
> Mayor que
<    Menor que   
<= Menor o igual que
>= Mayor o igual que

<>

!=

Distinto de

 

4.7.2. Tipos numericos

4.7.2. Tipos numericos Dataprix 23 Octubre, 2009 - 14:08

PostgreSQL dispone de los tipos enteros smallint, int y bigint que se comportan como lo hacen los enteros en muchos lenguajes de programación.

Los números con punto flotante real y double precisión almacenan cantidades con decimales. Una característica de los números de punto flotante es que pierden exactitud conforme crecen o decrecen los valores.

Aunque esta pérdida de exactitud no suele tener importancia en la mayoría de las  ocasiones,  PostgreSQL  incluye  el  tipo  numeric,  que  permite  almacenar cantidades muy grandes o muy pequeñas sin pérdida de información. Por supuesto, esta ventaja tiene un coste, los valores de tipo numeric ocupan un espacio  de  almacenamiento  considerablemente  grande  y  las  operaciones  se ejecutan sobre ellos muy lentamente. Por lo tanto, no es aconsejable utilizar el tipo numeric si no se necesita una alta precisión o se prima la velocidad de procesamiento.

 

Nombre Tamaño Otros nombres Comentario
smallint 2 bytes int2
int 4 bytes int4, integer
bigint 8 bytes int8
numeric(p,e) 11 + (p/2) ‘p’ es la precisión, ‘e’ es la escala
real 4 bytes float, float4
double precision 8 bytes float8
serial No es un tipo, es un entero autoincrementable

Serial

La declaración serial es un caso especial, ya que no se trata de un nuevo tipo. Cuando se utiliza como nombre de tipo de una columna, ésta tomará automáticamente valores consecutivos en cada nuevo registro.

Ejemplo de una tabla que define la columna folio como tipo serial.

create table Factura(
folio serial,
cliente varchar(30),
monto real
);

PostgreSQL respondería esta instrucción con dos mensajes:

•  En el primero avisa que se ha creado una secuencia de nombre factura_folio_seq:

NOTICE: CREATE TABLE will create implicit sequence `factura_folio_seq´ for SERIAL column `

•  En el segundo avisa de la creación de un índice único en la tabla utilizando la columna folio:

 

NOTICE: CREATE TABLE / UNIQUE will create implicit index `factura_folio_key´ for table `factura´ CREATE

Si se declaran varias columnas con serial en una tabla, se creará una secuencia y un índice para cada una de ellas.