PostgreSQL

Exemplos práticos de conjuntos, utilizando União (UNION), Interseção (INTERSECT) e Diferença (EXCEPT) com o PostgreSQL

Utilizar conjuntos no PostgreSQL, usando recursos como a União, Interseção e Diferença podem ser bastante úteis no dia-a-dia. O mais utilizado é a União, mas a Interseção e Diferença também são necessárias em muitos momentos. Disponibilizei também uma base de testes, que você pode utilizar para testar os exemplos que vou mostrar aqui.

 

Para que funcionem corretamente, é necessário que os selects utilizados tenham o mesmo número de colunas e dados do mesmo tipo.

União (UNION E UNION ALL)
O UNION serve para juntar ou unir dois selects, um abaixo do outro. As linhas repetidas são ignoradas.

Exemplo 1.

SELECT nom_prof AS nome FROM professores
UNION
SELECT nom_alu AS nome FROM alunos

No exemplo 1, o primeiro select retorna os nomes de todos os professores, e o segundo retorna o nome de todos os alunos. O UNION junta todos os nomes em uma única lista.

O UNION ALL é bastante semelhante ao UNION. A única diferença é que as linhas repetidas são exibidas.

Exemplo 2:

SELECT nom_prof AS nome FROM professores
UNION ALL
SELECT nom_alu AS nome FROM alunos

O exemplo 2 faz a mesma coisa do exemplo 1, com a diferença que as linhas repetidas são exibidas no exemplo 2.

Interseção (INTERSECT)
Exibe apenas os registros que estão nos dois selects.

Exemplo 3:

SELECT nom_prof AS nome FROM professores
INTERSECT
SELECT nom_alu AS nome FROM alunos

Diferença (EXCEPT)
São exibidas as linhas que estão no primeiro select, mas não estão no segundo select.

Exemplo 4:

SELECT nom_prof AS nome FROM professores
EXCEPT
SELECT nom_alu AS nome FROM alunos

Exemplos práticos de SELECTs simples com o PostgreSQL

O SQL é uma linguagem padrão para os bancos de dados relacionais, como o MySQL e SQL Server, mas como a sintaxe pode mudar um pouco de um SGBD para outro, resolvi fazer esse pequeno artigo com alguns exemplos práticos de alguns selects simples com o PostgreSQL. Disponibilizei também uma base de testes, que você pode utilizar para testar os exemplos que vou mostrar aqui.

Exemplo 1:

SELECT mat_alu AS matricula, nom_alu AS nome
FROM alunos

No exemplo acima estou trazendo a matrícula e o nome dos alunos que constam na tabela alunos.

Exemplo 2:

SELECT mat_alu AS matricula, nom_alu AS nome
FROM alunos
WHERE cod_curso = 10

No exemplo 2, utilizei a clausula WHERE para trazer apenas os alunos do curso com código 10.

Exemplo 3:

SELECT mat_alu AS matricula, nom_alu AS nome
FROM alunos
WHERE cod_curso = 10 or cod_curso = 8

No exemplo 3, trago apenas os alunos de cursos dos cursos de código 8 ou 10

Exemplo 4:

SELECT mat_alu AS matricula, nom_alu AS nome
FROM alunos
WHERE nom_alu like 'A%'

No exemplo 4, trago todos os alunos que tem o nome começado pela letra 'A'


Controle Acadêmico: Banco de Dados PostgreSQL para Estudo/Treinamento com Estrutura em Português

Algum tempo atrás postei um artigo com um banco de dados de exemplo para MySQL. Agora resolvi postar um para PostgreSQL. Tem uma estrutura bem diferente: é um controle acadêmico (simplificado, é claro). É bastante útil se você estiver estudando o PostgreSQL ou ministrando um treinamento básico.

Para fazer o download da base de dados, clique aqui.

Caso você precise da base de dados para algum trabalho acadêmico ou qualquer outro uso, fique à vontade para usar!


Perdi a senha do PostgreSQL no Ubuntu! E agora!?

Há alguns meses atrás fiz um artigo explicando como recuperar a senha do MySQL no Ubuntu. Dessa vez vou fazer o mesmo no PostgreSQL. É tão simples quanto.

Abra o Terminal (Menu Principal / Acessórios / Terminal) e digite:

sudo -u postgres psql template1
alter user postgres with password 'NOVA_SENHA'
\q (para sair)

O procedimento foi testado no Ubuntu 10.04 LTS.

Fonte: http://forum.wmonline.com.br/topic/201179-instalei-postgre-no-ubuntu-mas-ele-nao-me-deu-a-senha/


