0% acharam este documento útil (0 voto)
54 visualizações48 páginas

Manual PostgreSQL

1) O documento é uma apostila sobre o sistema gerenciador de banco de dados PostgreSQL versão 8.4. 2) Ele contém informações sobre características, recursos, tipos de dados suportados e instruções sobre uso do PostgreSQL. 3) O PostgreSQL é um SGBD objeto-relacional de código aberto multiplataforma com mais de 15 anos de desenvolvimento.

Enviado por

aleschetz
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
54 visualizações48 páginas

Manual PostgreSQL

1) O documento é uma apostila sobre o sistema gerenciador de banco de dados PostgreSQL versão 8.4. 2) Ele contém informações sobre características, recursos, tipos de dados suportados e instruções sobre uso do PostgreSQL. 3) O PostgreSQL é um SGBD objeto-relacional de código aberto multiplataforma com mais de 15 anos de desenvolvimento.

Enviado por

aleschetz
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 48

Apostila PostgreSQL 8.

Componentes: Arthur Baltazar


Catia Regina
Giovane Gabrielli
Jos Felipe
Vitor Cardoso

N 06
N 08
N 21
N 27
N 42

Franco da Rocha
2010

ndice:
Introduo......................................................................................................................... 5
Caractersticas................................................................................................................... 5
Recursos Presentes na Verso mais Recente.................................................................... 6
Sobre o PostgreSQL ......................................................................................................... 6
Limite Valor ..................................................................................................................... 6
Um Pouco da Histria do PostgreSQL............................................................................. 7
Tipos de Dados do PostgreSQL ....................................................................................... 8
Tipos de dados: Caracteres ........................................................................................... 8
Tipos de dados: Numricos .......................................................................................... 8
Nmeros de preciso fixa ............................................................................................. 8
Tipos de ponto flutuante ............................................................................................... 9
Pseudo tipos seriais....................................................................................................... 9
Uso.................................................................................................................................. 10
Criao de banco de dados no PostgreSQL................................................................ 10
Referncias ..................................................................................................................... 49

II

Introduo
O PostgreSQL um SGBD (Sistema Gerenciador de Banco de Dados) objetorelacional de cdigo aberto, com mais de 15 anos de desenvolvimento. robusto e
confivel, alm de ser extremamente flexvel e rico em recursos. Um de seus atrativos
possuir recursos comuns a banco de dados de grande porte (SQL Server), o que o deixa
apto a trabalhar, inclusive, com operaes de misso crtica. Alm disso, trata-se de um
banco de dados verstil, seguro e gratuito disponvel sob uma licena BSD.
O PostgreSQL considerado objeto-relacional por implementar, alm das
caractersticas de um SGBD relacional, algumas caractersticas de orientao a objetos,
como herana e tipos personalizados com conformidade e padres. Ele roda em todos os
grandes sistemas operacionais, incluindo GNU/Linux, Unix (AIX, BSD, HP-UX, SGI
IRIX, Mac OS X, Solaris, Tru64), e MS Windows.
Alm de tudo totalmente compatvel com ACID, tm suporte completo
chaves estrangeiras, junes (JOIN), vises, gatilhos e procedimentos armazenados em
mltiplas linguagens. Inclui a maior parte dos tipos de dados do ISO SQL: 1999,
incluindo INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE,
INTERVAL, e TIMESTAMP. Suporta tambm sons ou vdeos. Possui interfaces
nativas de programao para C/C++, Java, Net, Perl, Python, Ruby, Tcl, ODBC, entre
outros, e uma documentao excepcional.
O PostgreSQL teve patrocnio de diversas empresas, entre as quais se destacam:
Fujitsu, Hub.Org, NTT Group, Red Hat, Skype, SRA e Sun Microsystems. O software
tem adquirido prestgio na comunidade Linux, tendo recebido diversas vezes o prmio
Linux Journal Editor's Choice de melhor Sistema de Gerenciamento de Banco de
Dados.
A aceitao do PostgreSQL tem se ampliado para alm da comunidade de
cdigo aberto. H entre os seus usurios grandes empresas internacionais, rgos
governamentais de vrios pases e universidades de prestgio mundial. Existe uma lista
dos principais usurios no Brasil e no mundo e, tambm, h alguns estudos de caso de
aplicaes que utilizam o PostgreSQL.

