2.6. 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 2.1 apresenta alguns tipos suportados pelo PostgreSQL.
Tipo |
Descrição |
nomes alternativos |
|
---|---|---|---|
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 |
|
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 |
||
boolean |
valores |
bool |
|
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 |
||
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 2.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('Gilberto');
Dica
A lista completa dos tipos básicos do PostgreSQL pode ser consultada em Data Types.