Exemplo prático de como criar tabela com chaves estrangeiras no PostgreSQL

O PostgreSQL, assim como cada banco, tem suas particularidades. O conceito de criação de tabelas é basicamente o mesmo de banco pra banco, mas às vezes a sintaxe muda. Nesse artigo vou mostrar um pequeno exemplo prático de como criar duas tabelas, onde uma referencia a outra por meio de uma chave estrangeira (foreign key). Se você está procurando uma documentação mais completa, pode encontrar aqui e aqui. E vamos ao exemplo:

A primeira tabela a ser criada é uma tabela de estados. Ela possui uma chave primária (ds_sigla_estado):

CREATE TABLE tb_estado (
 ds_sigla_estado char(2) NOT NULL,
 ds_nome_estado character varying(100) NOT NULL,
 CONSTRAINT tb_estado_pkey PRIMARY KEY (ds_sigla_estado)
)

A segunda tabela é tb_município, que possui uma chave primária (id_municipio) e faz referência (chave estrangeira) ao campo ds_sigla_estado em tb_estado.

CREATE TABLE tb_municipio (
 id_municipio serial NOT NULL,
 ds_municipio character varying(100) NOT NULL,
 ds_sigla_estado char(2) NOT NULL references tb_estado(ds_sigla_estado),
 CONSTRAINT tb_municipio_pkey PRIMARY KEY (id_municipio)
)

Entendeu? Se não, utilize os comentários e tire suas dúvidas ou então leia mais sobre o assunto aqui e aqui.


MySQL ou PostgreSQL? Eis a questão!

Essa pergunta é feita por muita gente que trabalha com desenvolvimento e conhece alguma coisa de algum dos dois. No senso comum, se ouve muito o seguinte: “MySQL é pra coisas menores, mais simples. PostgreSQL é pra projetos de grande porte”. Mas será que isso é verdade? E porque escolher um ou outro?

O que eles têm em comum

  • São Software Livre;
  • São gratuitos (nem todo Software Livre é gratuito);
  • São encontrados facilmente em vários provedores por aí;
  • Possuem também suporte pago (do MySQL é oferecido pela Oracle. O do PostgreSQL é oferecido por empresas como EnterpriseDB);
  • São bem populares, e por isso se encontra bastante documentação (mas se encontra mais material do MySQL).

O lado político da coisa

Do ponto de vista “político”, tem uma diferença importante entre eles: o MySQL é da Oracle, uma grande empresa multinacional. O PostgreSQL não. Ele é mantido diretamente pela comunidade.

Isso quer dizer que a Oracle é “dona” do MySQL e pode fechar o código a qualquer momento? Não, não é bem assim. Ela é dona da marca MySQL, e pode descontinuar o produto a seu bel prazer ou deixar de liberar a versão grátis. Mas todo o código já produzido é livre, e se alguém ou alguma empresa quizer dar continuidade ao projeto com outro nome (fazer um fork), pode fazer. Inclusive isso já aconteceu: foi lançado o MariaDB.

O MariaDB é baseado no MySQL e foca na compatibilidade com ele, então a ideia é que ele não vá se tornando cada vez mais incompatível conforme as versões vão sendo lançadas, e sim que ele permaneça lado a lado com o MySQL, mas sem ser da Oracle. O criador do MariaDB é um dos criadores do MySQL: o finlandês Michael “Monty” Widenius.

O problema é que a instabilidade das decisões de uma empresa como a Oracle pode afetar a confiança no produto. Foi o que aconteceu com o OpenOffice (também da Oracle). A comunidade estava instisfeita com o rumo que o projeto vinha tomando, e decidiu fundar o LibreOffice. O próprio BrOffice agora é LibreOffice. Isso – ao meu ver – é uma coisa boa, pois agora o poder não está mais nas mãos da Oracle, e sim da comunidade.

O lado técnico

Muito do que se ouve falar sobre ambos é antigo, e vem de estereótipos antigas, do MySQL 4.1 (a atual é 5.5) e do PostgreSQL 7.4 (a atual é 9.0). O MySQL possui agora vários recursos que antes não tinha, e o PostgreSQL está muito mais rápido. É comparado por muitos com o Oracle.

Mais de 75 recursos foram adicionados ao PostgreSQL de lá pra cá, resultado de um trabalho de vários anos para remover pontos chave que causavam problemas de escalabilidade. É possível também compactar e descompactar dados “on-the-fly”. A vantagem disso é que reduz a necessidade de acesso a disco, aumentando a performance.