Caractersticas
Desenvolvedor: PostgreSQL Global Development Group;
Primeiro lanamento: um de maio de 1995;
ltima verso: 9.0;
Idiomas: 23 idiomas;
Plataforma (sistema Operacional): Multiplataforma;

Compatibilidade: Java, PHP, Python, Ruby, e C/C++;


Suporte: recursos como triggers, views, stored procedures, SSL, MVCC,
Website: http://www.PostgreSQL.org.br;

Recursos Presentes na Verso mais Recente


Consultas complexas
Chaves Estrangeiras
Integridade Transacional
Controle de concorrncia multi-verso
Suporte ao modelo hbrido objeto-relacional
Gatilhos
Vises
Linguagem Procedural em vrias linguagens (PL/pgSQL, PL/Python, PL/Java,
PL/Perl) para Procedimentos armazenados
Indexao por texto
Estrutura para guardar dados Georeferenciados PostGIS

Sobre o PostgreSQL
Como um banco de dados de nvel corporativo, o PostgreSQL possui
funcionalidades sofisticadas como o Controle de Concorrncia Multiversionado
(MVCC), Recuperao em um Ponto no Tempo (PITR), Tablespaces (diviso lgica),
Replicao Assincrnica, Transaes Agrupadas, Cpias de Segurana Quente
(hotbackup), um sofisticado Planejador de Consultas e Registrador de Transaes
Sequenciais (WAL) para tolerncia falhas.
Suporta conjuntos de caracteres internacionais, codificao de caracteres
multibyte, Unicode e sua ordenao por localizao, sensibilidade formatao
(maisculas e minsculas). altamente escalvel, tanto na quantidade enorme de dados
que pode gerenciar, quanto no nmero de usurios concorrentes que pode acomodar.
Existem sistemas ativos com o PostgreSQL em ambiente de produo que gerenciam
mais de 4TB de dados. Alguns limites do PostgreSQL esto includos na tabela abaixo.

Limite Valor
Tamanho Mximo do Banco de Dados Ilimitado
Tamanho mximo de uma Tabela 32 TB
Tamanho Mximo de uma Linha 1.6 TB
Tamanho Mximo de um Campo 1 GB
Mximo de Linhas por Tabela: Ilimitado
Mximo de Colunas por Tabela 2501600 dependendo do
Mximo de ndices por Tabela: Ilimitado
6

Um Pouco da Histria do PostgreSQL


