Translate

quinta-feira, 27 de fevereiro de 2014

PostgreSql - Criar tabela primeira parte

Para criarmos uma tabela, devemos conhecer basicamente o que são colunas, linhas e tipo de dados. Nesta primeira parte do artigo, vamos apresentar estes conceitos, utilizando a tabela "tb_paciente".
Na segunda parte vamos mostrar como criá-la e incluir registros utilizando comandos sql.
Veja a tabela "tb_paciente" exibida na imagem abaixo:



Ao observar a figura concluímos que:
  • as colunas estão dispostas verticalmente (em pé). Neste exemplo temos 6 colunas, cada coluna possui um nome. Os nomes das colunas são:
    • prontuario: número do prontuário do paciente;
    • nome: nome do paciente;
    • data_nasc: data de nascimento do paciente;
    • sexo: sexo do paciente;
    • peso: peso do paciente;
    • proc_cirurgico: indica se o paciente já passou ou não por um procedimento cirúrgico
  • cada linha, disposta horizontalmente (deitada), contém um registro (conjunto de dados), nesta tabela temos 3 registros;
Devemos atribuir a cada coluna um tipo de dado, ou seja devemos indicar qual o tipo de conteúdo que vamos armazenar. Exemplo:
  • data: 15/01/2014, 01/02/2014
  • um número inteiro: 1, 2, 3
  • um número decimal: 40.4, 70.8, 85,7
  • caracteter: caracteres alfanuméricos, ou seja, letras (a-z A-Z) e números (0-9). Também armazena símbolos, por exemplo ,"!@$*&";
A seguir, apresentamos tipos de dados mais utilizados postgresql:

TIPOS DE DADOS NUMÉRICOS
Nome Espaço ocupado Descrição Intervalo
smallint 2 bytes Armazena números inteiros: o intervalo é pequeno.
Estes números seriam aceitos em um campo do tipo smallint: -30000, -500, 0, 7, 800 e 31000.
Estes números não seriam aceitos em um campo do tipo smallint: -40000, -36000, 32800 e 39500. Pois estão fora do intervalo.
De   -32768
Até +32767
integer 4 bytes Armazena números inteiros: o intervalo é médio. Abrange a maioria das necessidades do cotidiano.
Estes números seriam aceitos em um campo do tipo integer: -120341, 95000, 0, 70000, 800000 e 319425.
Estes números não seriam aceitos em um campo do tipo integer: -4147483643 e 5147483646. Pois estão fora do intervalo.
De   -2147483648
Até +2147483647
bigint 8 bytes Armazena números inteiros: o intervalo é grande.
Estes números seriam aceitos em um campo do tipo bigint: -738526341, -4511956147, 0, 2473971242 e 1236843121.
Estes números não seriam aceitos em um campo do tipo bigint: -9453372036854775864 e 9853372036854775935. Pois estão fora do intervalo.
De   -9223372036854775808
Até +9223372036854775807
numeric variável As casas decimais são separadas por ponto. Utiliza-se numeric quando é necessário gravar o valor exato. Sintaxe
numeric(x, y)
  • x: máximo de dígitos permitidos;
  • x - y: a subtração de x menos y, indica o número máximo de dígitos inteiros permitidos;
  • y: número máximo de casas decimais;
Exemplo:
numeric(5, 3)
Aceita no máximo 5 dígitos: 2 dígitos para inteiro e 3 para decimal.

número incluído número gravado
4.2 4.200
4.26 4.260
4.268 4.268
4.2683 4.268
4.268754 4.269
57.432 57.432
572.341 Erro: "Estouro de
campo."

Se o número tiver menos de 3 casas decimais, as casas serão completadas com zero.
Se o número tiver mais de 3 casa decimais, o números será arredondado até 3 casas decimais.
Se o número tiver mais de 2 dígitos inteiros haverá um erro: "estouro de campo".
Armazena até 131072 digítos antes do ponto e 16383 digitos depois do ponto.
decimal variável É equivalente ao tipo numeric. As casas decimais são separadas por ponto.
Sintaxe
decimal(x, y)
  • x: máximo de dígitos permitidos;
  • x - y: a subtração de x menos y, indica o número máximo de dígitos inteiros permitidos;
  • y: número máximo de casas decimais;
