História
O Postgres, desenvolvido originalmente no Departamento de Ciência de
Computação da Universidade de Berkeley, foi pioneiro em muitos dos
conceitos objeto-relacionais que agora estão disponíveis em alguns bancos
de dados comerciais. Fornece suporte a linguagem SQL92/SQL99,
integridade de transações e extensibilidade de tipos. O PostgreSQL é um
descendente com código aberto do código original desenvolvido em
Berkeley.
Características
O PostgreSQL é um poderoso sistema gerenciador de banco de dados
objeto-relacional de código aberto. Tem mais de 15 anos de
desenvolvimento ativo e uma arquitetura que comprovadamente
ganhou forte reputação de confiabilidade, integridade de dados e
conformidade a padrões. Roda em todos os grandes sistemas
operacionais:
 GNU/Linux,
 Unix
 AIX,
 BSD,
 HP-UX,
 SGI IRIX,
 Mac OS X,
 Solaris,
 Tru64,
 e MS Windows
Características
É totalmente compatível com ACID, tem suporte completo a chaves
estrangeiras, junções (JOINs), visões, gatilhos e procedimentos
armazenados (em múltiplas linguagens). Inclui a maior parte dos tipos
de dados do ISO SQL:1999, incluindo INTEGER, NUMERIC, BOOLEAN,
CHAR, VARCHAR, DATE, INTERVAL, e TIMESTAMP. Suporta também o
armazenamento de objetos binários, incluindo figuras, sons ou vídeos.
Possui interfaces nativas de programação para:
 C/C++,
 Java,
 .Net,
 Perl,
 Python,
 Ruby,
 Tcl,
 ODBC
Características
Como um banco de dados de nível corporativo, o PostgreSQL possui
funcionalidades sofisticadas como:
 o controle de concorrência multiversionado (MVCC),
 recuperação em um ponto no tempo (PITR),
 tablespaces,
 replicação assíncrona,
 transações agrupadas (savepoints),
 cópias de segurança
(online/hot backup),
 planejador de consultas (otimizador),
 registrador de transações sequencial
(WAL) para tolerância a falhas.
Características
 Suporta conjuntos de caracteres internacionais,
 codificação de caracteres multibyte,
 Unicode e sua ordenação por localização,
 sensibilidade a caixa (maiúsculas e minúsculas) e formatação.