O sistema gerenciador de banco de dados PostgreSQL teve seu incio na
Universidade de Berkeley, na Califrnia, em 1986. poca, um programador chamado
Michael Stonebraker liderou um projeto para a criao de um servidor de banco de
dados relacionais chamado Postgres, oriundo de um outro projeto da mesma instituio
denominado Ingres. Essa tecnologia foi ento comprada pela Illustra, empresa
posteriormente adquirida pela Informix. Porm, mesmo diante disso, dois estudantes de
Berkeley (Jolly Chen e Andrew Yu) compatibilizaram o Postgres linguagem SQL.
Este projeto recebeu o nome de Postgres95.
Em 1996, quando o projeto estava estvel, o banco de dados recebeu o nome de
PostgreSQL. No entanto, enquanto ainda possua o nome Postgres95, o banco de dados
teve vrias mudanas. O seu cdigo foi totalmente revisado e a linguagem SQL foi
definida como padro. Tambm em 1996, o projeto foi renomeado para PostgreSQL a
fim de refletir a nova linguagem de consulta ao banco de dados: SQL.
A primeira verso de PostgreSQL foi a 6.0, liberada em janeiro de 1997. Desde
ento, um grupo de desenvolvedores e de voluntrios de todo o mundo, coordenados
pela Internet, tm mantido o software e desenvolvido novas funcionalidades.
As principais caractersticas acrescentadas nas verses 6.x so o: MVCC
(Controle de Concorrncia Multiverses), melhorias no SQL e novos tipos de dados
nativos (novos tipos de datas e hora e tipos geomtricos).
Em maio de 2000 foi liberada a verso 7.0. As verses 7.x trouxeram as
seguintes novas funcionalidades: Write-Ahead Log (checa as transaes de dados),
Schemas SQL, Outer Joins (juno de dados), Suporte IPv6, Indexao por Texto,
Suporte SSL e
informaes
estatsticas
do banco
de dados.
A verso 8.0 foi lanada em janeiro de 2005 e entre outras novidades, foi a primeira a
ter suporte nativo para Microsoft Windows (tradicionalmente, o PostgreSQL s rodava
de forma nativa em sistemas Unix e, em sistemas Windows - atravs da biblioteca
Cygwin). Dentre as muitas novidades da verso 8.x, pode-se destacar o suporte a
Tablespaces, Savepoints, Point-in-time Recovery, e Two-Phase Commit (2PC).
Em julho de 2009 foi lanada a verso mais nova a 8.4, que detm ferramentas e
comandos para administrao e monitoramento novos ou melhorados. Cada usurio tem
sua funcionalidade favorita que tornar o seu dia-a-dia com o PostgreSQL mais fcil e
produtivo. Dentre as principais se destacam:
Restaurao Paralela de Bases de Dados, aumentando a velocidade de
recuperao de cpia de segurana (backup) em at oito vezes;
Permisses por Coluna, permitindo um controle mais granular de dados
sigilosos;
Suporte a Configurao Regional por Banco de Dados, tornando o PostgreSQL
mais til em ambientes com mltiplos idiomas;
Upgrades In-place com o pg_migrator beta, permitindo migraes das 8.3 para a
8.4 sem tirar o banco do ar por muito tempo;
Novas Ferramentas de Monitoramento de Consultas, dando aos administradores
mais detalhes sobre a atividade das consultas.

Tipos de Dados do PostgreSQL


Tipos de dados: Caracteres
No PostgreSQL, existem trs tipos bsicos que podem comportar caracteres
alfanumricos: char, varchar e text. A diferena entre eles est nos limites e estrutura de
armazenamento dos dados.
O tipo char(n) armazena uma cadeia de caracteres com tamanho fixo, tendo
como n o seu tamanho mximo. Ocupa 4+n bytes em disco (se a cadeia de caracteres for
menor que n, o campo preenchido com espaos em branco direita). Esses 4 bytes
fixos so utilizados pelo PostgreSQL para armazenar informaes referentes ao tipo e
tamanho do campo.
O tipo varchar(n) tem como diferena possuir tamanho de armazenamento
varivel, limitado a ncaracteres. Ocupa 4 + m bytes, onde m o nmero de caracteres
efetivamente usados.
O terceiro tipo, denominado text, possui tamanho varivel e um limite muito
grande de armazenamento. Equivale a um varchar(4000000000) e pode ser utilizado
para armazenar campos BLOB do tipo texto.

Tipos de dados: Numricos


Os tipos numricos se subdividem em nmeros inteiros, de preciso fixa, de
ponto flutuante e os pseudo tipos seriais.

Inteiros
Esse tipo armazena nmeros sem componentes fracionais. Nmeros inteiros
possuem limites mximos e mnimos, e qualquer tentativa de se armazenar valores fora
dessa faixa ir gerar um erro. Existem os seguintes tipos inteiros:

smallint ou int2 2 bytes (16 bits)


