Ganhe R$20 de desconto na primeira corrida com a 99Taxi!

Bancos de Dados

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/


Sakila: Banco de Dados MySQL para Estudo/Treinamento com Estrutura em Português

Algumas semanas atrás estava ministrando um treinamento de SQL Básico para os novos estagiários na empresa em que trabalho, e o conteúdo era formado basicamente por: SELECTs, INSERTs, UPDATEs e DELETEs. A criação de tabelas e bancos não fazia parte da ementa. Com isso me veio a seguinte dúvida:

Será que não existe nenhuma base de dados que possa ser usado como exemplo num caso como esses? Uma base que já venha preenchida – com dados fictícios – para que seja melhor compreendido o uso de SELECTs utilizando JOINS, por exemplo?

Foi aí que encontrei um projeto chamado Sakila, desenvolvido para o MySQL, que é exatamente o que eu estava procurando. Trata-se de uma base de dados de uma locadora fictícia, e contém filmes, atores, clientes, locações, funcionários e tudo mais que uma sistema de locadora teria direito. Bastante útil para o que eu precisava. Você pode baixar o Sakila original em inglês aqui e outras bases de exemplo aqui.

O único "problema" é que a estrutura do Sakila é toda em inglês. Na verdade, não é exatamente um problema, mas isso pode dificultar um pouco a compreensão de quem não é muito bom em inglês.

Para resolver isso, eu traduzi a estrutura da base, ou seja, nomes de tabelas, colunas e chaves. O projeto original também possui outros recursos, como triggers, views e procedures, mas como não era do meu interesse no momento, eu removi esses recursos da base.

Para fazer o download do Sakila com estrutura em português, clique aqui.

Futuramente pretendo criar versões do Sakila para outros SGBD's, como o PostgreSQL e SQL Server, mas por causa do meu pouco tempo, não posso precisar uma data. Se você tiver interesse de colaborar com outros usuários do blog e fazer uma versão diferente, terei prazer em colocar o link aqui. 🙂

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


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.


Banco de Dados com tabela das cidades do Brasil para os SGBD MySQL e SQL Server

Hoje estava fazendo um trabalho utilizando o SQL Server 2005, e precisei de uma tabela com as cidades do Brasil. Consegui uma com as cidades, siglas dos estados e os códigos dos municípios fornecidos pelo IBGE. Aproveitei e converti a tabela para o MySQL. Disponibilizo aqui os dois arquivos, para quem se interessar:

Cidades do Brasil – SQL Server

Cidades do Brasil – MySQL

Atenção: O arquivo referente ao SQL Server é um arquivo .bak, ou seja, é um backup da base completa. O arquivo referente ao MySQL contém apenas a tabela das cidades, ou seja, a base já deverá estar criada antes da importação.

 


Problemas ao exportar ou importar dados com o phpMyAdmin e o banco de dados MySQL

Se você está tentando exportar ou importar um arquivo grande, utilizando o phpMyAdmin e o banco de dados MySQL, e não está conseguindo, eu posso ter a solução.

Algumas vezes provedores bloqueam a exportação e importação de arquivos grandes com o phpMyAdmin e o MySQL. Muitas vezes nem precisa ser tão grande assim… Basta alguns megabytes e você já começa a ter problemas. Você simplesmente não consegue exportar ou importar dados.

Para resolver isso, uma solução é acessar diretamente a linha de comando e fazer o procedimento por lá. Uma tarefa que estava levando vários minutos para ser concluída, pode ser rapidamente executada em poucos segundos. Se você não tem acesso físico ao servidor, terá que verificar com seu provedor se é o SSH é liberado pra você, e só assim será possível fazer esse procedimento.

O procedimento foi testado no Ubuntu 10.04 LTS, mas deverá funcionar em qualquer distribuição Linux (e talvez até no Windows). Acesse o terminal (No Ubuntu, clique em Aplicativos / Acessórios / Terminal) e digite o seguinte:

Para importar dados

mysql -u usuario -p banco_de_dados < arquivo.sql

Substitua o que está em vermelho pelas informações corretas, correspondentes ao seu sistema. Será solicitada a senha em seguida. Se você está usando em sua máquina, onde você instalou o MySQL, possivelmente o usuário é root e a senha em branco.

Para exportar dados

mysqldump -u usuario -p banco_de_dados > arquivo.sql

Substitua o que está em vermelho pelas informações corretas, correspondentes ao seu sistema. Será solicitada a senha em seguida.

É isso! Espero que tenha ajudado.


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.


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

Não se desespere! Nessa vida tem jeito pra tudo. Somos humanos, e esquecemos senhas, certo? Então se isso aconteceu com você, tem uns comandos bem rápidos que vão te tirar do desespero. Aqui vai:

Acesse o Terminal (Aplicativos/Acessórios/Terminal):

sudo /etc/init.d/mysql stop
sudo mysqld --skip-grant-tables &
mysql -u root mysql
UPDATE user SET Password=PASSWORD('SUANOVASENHA') WHERE User='root'; FLUSH PRIVILEGES; exit;

Pronto. Agora você pode acessar o MySQL normalmente com sua senha nova.

Veja aqui como gerar uma nova senha do PostgreSQL no Ubuntu.

O procedimento foi testado no Ubuntu 10.04 LTS.


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

  • Publicidade

  • Redes Sociais

    Facebook  Twitter
  • Projetos Paralelos

  • 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