Características
É altamente escalável, tanto na quantidade enorme de
dados que pode gerenciar, quanto no número de
usuários concorrentes que pode acomodar. Existem
sistemas ativos com o PostgreSQL em ambiente de
produção que gerenciam mais de 4TB de dados.
Alguns limites do PostgreSQL estão incluídos na tabela
abaixo:
Tamanho Máximo do Banco de Dados Ilimitado
Tamanho máximo de uma Tabela 32 TB
Tamanho Máximo de uma Linha 1.6 TB
Tamanho Máximo de um Campo 1 GB
Máximo de Linhas por Tabela Ilimitado
Máximo de Colunas por Tabela 250–1600
Máximo de Índices por Tabela Ilimitado
Peculiaridades
PostgreSQL automaticamente converte todos identificadores (tipo
nomes de tabela/coluna) para minúsculo na criação do objeto e na
query. Para força o uso misto de maiúsculo ou minúsculo, você precisa
usar escape no identificador usando aspas dupla ("").
Peculiaridades
PostgreSQL não tem comandos especiais para obter informação dos
dados do banco de dados (dicionário de dados) (tipo todas as tabelas do
banco de dados atual). Ao invés, há um schema padrão chamado
information_schema no PostgreSQL 7.4 e superior contendo views do
sistema com todas as informações necessárias, em um form fácil de
acessá-las.
pSQL
O psql é um cliente no modo terminal do PostgreSQL.
Permite digitar comandos interativamente, submetê-
los para o PostgreSQL e ver os resultados. Como
alternativa, a entrada pode vir de um arquivo. Além
disso, disponibiliza vários meta-comandos e diversas
funcionalidades semelhantes às do interpretador de
comandos (shell) para facilitar a criação de scripts e
automatizar um grande número de tarefas.
PGADMIN
Existem várias ferramentas de administração disponíveis
para o PostgreSQL. A mais popular é a pgAdmin, e
existem várias outras ferramentas comerciais disponíveis.
Criação de banco
ADD SERVER
ADDRESS 127.0.0.1
DESCRIPTION CDTeste
SERVICE Teste
PORT 5432
MAINTENANCE DB Postgres
USERNAME Postgres
SENHA system
Criação de tabelas
create table cd (
codigo_cd int not null,
codigo_gravadora int not null,
nome_cd varchar(50) not null,
preco_venda decimal (5,2) not null,
data_lancamento smalldatetime not null,
cd_indicado int not null);
create table cd (
codigo_cd integer UNIQUE NOT NULL,
codigo_gravadora integer not null,
nome_cd varchar(50) not null,
preco_venda numeric (5,2) not null,
data_lancamento timestamp not null,
cd_indicado integer not null);
Criação de tabelas – Chaves PK e FK
alter table cd add primary key (codigo_cd);
alter table cd ADD CONSTRAINT cd_codigo_cd_pkey PRIMARY KEY
(codigo_cd);
alter table cd add foreign key (cd_indicado) references cd;
alter table cd
add constraint fk_cd_cd
foreign key (codigo_cd)
references cd (codigo_cd);
Criação de tabelas - Inserções
insert into estado values('AC', 'Acre');
insert into estado values('AL', 'Alagoas');
insert into estado values('AP', 'Amapá');
insert into estado (id, title, author_id, subject_id)
VALUES (41472, 'Practical PostgreSQL', 1212, 4);
Restrições
Constrain CHECK
Ao criar uma tabela podemos prever que o banco exija que o valor de um campo satisfaça
uma expressão
--Restrição de verificação
CREATE TABLE products (
product_no integer,
name text,
price numeric CHECK (price > 0)
);
--Restrição de valor não nulo
CREATE TABLE products (
product_no integer NOT NULL,
name text NOT NULL,
price numeric NOT NULL CHECK (price > 0)
);
Restrições
Constrain UNIQUE
Garante que os dados contidos em uma coluna ou um grupo de colunas, é único no que diz
respeito a todas as linhas na tabela.
CREATE TABLE products (
product_no integer UNIQUE,
name text,
price numeric
);
Herança
CREATE TABLE cidades (
nome text,
populacao real,
altitude int -- (em pés)
);
CREATE TABLE capitais (
estado char(2)
) INHERITS (cidades);
Esquemas
Um banco de dados pode conter vários esquemas e dentro de cada um desses
podemos criar várias tabelas. Ao invés de criar vários bancos de dados, criamos
um e criamos esquemas dentro desse. Isso permite uma maior flexibilidade, pois
uma única conexão ao banco permite acessar todos os esquemas e suas tabelas.
Portanto devemos planejar bem para saber quantos bancos precisaremos,
quantos esquemas em cada banco e quantas tabelas em cada esquema.
Regras
O comando CREATE RULE cria uma regra aplicada à tabela ou visão especificada.
Uma regra faz com que comandos adicionais sejam executados quando um
determinado comando é executado em uma determinada tabela.
É importante perceber que a regra é, na realidade, um mecanismo de
transformação de comando, ou uma macro de comando.
As RULES (regras) permitem executar uma
ação alternativa em: inclusão, alteração,
exclusão e seleção (somente em caso de
visões).
Em outras palavras, uma regra faz com
que sejam executados comandos
adicionais quando é executado um
determinado comando em uma tabela.
Diferentemente das regras, os TRIGGERS
(gatilhos) podem ser acionados antes
(before) ou depois (after) de alguma ação
de insert, update e delete.
Diferenças entre o SQL Server e PostgreSQL
Escolhendo um servidor de banco de dados não é simples. SQL Server,
PostgreSQL e todos oferecem uma forma de organizar e armazenar
dados, mas cada um tem seus próprios benefícios exclusivos. Escolha a
que melhor atenda às suas necessidades começa com a compreensão
das diferenças entre essas opções.
Diferenças entre o SQL Server e PostgreSQL
Sistema Operacional
Nem todos os servidores de banco de dados podem ser executados em
qualquer sistema operacional. O programa de banco de dados
PostgreSQL pode ser executado em Windows 2000 ou superior, Mac,
Unix e Linux.
SQL Server só roda em Windows XP ou qualquer versão do Windows
2000 ou superior.
Diferenças entre o SQL Server e PostgreSQL
Instalação e Manutenção
Instalação e manutenção de banco de dados é o que vai gastar a maior
parte do seu tempo depois de baixá-lo. SQL Server é bem mais
complicado que o PostgreSQL. Independentemente disso, em ambos
será necessário algum treino para entender e administrar se a pessoa
encarregada de bases de dados da organização é nova para a tecnologia.
Diferenças entre o SQL Server e PostgreSQL
Vistas
Os programas variam um pouco na forma como você pode usar views. O
SQL Server permite views atualizáveis, materializaveis, e intercambiáveis.
O PostgreSQL também suporta exibições atualizáveis, mas o designer
tem que escrever regras contra views ordenadas para atualizá-las.
Diferenças entre o SQL Server e PostgreSQL
Recursos disponíveis apenas no PostgreSQL
O banco de dados PostgreSLQ tem mais recursos internos. Por exemplo,
permite que o SQL dinâmico e ação em funções. Em outras palavras,
você pode usar funções de ação dentro de declarações SELECT. Suporta
índices funcionais e parciais e é o único que pode definir funções
personalizadas agregadas em C, SQL, plpgsql, e qualquer linguagem PL.
Recursos disponíveis apenas no PostgreSQL
O banco de dados PostgreSLQ tem mais recursos internos. Por exemplo,
permite que o SQL dinâmico e ação em funções. Em outras palavras,
você pode usar funções de ação dentro de declarações SELECT. Suporta
índices funcionais e parciais e é o único que pode definir funções
personalizadas agregadas em C, SQL, plpgsql, e qualquer linguagem PL.
Diferenças entre o SQL Server e PostgreSQL
Dúvidas?
Obrigado.