int, integer ou int4 4 bytes (32 bits)
int8, bigint 8 bytes (64 bits)
Na maior parte dos casos, o tipo integer oferece a melhor relao performance
versus capacidade de armazenamento. O tipo bigint, por ser mais pesado e
conseqentemente mais lento, deve ser usado somente quando a faixa de
armazenamento do integer realmente no for suficiente.

Nmeros de preciso fixa


Os nmeros de preciso fixa so criados com o tipo numeric. Seu uso
recomendado para armazenar valores monetrios e outras quantias nas quais a exatido
necessria.
8

Tipos de ponto flutuante


Os tipos de dado real e double precision so tipos numricos no exatos de
preciso varivel. Na prtica, estes tipos so geralmente implementaes do "Padro
IEEE 754 para Aritmtica Binria de Ponto Flutuante" (de preciso simples e dupla,
respectivamente), conforme suportado pelo processador, sistema operacional e
compilador utilizados.
No exato significa que alguns valores no podem ser convertidos exatamente
para o formato interno, sendo armazenados como aproximaes. Portanto, ao se
armazenar e posteriormente imprimir um valor podem ocorrer pequenas discrepncias.
A gerncia destes erros, e como se propagam atravs dos clculos como, por exemplo:
Se for necessrio armazenamento e clculos exatos (como em quantias
monetrias), em vez de tipos de ponto flutuante deve ser utilizado o tipo numeric.
Se for desejado efetuar clculos complicados usando tipos de ponto flutuante
para algo importante, especialmente dependendo de certos comportamentos em
situaes limites (infinito ou muito prximo de zero), a implementao deve ser
avaliada cuidadosamente.
A comparao de igualdade de dois valores de ponto flutuante pode funcionar
conforme o esperado, ou no.

Pseudo tipos seriais


Os tipos de dado serial e bigserial no so tipos verdadeiros, mas meramente
uma notao conveniente para definir colunas identificadoras nicas (semelhante
propriedade AUTO_INCREMENTO existente em alguns outros bancos de dados).

Uso
Criao de banco de dados no PostgreSQL
Exemplo Biblioteca:
Aps instalar o PostgreSQL, clique em iniciar > todos os programas > PostgreSQL >
pgAdmin III

10

Antes de tudo, necessrio conectar-se com o servidor. Clique com o boto


direito no servidor desejado e clique em conectar, ou apenas clique duas vezes no
servidor.

Depois de conectado, clique no + do seu servidor conectado e com o boto


direito do mouse clique em Banco de Dados > Novo Banco de Dados

11

Normalmente, o criador se torna o dono do novo banco de dados. Super usurios


podem criar bases de dados detidas por outros usurios, usando a clusula OWNER.
Eles podem at mesmo criar bancos de dados pertencentes a usurios sem privilgios
especiais. Os usurios comuns com privilgio CREATEDB s podem criar bases de
dados detidas por si prprios.
Por padro, o novo banco de dados ser criado clonando o banco de dados
padro do sistema template1. Um modelo diferente pode ser especificado por cdigo,
nome do modelo. Em particular, escrevendo TEMPLATE template0, voc pode criar
um banco de dados virgem contendo apenas os objetos padro pr-definidos pela verso
do PostgreSQL. Isso til se voc deseja evitar a cpia de qualquer objeto da instalao
local que possa ter sido adicionado ao template1.

12

Aparecer a janela onde se definir os parmetros do banco de dados a ser


criado:
Nome: definido o nome do banco de dados;
Dono: O nome do usurio do banco de dados que ser o novo banco de dados,
se no for inserido um nome ficar como DEFAULT para utilizar o padro;

Modelo: O nome do modelo a partir do qual pretende criar o novo banco de


dados, se no escolhido, ser usado o modelo padro (template1);

Tablespace: O nome da tabela que ser associado ao novo banco de dados, ou


DEFAULT para utilizar o espao de tabelas do banco de dados modelo. Esta
tabela ser o tablespace padro para os objetos criados neste banco de dados;

Connection Limit: Quantas conexes simultneas podem ser feitas a este banco
de dados. -1 (O padro) significa sem limite.