O PostgreSQL possui apenas um sistema de armazenamento, e o MySQL possui vários. Você pode escolher de acordo com o tipo do projeto. Os mais utilizados no MySQL são InnoDB e MyISAM. O MyISAM é mais rápido que o sistema do PostgreSQL, mas tem um custo. Alguns recursos, como chaves estrangeiras e transações não estão disponíves. O InnoDB possui recursos para garantir mais integridade nos dados, mas é mais lento que o MyISAM. O PostgreSQL pode ser mais lento ou mais rápido que o MySQL utilizando o InnoDB, dependendo das configurações e recursos utilizados.

Trocando em miúdos

O MySQL pode ser sim uma boa opção em sistemas mais simples e bases menores, como um site ou um sistema que não tenha milhares de usuários concorrentes. Para sistemas mais complexos, que necessitam de maior integridade nos dados, que possuem milhões de linhas e vários TeraBytes de informação, o PostgreSQL pode ser a melhor opção. Mas lembre-se que em ambos existem várias configurações que podem ser feitas para melhorar vários aspectos. Se você lê em inglês, pode encontrar bastante informação aqui: http://www.wikivs.com/wiki/MySQL_vs_PostgreSQL e aqui http://wiki.postgresql.org/wiki/Why_PostgreSQL_Instead_of_MySQL_2009.


Separar dia, mês e ano de uma data no PostgreSQL

No PostgreSQL, uma das formas de separar o dia, mês e ano de uma data (campo tipo DATE ou TIMESTAMP), é necessário utilizar a função EXTRACT. Veja o exemplo abaixo:

select
   EXTRACT(DAY FROM data_nascimento) as dia,
   EXTRACT(MONTH FROM data_nascimento) as mes,
   EXTRACT(YEAR FROM data_nascimento) as ano
      from tb_clientes

EnterpriseDB lança versão comercial e ferramentas de segurança para o PostgreSQL 9

Essa semana a EnterpriseDB, a maior empresa prestadora de suporte comercial ao banco de dados PostgreSQL – o mais importante banco de dados livre atualmente – lançou o Postgres Plus Standard Server 9, que é uma versão comercial do PostgreSQL 9 lançado pela comunidade em setembro de 2010. A empresa também lançou ferramentas desenvolvidas para auxiliar os usuários do banco a ter mais segurança em suas bases e seus códigos.

“O Postgres Plus Standard Server 9 inclui todas as atualizações liberadas desde setembro”, informa Robin Schumacher, diretor de estratégia de produto na EnterpriseDB para a InternetNews.com.

Foram lançada três ferramentas. São elas:

Fonte: http://itmanagement.earthweb.com/secu/article.php/3921476/EnterpriseDB-Releases-New-Postgres-Plus-Security-Tools.htm


Maiores Patrocinadores do PostgreSQL

Pra quem nunca ouviu falar, 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, incluindo GNU/Linux, Unix e Windows.

Platinum

Command Prompt, Inc. (Estados Unidos)
EnterpriseDB (Estados Unidos)
Red Hat, Inc. (Estados Unidos)

Gold

2ndQuadrant (Reino Unido)
credativ GmbH (Alemanha)
Dalibo (França)
NTT Group (Japão)

Silver

conova communications GmbH (Áustria)
OverBlog (França)
Sun Microsystems, Inc. (Estados Unidos)

Bronze

Fujitsu (Austrália)
HP (Estados Unidos)
OTG (Estados Unidos)
Skype (Luxemburgo)

Fonte: http://www.postgresql.org/about/sponsors


Conectar ao PostgreSQL com o PHP e escolher um banco de dados

Diferente do MySQL, todas as informações são passadas em uma única string. Substitua servidor, banco_de_dados, usuario e senha por seus dados.
Veja como fazer:

$conexao = pg_connect("host=servidor dbname=banco_de_dados user=usuario password=senha") 
or die (pg_last_error());

  • Publicidade

  • Redes Sociais

    Facebook  Twitter
  • Estatísticas

    Page Views (desde março de 2010):

    Estatísticas detalhadas
  • Novidades por e-mail!

    Digite seu e-mail:


    Fique tranquilo. Seu e-mail não será usado para outros fins, e você poderá se descadastrar quando quizer.

    Eu!

    Tiago Passos
    Todo o conteúdo desse site esta licenciado sob a licença Creative Commons 3.0 (CC BY 3.0). Você pode copiar e modificar o conteúdo desde que cite o autor.
    iDream theme by Templates Next | Powered by WordPress