Exemplo:
decimal(5, 3)
Aceita no máximo 5 dígitos: 2 dígitos para inteiro e 3 para decimal.

número incluído número gravado
4.2 4.200
4.26 4.260
4.268 4.268
4.2683 4.268
4.268754 4.269
57.432 57.432
572.341 Erro: "Estouro de
campo."

Se o número tiver menos de 3 casas decimais, as casas serão completadas com zero.
Se o número tiver mais de 3 casa decimais, o números será arredondado até 3 casas decimais.
Se o número tiver mais de 2 dígitos inteiros haverá um erro: "estouro de campo".
Armazena até 131072 digítos antes do ponto e 16383 digitos depois do ponto.
real 4 bytes As casas decimais são separadas por ponto. Utiliza-se real quando não é necessário gravar o valor exato. Exemplo:

número incluído número gravado
2.43 2.43
0.12345689 0.123457
0.123456 0.123456
8.123456 8.12346
88.123456 88.1235
888.123456 888.123
8888.123456 8888.12
88888.123456 88888.1
888888.1234567 888888
888888.7234567 888888

Armazena até 6 casas decimais.
double precision 8 bytes As casas decimais são separadas por ponto. Utiliza-se double precision quando não é necessário gravar o valor exato. Exemplo:

número incluído número gravado
5.721 5.721
3.4528 3.4528
8 8
8.0 8
0.123456789012345 0.123456789012345
8.123456789012345 8.12345678901234
88.123456789012345 88.1234567890124
888.123456789012345 888.123456789012

Armazena até 15 casas decimais.
serial 4 bytes Autoincremento inteiro. Seqüência crescente e automática: 1, 2, 3, ...
Esse intervalo atende a maioria das necessidades.
Exemplo:

matrícula aluno
1 Ana
2 Paulo
3 Carlos

Se precisássemos incluir uma nova aluna chamada Maria na tabela, o número da matrícula seria 4, pois é o próximo número da seqüência. Esse número será gerado automaticamente.

matrícula aluno
1 Ana
2 Paulo
3 Carlos
4 Maria

De                 1
Até 2147483647
smallserial 2 bytes Autoincremento inteiro. Seqüência crescente e automática: 1, 2, 3, ...
Este intervalo é pequeno.
Este tipo surgiu na versão 9.2 do PostgreSql, logo funcionará nesta versão ou em versão superiores. Exemplo:

matrícula aluno
1 Ana
2 Paulo
3 Carlos

Se precisássemos incluir uma nova aluna chamada Maria na tabela, o número da matrícula seria 4, pois é o próximo número da seqüência. Esse número será gerado automaticamente.

matrícula aluno
1 Ana
2 Paulo
3 Carlos
4 Maria

De         1
Até 32767
bigserial 8 bytes Autoincremento inteiro. Seqüência crescente e automática: 1, 2, 3, ...
Este intervalo é grande.
Exemplo:

matrícula aluno
1 Ana
2 Paulo
3 Carlos

Se precisássemos incluir uma nova aluna chamada Maria na tabela, o número da matrícula seria 4, pois é o próximo número da seqüência. Esse número será gerado automaticamente.

matrícula aluno
1 Ana
2 Paulo
3 Carlos
4 Maria

De                                1
Até 9223372036854775807


TIPOS DE DADOS CARACTERE
Nome Descrição
character varying(n)

ou

varchar(n)
varchar é uma alias(apelido) para character varying.
Armazena caracteres alfanuméricos, ou seja, letras (a-z A-Z) e números (0-9). Também armazena símbolos, por exemplo ,"!@$*&". Lembrando que espaço em branco é considerado caracter.
n indica a quantidade máxima de caracteres que o campo irá armazenar.

Exemplo:

A tabela abaixo possui uma coluna chamada "descricao" do tipo character varying(5).

descricao
character varying(5)
a
ab
abc
abcde
XYZUT
Efghi
lm no
#am12