NOTA: Na guia SQL possvel visualizar e alterar o cdigo de criao do banco de


dados
Neste exemplo, o nome do banco de dados ser Biblioteca e ser usado o
modelo Template1 conforme a imagem abaixo.

13

Aps a criao, ser possvel visualizar o banco de dados que foi criado,
clicando no sinal de + em Banco de dados do lado esquerdo da tela, na guia
propriedades no lado direito da tela.

Para criar as tabelas, chaves e etc.:


Digitando o cdigo poderamos clicar em cima do banco criado com o boto
direito do mouse e clicar em script Create. Veremos essa opo mais adiante. Note que
14

no Painel SQL no canto direito inferior da tela est a visualizao do cdigo que foi
criado quando criamos o banco de dados pela interface.

15

1.
2.
3.
4.

Demonstraremos primeiro a criao do banco de dados pela interface:


A esquerda da tela, clique no sinal de + do banco de dados criado;
Clique no sinal de + de esquemas;
Clique no sinal de + de public;
Clique com o boto direito em Tabelas e clique em Nova Tabela.

Criaremos seis tabelas:


Usuario;
Acervo;
Livro;
Revista;
TipoUsuario;
Emprstimo.

16

Demonstraremos algumas formas de se criar campos, restries e ndices.


A tabela Usuario ter os campos:
CodUsuario;
CodTipo;
Nome;
Endereco;
Telefone
Criaremos agora a tabela Usuario:

No campo nome coloque o nome da tabela


Na prxima etapa criaremos os campos da tabela, mas antes, repare no campo
OID e a opo desmarcada Possui OIDS:
Se uma tabela criada com WITH OIDS, cada registro recebe um OID nico.
OIDs so automaticamente atribudos como inteiros de 4 bytes que so nicos ao longo
de toda instalao. Contudo, eles so limitados em 4 bilhes e, ento, os OIDs comeam
a ser duplicados. O PostgreSQL utiliza OIDs para ligar as tabelas do sistema.
Para numerar registros nas tabelas dos usurios, melhor utilizar SERIAL ao
invs de OIDs porque seqncias SERIAIS so nicas somente em uma tabela; e so
menos propcias a atingir o limite. SERIAL8 est disponvel para armazenar valores de
seqncia com oito bytes.

17

Clique na guia Colunas;


Para adicionar as colunas das tabelas clique em adicionar.

Assim que clicar no boto Adicionar aparecer a seguinte janela:

18

Vamos aos campos:


Nome: digite o nome da coluna a ser criada
Tipo de dado: Digite o tipo de dado da coluna;
Neste exemplo usaremos o tipo de dado serial que um auto-incremento. Como
CodUsuario ser a chave primria e foi um campo criado justamente para relacionar a
tabela Usuario com as outras tabelas, interessante que seja criado o numero
automaticamente sem que o usurio precise preencher esse campo.
No NULL: marque esta opo sempre que o campo (coluna) a ser inserido
no possa ser nulo.
Neste caso, marcaremos essa opo, j que o campo a ser criado se tornar
chave-primria.
Aps marcar as opes clique em OK.
Note que Apareceu na janela a coluna que adicionamos
Clique em Adicionar novamente, dessa vez o nome do campo CodTipo
escolheremos o tipo de dado integer, pois esse campo ser chave estrangeira nessa
tabela. Na tabela TipoUsuario, que ser a de origem, ele ser chave primria do tipo
serial. Esse campo tambm no ser nulo.

Adicione tambm as colunas nome e endereco, s que esses sero do tipo Text.

19

Agora adicionaremos o campo Telefone. Este campo ter o valor padro de 11


caracteres. Clique em OK.

Note que esto listados todos os campos adicionados e a descrio de cada


campo:

20

21

Agora Definiremos a Chave Primria:


Clique na guia restries, mantenha a opo chave primria na caixa de texto e
clique em adicionar:

