sexta-feira, 30 de agosto de 2013

Instalando e configurando o MySQL no Ubuntu 13.04

Olá galera,

No post de hoje, vamos instalar e configurar o MySQL para ser utilizado em uma aplicação em PHP. No terminal execute o comando.

sudo apt-get install mysql-server mysql-workbench php5-mysql libmysqlclient-dev

Assim que iniciar a instalação será solicitado uma senha e a sua confirmação.

Agora que tudo foi instalado, abra o MySQL Workbench e configure uma nova conexão. Clique em "Store in keychain" e coloque a senha que você setou na instalação.

Teste a conexão para ver se tudo foi configurado corretamente.

Crie um novo schema chamado aplicacao com o collation utf8.

Clicando com o botão direito em cima do banco aplicacao, selecione a opção "Set as Default Schema".

No próximo post, daremos início a nossa aplicação com PHP.

Grande abraço e até a próxima.

quarta-feira, 21 de agosto de 2013

Concatenando registros no PostgreSQL e SQL Server

Olá galera,

Hoje falaremos sobre a concatenação de registros com SQL. Vamos adotar uma tabela chamada compras que possui as colunas codigo, cliente, produto já com dados inseridos.

Abaixo o resultado de uma consulta simples com dados hipotéticos.

codigo cliente produto
1 João Cerveja
1 João Carne
1 João Queijo
2 Maria Sabonete
2 Maria Chocolate

Agora imagine um resultado, sem tantas repetições, como a tabela abaixo.

codigo cliente produto
1 João Cerveja, Carne, Queijo
2 Maria Sabonete, Chocolate

No PostgreSQL 9.1 usaremos a função string_agg que aceita uma expressão e um delimitador.

SELECT codigo, cliente, string_agg(produto, ', ') AS produto FROM compras GROUP BY codigo, cliente

Já no SQL Server 2008, já é um pouco mais trabalhoso. Usaremos a função STUFF que insere uma cadeia de caracteres em outra cadeia de caracteres e o comando FOR XML PATH para gerar documentos XML extraídos a partir de um banco de dados.

SELECT codigo, cliente, STUFF((SELECT ', ' + produto FROM compras AS b WHERE a.codigo = b.codigo FOR XML PATH('')), 1, 1, '') AS produto FROM compras AS a GROUP BY codigo, cliente

Conhece outras formas de fazer?! Tem experiências com outros bancos?! Poste um comentário e compartilhe seu conhecimento.

Grande abraço a todos e até a próxima.

sexta-feira, 16 de agosto de 2013

Instalando o Laravel 4 no Ubuntu 13.04

Olá galera,

Hoje falaremos da instalação do Laravel 4 no Ubuntu 13.04. Nos próximos posts daremos início a construção de uma aplicação básica mostrando algumas funcionalidades desse framework.

Antes de realizar a instalação, temos alguns requisitos mínimos:

  • PHP >= 5.3.7
  • php5-mcrypt - Extensão MCrypt do PHP

O primeiro passo é fazer o download do framework através do link https://github.com/laravel/laravel. Crie um diretório chamado aplicacao dentro de /var/www e descompacte o conteúdo do download dentro dele.

Pelo terminal, acesse o diretório aplicacao.

cd /var/www/aplicacao

Vamos instalar e executar o Composer que é um gerenciador de dependências para o PHP.

php -r "eval('?>'.file_get_contents('https://getcomposer.org/installer'));"
php composer.phar install

Com esses procedimentos executados já temos nosso framework instalado.

Agora crie um Virtual Host para nossa aplicação. Para isso, siga os passos do post Criando Virtual Host com Apache no Ubuntu 12.10.

Ao se acessar a url http://aplicacao teremos uma tela de erro.

Corrigiremos o problema dando permissão na pasta storage.

sudo chmod -R 777 /var/www/aplicacao/app/storage

Tente acessar a aplicação novamente e deve ser exibida a tela abaixo.

Bem pessoal por hoje é só. Um bom final de semana a todos e até a próxima.

domingo, 4 de agosto de 2013

Dicas para o SQL Server

Olá galera,

No post Aplicação PHP rodando no Linux com banco de dados SQL Server no Windows, falei sobre o problema de strings acentuadas não aparecerem na aplicação. Após esse post, recebi alguns e-mails de visitantes solicitando que listasse quais os problemas que encontrei nessa aplicação.

Comentarei sobre alguns pontos para usuários que usam PostgreSQL e não possuem muita "intimidade" com SQL Server.

1º - Se utilizarmos na constraint de relacionamento o restrict, no SQL Server devemos usar o no action.

2º - No caso de scritps de inserção de dados, no SQL Server devemos utilizar o IDENTITY_INSERT.

No PostgreSQL, por exemplo, é suficiente fazermos INSERT INTO perfil VALUES (1, 'Administrador');, já no SQL Server devemos declarar as colunas explicitamente. Segue abaixo um trecho de código exemplificando.

    SET IDENTITY_INSERT perfil ON
    INSERT INTO perfil (id, nome) VALUES (1, 'Administrador');
    SET IDENTITY_INSERT perfil OFF
  

3º - As datas no SQL Server seguem o padrão YYYYmmdd sem os hífens.

4º - No SQL Server não existe o ILIKE, o LIKE já cumpre esse papel também. Para consultas com acento devemos usar o COLLATE SQL_Latin1_General_CP1_CI_AI. Segue abaixo um exemplo.

    SELECT nome FROM pessoas WHERE nome COLLATE SQL_Latin1_General_CP1_CI_AI LIKE '%Joao%'
  

5º - No update, a chave primária não pode ser atualizada como no PostgreSQL.

6º - A concatenação no SQL Server é feita através de "+" e não com "||" como no PostgreSQL.

Com certeza há vários pontos que não foram abordados. Os que citei se referem a uma aplicação que tive como experiência.

Você gostaria de compartilhar sua experiência com esse tipo de aplicação ?! Envie um comentário ou um e-mail que terei a maior satisfação em colocar sua dica no post.

Grande abraço a todos e até a próxima.