Introdução ao BD Postgre

  • 2.
    História O Postgres, desenvolvidooriginalmente no Departamento de Ciência de Computação da Universidade de Berkeley, foi pioneiro em muitos dos conceitos objeto-relacionais que agora estão disponíveis em alguns bancos de dados comerciais. Fornece suporte a linguagem SQL92/SQL99, integridade de transações e extensibilidade de tipos. O PostgreSQL é um descendente com código aberto do código original desenvolvido em Berkeley.
  • 3.
    Características O PostgreSQL éum poderoso sistema gerenciador de banco de dados objeto-relacional de código aberto. Tem mais de 15 anos de desenvolvimento ativo e uma arquitetura que comprovadamente ganhou forte reputação de confiabilidade, integridade de dados e conformidade a padrões. Roda em todos os grandes sistemas operacionais:  GNU/Linux,  Unix  AIX,  BSD,  HP-UX,  SGI IRIX,  Mac OS X,  Solaris,  Tru64,  e MS Windows
  • 4.
    Características É totalmente compatívelcom ACID, tem suporte completo a chaves estrangeiras, junções (JOINs), visões, gatilhos e procedimentos armazenados (em múltiplas linguagens). Inclui a maior parte dos tipos de dados do ISO SQL:1999, incluindo INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, e TIMESTAMP. Suporta também o armazenamento de objetos binários, incluindo figuras, sons ou vídeos. Possui interfaces nativas de programação para:  C/C++,  Java,  .Net,  Perl,  Python,  Ruby,  Tcl,  ODBC
  • 5.
    Características Como um bancode dados de nível corporativo, o PostgreSQL possui funcionalidades sofisticadas como:  o controle de concorrência multiversionado (MVCC),  recuperação em um ponto no tempo (PITR),  tablespaces,  replicação assíncrona,  transações agrupadas (savepoints),  cópias de segurança (online/hot backup),  planejador de consultas (otimizador),  registrador de transações sequencial (WAL) para tolerância a falhas.
  • 6.
    Características  Suporta conjuntosde caracteres internacionais,  codificação de caracteres multibyte,  Unicode e sua ordenação por localização,  sensibilidade a caixa (maiúsculas e minúsculas) e formatação.
  • 7.
    Características É altamente escalável,tanto na quantidade enorme de dados que pode gerenciar, quanto no número de usuários concorrentes que pode acomodar. Existem sistemas ativos com o PostgreSQL em ambiente de produção que gerenciam mais de 4TB de dados. Alguns limites do PostgreSQL estão incluídos na tabela abaixo: Tamanho Máximo do Banco de Dados Ilimitado Tamanho máximo de uma Tabela 32 TB Tamanho Máximo de uma Linha 1.6 TB Tamanho Máximo de um Campo 1 GB Máximo de Linhas por Tabela Ilimitado Máximo de Colunas por Tabela 250–1600 Máximo de Índices por Tabela Ilimitado
  • 8.
    Peculiaridades PostgreSQL automaticamente convertetodos identificadores (tipo nomes de tabela/coluna) para minúsculo na criação do objeto e na query. Para força o uso misto de maiúsculo ou minúsculo, você precisa usar escape no identificador usando aspas dupla ("").
  • 9.
    Peculiaridades PostgreSQL não temcomandos especiais para obter informação dos dados do banco de dados (dicionário de dados) (tipo todas as tabelas do banco de dados atual). Ao invés, há um schema padrão chamado information_schema no PostgreSQL 7.4 e superior contendo views do sistema com todas as informações necessárias, em um form fácil de acessá-las.
  • 10.
    pSQL O psql éum cliente no modo terminal do PostgreSQL. Permite digitar comandos interativamente, submetê- los para o PostgreSQL e ver os resultados. Como alternativa, a entrada pode vir de um arquivo. Além disso, disponibiliza vários meta-comandos e diversas funcionalidades semelhantes às do interpretador de comandos (shell) para facilitar a criação de scripts e automatizar um grande número de tarefas.
  • 11.
    PGADMIN Existem várias ferramentasde administração disponíveis para o PostgreSQL. A mais popular é a pgAdmin, e existem várias outras ferramentas comerciais disponíveis.
  • 12.
    Criação de banco ADDSERVER ADDRESS 127.0.0.1 DESCRIPTION CDTeste SERVICE Teste PORT 5432 MAINTENANCE DB Postgres USERNAME Postgres SENHA system
  • 13.
    Criação de tabelas createtable cd ( codigo_cd int not null, codigo_gravadora int not null, nome_cd varchar(50) not null, preco_venda decimal (5,2) not null, data_lancamento smalldatetime not null, cd_indicado int not null); create table cd ( codigo_cd integer UNIQUE NOT NULL, codigo_gravadora integer not null, nome_cd varchar(50) not null, preco_venda numeric (5,2) not null, data_lancamento timestamp not null, cd_indicado integer not null);
  • 14.
    Criação de tabelas– Chaves PK e FK alter table cd add primary key (codigo_cd); alter table cd ADD CONSTRAINT cd_codigo_cd_pkey PRIMARY KEY (codigo_cd); alter table cd add foreign key (cd_indicado) references cd; alter table cd add constraint fk_cd_cd foreign key (codigo_cd) references cd (codigo_cd);
  • 15.
    Criação de tabelas- Inserções insert into estado values('AC', 'Acre'); insert into estado values('AL', 'Alagoas'); insert into estado values('AP', 'Amapá'); insert into estado (id, title, author_id, subject_id) VALUES (41472, 'Practical PostgreSQL', 1212, 4);
  • 16.
    Restrições Constrain CHECK Ao criaruma tabela podemos prever que o banco exija que o valor de um campo satisfaça uma expressão --Restrição de verificação CREATE TABLE products ( product_no integer, name text, price numeric CHECK (price > 0) ); --Restrição de valor não nulo CREATE TABLE products ( product_no integer NOT NULL, name text NOT NULL, price numeric NOT NULL CHECK (price > 0) );
  • 17.
    Restrições Constrain UNIQUE Garante queos dados contidos em uma coluna ou um grupo de colunas, é único no que diz respeito a todas as linhas na tabela. CREATE TABLE products ( product_no integer UNIQUE, name text, price numeric );
  • 18.
    Herança CREATE TABLE cidades( nome text, populacao real, altitude int -- (em pés) ); CREATE TABLE capitais ( estado char(2) ) INHERITS (cidades);
  • 19.
    Esquemas Um banco dedados pode conter vários esquemas e dentro de cada um desses podemos criar várias tabelas. Ao invés de criar vários bancos de dados, criamos um e criamos esquemas dentro desse. Isso permite uma maior flexibilidade, pois uma única conexão ao banco permite acessar todos os esquemas e suas tabelas. Portanto devemos planejar bem para saber quantos bancos precisaremos, quantos esquemas em cada banco e quantas tabelas em cada esquema.
  • 20.
    Regras O comando CREATERULE cria uma regra aplicada à tabela ou visão especificada. Uma regra faz com que comandos adicionais sejam executados quando um determinado comando é executado em uma determinada tabela. É importante perceber que a regra é, na realidade, um mecanismo de transformação de comando, ou uma macro de comando. As RULES (regras) permitem executar uma ação alternativa em: inclusão, alteração, exclusão e seleção (somente em caso de visões). Em outras palavras, uma regra faz com que sejam executados comandos adicionais quando é executado um determinado comando em uma tabela. Diferentemente das regras, os TRIGGERS (gatilhos) podem ser acionados antes (before) ou depois (after) de alguma ação de insert, update e delete.
  • 21.
    Diferenças entre oSQL Server e PostgreSQL Escolhendo um servidor de banco de dados não é simples. SQL Server, PostgreSQL e todos oferecem uma forma de organizar e armazenar dados, mas cada um tem seus próprios benefícios exclusivos. Escolha a que melhor atenda às suas necessidades começa com a compreensão das diferenças entre essas opções.
  • 22.
    Diferenças entre oSQL Server e PostgreSQL Sistema Operacional Nem todos os servidores de banco de dados podem ser executados em qualquer sistema operacional. O programa de banco de dados PostgreSQL pode ser executado em Windows 2000 ou superior, Mac, Unix e Linux. SQL Server só roda em Windows XP ou qualquer versão do Windows 2000 ou superior.
  • 23.
    Diferenças entre oSQL Server e PostgreSQL Instalação e Manutenção Instalação e manutenção de banco de dados é o que vai gastar a maior parte do seu tempo depois de baixá-lo. SQL Server é bem mais complicado que o PostgreSQL. Independentemente disso, em ambos será necessário algum treino para entender e administrar se a pessoa encarregada de bases de dados da organização é nova para a tecnologia.
  • 24.
    Diferenças entre oSQL Server e PostgreSQL Vistas Os programas variam um pouco na forma como você pode usar views. O SQL Server permite views atualizáveis, materializaveis, e intercambiáveis. O PostgreSQL também suporta exibições atualizáveis, mas o designer tem que escrever regras contra views ordenadas para atualizá-las.
  • 25.
    Diferenças entre oSQL Server e PostgreSQL Recursos disponíveis apenas no PostgreSQL O banco de dados PostgreSLQ tem mais recursos internos. Por exemplo, permite que o SQL dinâmico e ação em funções. Em outras palavras, você pode usar funções de ação dentro de declarações SELECT. Suporta índices funcionais e parciais e é o único que pode definir funções personalizadas agregadas em C, SQL, plpgsql, e qualquer linguagem PL.
  • 26.
    Recursos disponíveis apenasno PostgreSQL O banco de dados PostgreSLQ tem mais recursos internos. Por exemplo, permite que o SQL dinâmico e ação em funções. Em outras palavras, você pode usar funções de ação dentro de declarações SELECT. Suporta índices funcionais e parciais e é o único que pode definir funções personalizadas agregadas em C, SQL, plpgsql, e qualquer linguagem PL. Diferenças entre o SQL Server e PostgreSQL
  • 27.