22

Aparecer a janela abaixo:


Clique na guia Colunas na caixa de texto. Na parte inferior da mesma janela ter
todas as colunas que criamos da tabela. Escolha a opo CodUsuario , em seguida
clique no boto Adicionar.

Agora Clique na guia Propriedades e em Nome defina o nome para a chave


primaria, no nosso caso colocaremos pk_CodUsuario aonde pk vem de Primary
Key. Clique em OK.

23

24

Note que a chave Primria que criamos j est listada.


Observe tambm que na caixa de texto abaixo no h mais a opo Chave
Primria.
Se j houvesse outras tabelas e j existisse o campo para referenciar a chave
estrangeira, poderamos criar agora, mas como no h, clique em OK.

25

Clicando no sinal de + de Tabelas, estar visvel a tabela que criamos.


Clicando no sinal de + da Tabela criada, estar visvel o nmero de colunas,
restries, ndices, regras, e outros. Se voc clicar no sinal de + de Colunas ver todas
as colunas criadas, do mesmo jeito no sinal de + de restries ver a chave primria
que criamos, se voc adicionar chaves estrangeiras, restrio de verificao ou de
unificao tambm as encontrar em restries.

Clique novamente com o boto direito do mouse em tabelas


Dessa vez faremos um caminho um pouco diferente.

26

27

Criaremos a Tabela Acervo, ela conter as colunas:

CodItem
DataInscricao
Quantidade
Paginas
Observaes

Digite o nome da nova tabela, que dessa vez ser Acervo, e clique em OK.

28

Clique no sinal de + em Acervo clique com o boto direito em Colunas e


clique em Nova Coluna.

29

Repare que este outro modo de se chegar mesma janela de definio de


colunas que chegamos antes. CodItem ser a chave primria desta tabela, foi criado
apenas para ser chave primria, j que nenhuma das colunas estava apta, por isso, ser
definido o tipo de dado serial e no ser nulo. Clique em OK.

30

A coluna CodItem j est adicionada na tabela Acervo.


Clique novamente em Colunas com o boto direito do mouse >Nova Coluna e
voc ver a mesma janela.
A coluna DataInscricao ser do tipo date, pois registrar a data de inscrio dos
livros e revistas da biblioteca e no poder ser nulo.Clique em OK.

Crie a coluna Quantidade como tipo de dado Integer e sendo not null, a coluna
Paginas como Integer tambm, porm podendo ser nulo e crie tambm a coluna
Observacoes como tipo de dado Text podendo conter valores nulos.

31

Depois de criados, devero estar aparecendo assim:

Definiremos a nica restrio desta tabela que a chave primria:


Clique com o boto direito do mouse em Restries > Novo Objeto > Nova
Chave Primria

32

V para a guia Colunas escolha a coluna CodItem e clique em Adicionar.

Deve ficar como na figura abaixo:

33

Agora Clique na guia Propriedades, Digite o nome para a chave primria e


clique em OK.

Clique no sinal de + de Restries e veja a chave primria:

34

Crie a tabela livro, ela ter as seguintes colunas:

CodItem :ser do tipo integer e ser not null;


Titulo: ser do tipo text e ser not null;
Subtitulo: ser do tipo text;
Autor: ser do tipo text e ser not null;
Editora: ser do tipo text;
ISBN: ser do tipo text, ser not null e ter 10 caracteres obrigatrios.

Dever ficar assim:

35

Definiremos agora a chave primria que ser CodItem e deixaremos o nome


como PK_Livro:

CodItem tambm ser chave estrangeira,clique em restries novamente >novo


objeto>nova chave estrangeira.

36

Na janela que aparece Coloque um nome para a chave estrangeira, nesse caso
colocaremos fk_CodItem onde FK vem de Foreign Key. Em referncias escolha a
tabela a ser referenciada.

