1.5. Tipos de Dados SQL

Um tipo de dado (data type) é definido por um conjunto de valores e um conjunto de operações sobre esses valores. No PostgreSQL, toda coluna de uma tabela é associada a um tipo, que define as operações que podem ser realizadas sobre os valores dessa coluna. O core do PostgreSQL contém um conjunto de tipos de dados chamados de fundamentais ou primitivos (built-in types), para manipulação de valores numéricos, lógicos (ou booleanos), strings (cadeia de caracteres), data e hora, entre outros.

A Tabela 1.1 apresenta alguns tipos suportados pelo PostgreSQL.

Tabela 1.1 - Tipos de Dados do PostgreSQL

Tipo

Descrição

nomes alternativos

Números Inteiros

integer

Número inteiro com sinal

int, int4

bigint

Número inteiro com sinal

int8

serial

Número inteiro com sinal (autoincremental)

serial4

bigserial

Número inteiro com sinal (autoincremental)

serial8

Números reais

real

Números em ponto flutuante de precisão simples

float4

double precision

Números em ponto flutuante de precisão dupla

float8

numeric [(p, s)]

Números exatos com precisão controlada

Booleano

boolean

valores true ou false

bool

Strings

character [(n)]

Cadeia de caracteres de tamanho fixo

char [(n)]

character varying [(n)]

Cadeia de caracteres de tamanho variável

varchar [(n)]

text

Cadeia de caracteres de tamanho variável

Data e Hora

timestamp [(p)] [without time zone]

Data e hora sem fuso horário

timestamp [(p)] with time zone

Data e hora com fuso horário

timestamptz

date

Data

time [ (p) ] [ without time zone ]

Hora do dia sem fuso horário

time [ (p) ] with time zone

Hora do dia com fuso horário

Nota

Os valores individuais de cada tipo são chamados de literais ou constantes.

Podemos realizar consultas SQL no PostgreSQL usando apenas a cláusula SELECT. Abaixo, são apresentados alguns exemplos da notação empregada para valores literais de alguns dos tipos de dados listados na Tabela 1.1:

SELECT 473;           -- número inteiro
SELECT 4.1;           -- numeric
SELECT true;          -- valor lógico verdadeiro
SELECT 'Satélite';    -- sequência de caracteres
SELECT TIMESTAMP WITH TIME ZONE '2022-10-11 06:15:00-03';  -- data e hora com fuso horário

Nota

Nos exemplos acima, os carcteres -- são usados para escrita de comentários. Todo o conteúdo da linha após esses caracteres não são tratados como comandos e, portanto, são desconsiderados pelo interpretador de consultas do PostgreSQL. Esse tipo de comentário é conhecido como comentário de linha. É possível também utilizar os delimitadores /* e */ para criar comentários que se expandem por múltiplas linhas, que são chamados de comentários de bloco.

No PostgreSQL podemos utilizar a função pg_typeof para obter o tipo de dado associado a um determinado valor:

SELECT pg_typeof(30);
SELECT pg_typeof(22.5);
SELECT pg_typeof(5 / 2 + 4 * 5);
SELECT pg_typeof(TIMESTAMP WITH TIME ZONE '2022-10-11 06:15:00-03');
SELECT pg_typeof('Eduardo');

Dica

A lista completa dos tipos básicos pode ser consultada no manual do PostgreSQL na seção Data Types.