Se tentarmos incluir a string "abcdef" ocorrerá um erro: "valor é muito longo para tipo character varying(5)", isso acontece porque o tamanho da string "abcdef" é 6, ou seja, o tamanho da string é maior que o tamanho permitido 5.

Podemos declarar, o character varying sem o n. O campo não terá mais um limite máximo de caracteres, porém poderá armazenar no máximo 1 GB de dados.

descricao
character varying
abcdefghi ABCDEFGHIZ 0123456789 !@#$%&*()+.

character(n)

ou

char(n)
char é uma alias(apelido) para character.
Armazena caracteres alfanuméricos, ou seja, letras (a-z A-Z) e números (0-9). Também armazena símbolos, por exemplo ,"!@$*&". Lembrando que espaço em branco é considerado caracter.
n indica uma quantidade fixa de caracteres que o campo irá armazenar.
Caso a string armazenada seja menor que o tamanho do campo, a string será completada com espaço em branco.


Exemplo:

A tabela abaixo possui uma coluna chamada "descricao" do tipo character(3).

descricao
character(3)
a
ab
abc


A string "a" tem 1 caracter e será completada com 2 espaços em branco para manter o valor fixo de 3 caracteres.

A string "ab" tem 2 caracteres e será completada com 1 espaço em branco para manter o valor fixo de 3 caracteres.

Se tentarmos incluir a string "abcdef" ocorrerá um erro: "valor é muito longo para tipo character (3)", isso acontece porque o tamanho da string "abcdef" é 6, ou seja, o tamanho da string é maior que o tamanho permitido 3.

Devido ao preenchimento com espaços em branco, este tipo de dado é indicado para armazenar strings com valores fixos. Exemplo: armazenar as siglas dos estados brasileiros.

estados
character(2)
AC
BA
RS
SP



Podemos declarar, o character sem o n. O campo terá o limite máximo de 1 caracter.

descricao
character(1)
x

text O campo não tem um limite máximo de caracteres, porém poderá armazenar no máximo 1 GB de dados.


TIPOS DE DADOS DATA E HORA
Nome Espaço
ocupado
Descrição
date 4 bytes Armazena a data.

formato
date
2014-02-20

time with time zone 12 bytes Armazena a hora com o fuso horário (time zone). -03 é o fuso do Brasil (horário de Brasília)
Exemplo:

formato
time with time zone
14:59:49.761-03

time without time zone

ou

time
8 bytes Armazena a hora sem fuso horário (time zone).
Exemplo:

formato
time without time zone
08:21:13.764

timestamp with time zone 8 bytes Armazena a data, hora e o fuso horário (time zone).
-03 é o fuso do Brasil (horário de Brasília)
Exemplo:

formato
timestamp with time zone
2014-02-20 14:20:56.691-03

timestamp without time zone

ou

timestamp
8 bytes Armazena a data e a hora. Não armazena o fuso horário (time zone).
Exemplo:

formato
timestamp without time zone
2014-02-20 13:25:25.255

interval 12 bytes Armazena um intervalo de tempo. O intervalo pode ser, por exemplo, 1 ano (1 year), 1 dia (1 day), 1 hora (1 hour), 1 minuto (1 minute), entre outros.
Exemplo:

formato
interval
1 hour



TIPO BOOLEANO
Nome Espaço
ocupado
Descrição
boolean 1 byte O tipo boolean possui os seguintes estados:
  • estado verdadeiro: é representado por TRUE, 't', 'true', 'y', 'yes', 'on' ou '1';
  • estado falso: representado por FALSE, 'f', 'false', 'n', 'no', 'off' ou '0';
  • estado desconhecido: unknow, representado pelo valor nulo, ou seja NULL;

Exemplo:

teste
boolean
t


Valor nulo
O valor nulo é representado pela identificação null. Significa que nenhum valor foi inserido, em outras palavras, significa ausência de valor. O valor null pode ser utilizado com qualquer tipo de dado.

Leia o artigo:

Postgresql - Criar tabela segunda parte
PostgreSql - Criar um banco de dados parte I
PostgreSql - Criar um banco de dados parte II
PostgreSql - Criar um banco de dados parte III

Nenhum comentário:

Postar um comentário