Clique na aba Colunas em Coluna Local escolha a coluna que ser chave estrangeira.
Em Referenciado escolha a coluna da tabela referenciada que ser a referencia de
chave estrangeira. Clique em Adicionar e em seguida em OK.

37

A chave estrangeira que criamos j aparece em Restries

Vamos criar os ndices agora. Nesta tabela sero 3:Titulo,Autor e ISBN.Clique


com o boto direito do mouse em ndices>Novo ndice.

38

Defina o nome de ndice a ser criado.


Nos campos:
Unicidade: Faz com que o sistema procure por valores duplicados na tabela
quando o ndice criado, se existirem dados na tabela, e sempre que novos dados forem
adicionados. A tentativa de inserir ou de atualizar dados, que produza um valor
duplicado, gera um erro.
Mtodo de Acesso: O nome do mtodo de acesso a ser utilizado pelo ndice. O
mtodo de acesso padro o BTREE. O PostgreSQL implementa quatro mtodos de
acesso para os ndices:
BTREE: uma implementao das "B-trees" de alta concorrncia de LehmanYao.
RTREE: implementa "R-trees" padro, utilizando o algoritmo de partio
quadrtica de Guttman.
HASH: uma implementao das disperses lineares de Litwin.
GIST: Generalized Index Search Trees (rvores de Procura de ndice
Generalizadas).

39

NOTAS:

O otimizador de consultas do PostgreSQL vai considerar o uso de um ndice Btree sempre que um atributo indexado estiver envolvido em uma comparao
utilizando um dos seguintes operadores: <, <=, =, >=, >

O otimizador de consultas do PostgreSQL vai considerar o uso de um ndice Rtree sempre que um atributo indexado estiver envolvido em uma comparao
utilizando um dos seguintes operadores: <<, &<, &>, >>, @, ~=, &&

O otimizador de consultas do PostgreSQL vai considerar o uso de um ndice


hash sempre que um atributo indexado estiver envolvido em uma comparao
utilizando o operador =.

Atualmente somente os mtodos de acesso B-tree e Gist suportam ndices com


mais de uma coluna. Por padro, at 16 chaves podem ser especificadas (este
limite pode ser alterado na gerao do PostgreSQL). Na implementao atual,
somente o B-tree suporta ndices nicos.

Uma classe de operador pode ser especificada para cada coluna de um ndice. A
classe de operador identifica os operadores a serem utilizados pelo ndice desta
coluna. Por exemplo, um ndice B-tree sobre inteiros de quatro bytes vai utilizar
a classe de operadores int4_ops; esta classe de operadores inclui funes de
comparao para inteiros de quatro bytes. Na prtica, a classe de operadores
padro para o tipo de dado do campo normalmente suficiente. O ponto
principal em haver classes de operadores que, para alguns tipos de dado, pode
haver mais de uma ordenao que faa sentido. Por exemplo, pode se desejar
ordenar o tipo de dado do nmero complexo tanto pelo valor absoluto, quanto
pela parte real, o que pode ser feito definindo-se duas classes de operadores para
o tipo de dado e, ento, selecionando-se a classe apropriada para a construo do
ndice. Tambm existem algumas classes de operadores com finalidades
especiais:

As duas classes de operadores box_ops e bigbox_ops suportam ndices R-tree


para o tipo de dado box. A diferena entre as duas que bigbox_ops ajusta as
coordenadas da caixa para baixo, evitando excees de ponto flutuante ao
executar multiplicao, adio e subtrao de coordenadas com nmeros de
ponto flutuante muito grande (Nota: isto era verdade h algum tempo atrs, mas
atualmente as duas classes de operadores utilizam ponto flutuante e so
efetivamente idnticas).

40

Clique na guia Colunas escolha a coluna que ser o ndice, neste caso, a coluna
Titulo clique em adicionar depois clique em OK.

Faa a mesma coisa com Autor e ISBN. Dever ficar como na figura abaixo:

41

Criaremos agora uma restrio de unicidade para a tabela ISBN.


A restrio de unicidade garante que os dados contidos na coluna, ou no grupo
de colunas, sejam nicos em relao a todas as outras linhas da tabela.
Clique com o boto direito do mouse em Restries > Novo Objeto > Nova
Restrio de Unicidade.

42

Clique na guia Colunas escolha a coluna desejada, neste caso a coluna ISBN,
clique em Adicionar e clique em OK.

Desta vez, deixaremos o PostgreSQL colocar um nome para restrio.Veja na


imagem abaixo:

43

Demonstraremos agora a criao das outras 3 tabelas por cdigo.


V ao menu Ferramentas >Query Tool:

A tabela Revista ter os campos:

CodItem que ser do tipo integer e not null;


Nome que ser do tipo text e not null;
Tema que ser do tipo text;
Ano que ser do tipo integer e not null;
Numero que ser do tipo text;
ISSN que ser do tipo text, not null e ter oito caracteres.

A tabela TipoUsuario ter os campos:

CodTipo ser do tipo serial e not null;


Tipo ser do tipo text e not null;
Multa ser do tipo money;
Prazo ser do tipo integer e not null.

E por fim, a Tabela Emprstimo ter os campos:

CodEmprestimo ser do tipo serial e not null;


CodItem ser do tipo integer e not null;
CodUsuario ser do tipo integer e not null;
DataEmprestimo ser do tipo date e not null;
DataDevolucao ser do tipo date;
Observaes ser do tipo text.

44

Quando aparecer a janela da Query, digite o cdigo como na imagem abaixo:


Onde:

CREATE TABLE: Cria Tabelas;


Os nomes da tabelas e colunas sendo criadas e referencias so digitadas dentro de aspas ();
Vrgula (,) indica que h mais comando (como se fosse um e);
Ponto e vrgula (;) indica o final do comando;
O sinal de parntese [( ] abrindo como se fosse o inicio e o sinal de parntese fechando [)]
como se fosse o fim do cdigo de um comando;

45

Na figura abaixo estamos adicionando Campos indexados e restrio de


unicidade:

Criando a Tabela TipoUsuario e a chave primria:

46

Criando a ultima tabela, Emprestimo, adicionando chave primria e ndice:

Clique no boto Executar Consulta, Escrever Resultado Para o arquivo


destacado na imagem abaixo. Veja que a Query foi executada com sucesso:

47

Feche a janela da Query, aparecer uma mensagem perguntando se voc quer


salvar a consulta, no nosso caso no salvaremos.
Clique com o boto direito do mouse em tabelas e clique em atualizar:

E pronto! Note que as Tabelas que criamos esto listadas, est criado nosso
exemplo de Banco de Dados.

48

Referncias
http://www.infowester.com/postgremysql.php
http://www.devmedia.com.br/articles/post-6390-Introducao-ao-PostgreSQL.html
http://wiki.PostgreSQL.org/wiki/Introdu%C3%A7%C3%A3o_e_Hist%C3%B3rico
http://www.youtube.com/watch?v=rPR0NCrO1R4&feature=related
http://www.htmlstaff.org/PostgreSQLmanual/sql-createindex.html
http://pgdocptbr.sourceforge.net/pg74/ddl-constraints.html
http://pt.wikibooks.org/wiki/PostgreSQL_Pr%C3%A1tico/DDL/Cria%C3%A7%C3%
A3o_e_Exclus%C3%A3o_de_Bancos,_Esquemas,_Tabelas,_Views,_Constraints,_e
tc
http://pt.wikipedia.org/wiki/UTF-8
http://pt.wikipedia.org/wiki/PostgreSQL
http://www.PostgreSQL.org.br
http://pgdocptbr.sourceforge.net/pg80/extend-type-system.html
http://www.htmlstaff.org/PostgreSQLmanual/sql-createindex.html
http://www.bau-de-dev.com/banco-de-dados/trabalhando-com-chaves-primariasprimary-key-no-PostgreSQL

49

50

Você também pode gostar