Você está na página 1de 11

SQL

Curta sua pipoca com MySQL


Aprenda alguns truques e conceitos da
linguagem SQL aplicada ao MySQL e
monte sua locadora
Domine a lngua MySQL
Uma abordagem terica-prtica sobre a
linguagem de banco de dados mais
usada no mundo
chassi.indd 1 17/9/2008 12:06:01
NA PRTICA
8 geEk especial
Curta sua
pipoca com MySQL
Aprenda alguns truques e conceitos da linguagem
SQL aplicada ao MySQL e monte sua locadora
I
magine a seguinte situao: voc entra em uma locadora, escolhe
seu lme e pede balconista. Ela pergunta seu cdigo, mas voc
no se lembra. A garota procura seu cadastro por meio de uma
parte do seu nome, ou outro dado que voc tenha informado em
sua cha. Ento, ela insere a locao no sistema com registro de
data para controlar quantos dias voc car com o lme. O sistema
dessa locadora no difcil de se reproduzir, desde que eles saibam
utilizar seu banco de dados.
Os recursos citados no pargrafo acima esto neste tutorial, que
ensina, de forma prtica, como aproveitar bem o MySQL. O sistema
possuir trs tabelas bsicas: clientes, lmes e aluguis. Em aluguis
existe apenas a referncia aos dados das outras duas tabelas, mas o
banco retornar todas as informaes juntas, automaticamente.
Ao contrrio do que muitos acreditam, o banco de dados no so-
mente uma ferramenta de armazenamento de informaes, mas pode,
tambm, manipular e retornar as informaes pr-conguradas. O
programador, geralmente, aprofunda-se na linguagem que acha mais
interessante, como PHP, ASP ou Java, e termina por no perceber
que, cedo ou tarde, ter de colocar as informaes em um banco de
dados. No para fazer um backup de todas as matrias do site, mas
para dar praticidade aos sistemas. O que ele no sabe que, por
no conhecer bastante a linguagem, ele pode perder funcionalidades
importantes do prprio banco.
E se fosse possvel que o banco de dados retornasse quaisquer
nmeros que voc gravasse como decimais? E se, para isso, no fosse
necessria nenhuma programao extra? E se pudssemos relacionar
uma ou mais tabelas e o banco de dados as retornasse j mescladas
com os valores referentes? Conhecendo um pouco mais a linguagem
SQL, a programao no precisa car reinventando a roda.
Comece aprendendo os tipos de dados que o banco suporta. Se
quiser guardar um nmero, escolha, preferencialmente, o tipo inteiro.
Mas se esse nmero precisa de casas decimais, como um valor mo-
netrio, use o tipo de dado oat que guarda os nmeros com quantas
casas decimais voc preferir. Contudo, se esse valor for referente a
um telefone ou CEP, na verdade, ele no um numero, mas um en-
dereamento, e deve ser tratado como tal, ou seja, pertence ao tipo
varchar. Portanto, um nmero s um nmero quando voc puder
fazer clculos matemticos sobre ele.
Listas, tambm conhecidas como ENUM, no guardam diversos va-
lores ao mesmo tempo, elas tm um grupo de palavras ou expresses
que so aceitas pelo banco. Se tentar inserir um nmero diferente,
ele cancelar a incluso do registro.
Data e hora so um problema para qualquer programador: ter
que dividir os pedaos de uma data ou hora e analisar cada um em
separado (dia, ms, ano), repartindo at chegar ao valor em segun-
dos e diminuir um do outro para, ento, reconverter e descobrir qual
a diferena entre os dois perodos de tempo. O MySQL consegue
fazer esses clculos e retornar diferenas entre datas que j esto
no banco de dados.
O prximo passo aprender a mesclar as tabelas sem que seja
necessrio chamar uma tabela e a cada linha fazer um novo pedido
ao banco de dados referente outra tabela. Este recurso se chama
JOIN e poupa os prossionais de programao.
por Michael Granados
08-13-Rev.indd 8 18/12/2007 16:09:08
geEk especial 9
GEEK ESPECIAL
1 Comeamos o sistema criando o banco de dados locadora
por meio do comando CREATE DATABASE. Logo depois, passe a
utilizar esse banco com o comando USE.
2 Crie a tabela de clientes. Repare nos tipos de dados: cdigo
inteiro, nome pedao de texto (varchar), idade inteiro e endereo
outro varchar maior. Primary key indica o campo-chave.
3 Ento, inserimos alguns clientes em nosso banco de dados.
Note que a idade o nico valor que no precisa de aspas. Ob-
serve, tambm, que o campo cdigo no foi colocado.
4 Ao selecionarmos a tabela, note que o cdigo inseriu valores
incrementados automaticamente. Isso se deve ao fato de o campo
possuir auto_increment em sua criao.
5 Dene-se a ordem na qual o sistema retornar os valores por
meio da propriedade ORDER BY [COLUNA]. Voc pode usar ASC para
crescente e DESC para decrescente. ASC a congurao-padro.
6 Criemos, ento, a segunda tabela: lmes, em que temos novamen-
te o primary key auto_increment, um varchar e uma lista ENUM com
algumas denies e a sinopse do tipo TEXT, para textos longos.
08-13-Rev.indd 9 18/12/2007 16:09:08
NA PRTICA
10 geEk especial
7 Veja o que acontece quando tentamos inserir um campo diferente
dos valores indicados em ENUM. A palavra desenho no foi denida
como parte de classicao.
8 No passo anterior, um erro ocorre. Dessa forma, inserimos
alguns filmes. Repare que, novamente, no nos importamos
com o cdigo, j que ele gerado de modo automtico.
9 Crie as tabelas relacionais. Tanto cliente como lme so do mesmo
tipo dos campos codigo e cod, respectivamente. DataAluguel ser do
tipo DATE.
10 Ainda sobre a figura anterior, Valor do tipo oat com at
cinco dgitos e mais dois decimais. Inicie a instalao. A essa altura,
sua configurao deveria ser feita no bloco de notas.
11 Se voc quiser resolver esse problema de forma simples e
eciente, selecione apenas os campos que deseja visualizar logo
aps a expresso SELECT.
12 Insira um campo em aluguis para seguir adiante. O campo date
segue o formato americano. Valor foi denido para funcinar com ponto
antes dos decimais e com apenas uma casa decimal.
08-13-Rev.indd 10 18/12/2007 16:09:10
geEk especial 11
GEEK ESPECIAL
13 Fazer um join muito simples, utilize a seguinte sintaxe: JOIN
[TABELA] ON [COMPARAO ENTRE AS TABELAS]. Os camos mostrados
so denidos pela sintaxe [TABELA].[COLUNA].
14 Sobre a figura do passo 13, a primeira comparao requer
que a mesclagem seja feita onde o cdigo de cliente for igual ao cliente
de aluguis. Na seqncia, um join com as trs tabelas.
15 Observe que a tabela em si no trabalha com nenhum
texto, apenas faz referncias s outras tabelas. Vamos seguir
com as demais tabelas.
16 Por fim, o join das trs tabelas. Veja a facilidade em se
trabalhar com campos de dados relacionais, o que traz grandes
benefcios ao seu projeto.
17 Se quisermos selecionar a soma dos valores da tabela
aluguis, use SUM(CAMPO). Esse tipo de dado pode ser obtido
a qualquer momento.
18 Agora, com a propriedade GROUP BY [CAMPO], saberemos
quanto cada cliente deve pagar. Note que somente a tabela alu-
guis foi selecionada.
08-13-Rev.indd 11 18/12/2007 16:09:12
NA PRTICA
12 geEk especial
19 Agora, inserimos o JOIN em meio ao exemplo anterior.
Essa tarefa vai testar mais funcionalidades do banco de dados
relacional que est sendo criado.
20 Quantos filmes, clientes e locaes a locadora possui?
Com um simples COUNT(*) resolvemos o problema de modo
muito simples.
21 Qual o preo mais alto cobrado na locadora? Use
MAX(CAMPO) para ter esse resultado. Outra tarefa muito sim-
ples de ser realizada.
22 O mesmo acontece quando usamos o argumento
MIN(CAMPO) para valor mnimo. um excelente modo de obter
dados importantes para a locadora.
23 O usurio no sabe o prprio codigo, mas no nada prtico
procur-lo dentro de um banco de dados extenso como o de uma
locadora em situao real, com mais de 500 clientes.
24 Ento, fazemos uma busca com o comando LIKE. Ele aceita
determinados caracteres especiais, como %, que indica que qualquer
espcie de texto pode estar no lugar.
08-13-Rev.indd 12 18/12/2007 16:09:13
geEk especial 13
GEEK ESPECIAL
25 Faa o mesmo para lmes, agora, ache algum que termine com
de. Voc pode buscar %andrade% para procurar algum que tenha
Andrade em um de seus sobrenomes, por exemplo.
26 Insira um novo lme para o cliente encontrado. Em vez de es-
crever a data na qual o lme foi alugado, foi usada a referncia NOW(),
que indica que o tempo a ser inserido o da data atual.
27 Ao utilizar a funo CONTAT(VALOR1, VALOR2, VALOR3, VALORN)
possvel juntar um texto a outro, e se tal texto for um nmero, ele
ser convertido para texto.
28 Agora, a verso nal com o preo j convertido para reais e
mesclado com as outras tabelas. Fica a seu critrio colocar um ltro
ou outros campos, como aluguel, que indiquem o status do lme.
29 Ao alterar a data do meu sistema, o banco de dados
receber a nova data, logo, a funo NOW() retorna uma nova
data, como visto na imagem.
30 Utilize a funo DATEDIFF para saber qual a diferena
entre duas datas. uma forma de calcular eventuais multas
por atraso.
08-13-Rev.indd 13 18/12/2007 16:09:14
MySQL
4 geEk especial
Domine
a lngua MySQL
Uma abordagem terica-prtica sobre a linguagem
de banco de dados mais usada no mundo
O
rganizar e agrupar parecem ser tendncias naturais
do ser humano. Sempre procuramos manter a ordem
e o equilbrio sobre todas as coisas ao nosso redor.
Essa tcnica utilizada em quase todos os lugares por
onde passamos. Olhe em sua volta: mesmo que no
queira voc acaba de agrupar alguns elementos por cor, forma
ou tamanho. Assim como os objetos fsicos, as informaes
tambm podem ser agrupadas. Uma dona de casa procura em
seu caderno o prato que mais possa agradar seus convidados.
O caderno um banco cheio de informaes teis. Esse um
belo exemplo de banco de dados, uma vez que informaes so
conhecidas como dados, em informtica.
Contudo, as informaes (principalmente em grande escala)
no tm valor, se no houver alguma maneira de interagir com os
dados adicionando novos registros, contando quantos registros de
determinado valor existem, denindo classicao, como ordem
alfabtica ou ltrando dados por um critrio. Essas funcionalida-
des, que nos ajudam bastante no dia-a-dia, cam a cargo dos
sistemas de bancos de dados.
Claro que no existe apenas um tipo de sistema de banco de
dados, diversas empresas produzem inmeros bancos de dados
e disponibilizam, vendem ou mesmo alugam os sistemas. Os
sistemas, em sua maioria, trabalham com uma linguagem em
comum: SQL. Essa linguagem a mais usada por ser simples e
de fcil aprendizado. Alm disso, os comandos dela so muito
humanizados, o que a torna to popular. Mesmo quem no en-
tende nada de informtica pode compreender facilmente certos
comandos, como SELECT * FROM vendas ou, em portugus,
selecione tudo das vendas.
Um dos bancos de dados mais usados no mundo o MyS-
QL, que ganhou fora por meio da Internet por se integrar a
vrias linguagens de programao, como ASP, PHP, Perl ou
Python. O MySQL tambm se comporta extremamente bem
quando o assunto portabilidade. Ele funciona na maioria dos
sistemas operacionais, como Linux, Windows, MacOS, entre
outros. Tambm adquiriu preferncia por ser um sistema livre
para desenvolvedores.
Geralmente, o MySQL usado para sistemas na Internet em
conjunto com a linguagem de programao PHP no servidor
Apache rodando na plataforma Linux. Esse time de ferra-
mentas conhecido como LAMP (Linux + Apache + MySQL
+ PHP). Sistemas de grande porte foram construdos com o
LAMP, por exemplo, a Wikipdia. Mas isso no impede que o
MySQL funcione em desktop tambm com o Delphi ou o VB
por exemplo, alm de rodar perfeitamente sem o auxlio de
qualquer interpretador.
Neste tutorial, voc vai aprender a instalar, congurar e dar
seus primeiros passos com o MySQL, criar um banco de dados,
uma tabela e inserir e selecionar dados da mesma. Aps ler a
revista, voc perceber que no h motivo para depender de
programas que fazem tudo para facilitar e deixam cdigo sujo
com inmeras funes que talvez no sejam teis, porque voc
s precisa de aes simples. Aprendendo a linguagem do MySQL
naturalmente, voc tambm aprende muitas funcionalidades de
outros bancos de dados como o Postgree ou SQLite, j que todas
essas linguagens se baseiam no padro SQL. Ento, arregace as
mangas e mos obra!
por Michael Granados
04-07-Rev.indd 4 18/12/2007 11:28:17
geEk especial 5
GEEK ESPECIAL
1 V at o site do MySQL (www.mysql.com) para efetuar o
download do sistema de banco de dados que ser instalado
no servidor.
2 Na rea de download, escolha seu sistema operacional para
que o banco de dados se adapte perfeitamente ao local em que
ser instalado.
3 Para Windows, existem trs verses: apenas o essencial,
completa ou sem instalador, para que voc possa fazer a instalao
na unha. Este tutorial utiliza a primeira verso.
4 Inicie a instalao normalmente e use as conguraes-pa-
dro. A instalao do MySQL era complicada e sua congurao
costumava ser feita no bloco de notas. Agora, tudo mais fcil.
5 Ao final da instalao, o sistema vai perguntar se voc
deseja configurar o banco de dados. Deixe essa caixa marcada
e conclua a instalao.
6 Automaticamente, o instalador lanar o congurador do
MySQL. Veja, na imagem, a tela que voc deve visualizar a esta
altura da atividade.
04-07-Rev.indd 5 18/12/2007 11:28:18
MySQL
6 geEk especial
7 Nesta tela, voc congura seu sistema operacional para
utilizar o MySQL como servio, deixando como opo que ele se
inicie junto ao Windows.
8 Dena uma senha para que o usurio root possa utilizar o
banco de dados. Em sistemas de informtica, root o usurio prin-
cipal que tem o controle sobre tudo o que ocorre no sistema.
9 Ao nal, o programa demonstra seu relatrio de processos:
preparar a congurao; escrever o arquivo de congurao; ini-
ciar o servio e aplicando as conguraes do banco de dados.
10 Inicie o prompt de comando do MySQL. Perceba que, se voc
quiser congurar seu banco de dados novamente, poder fazer isso
com a ferramenta de congurao contida neste mesmo menu.
11 A primeira coisa que voc deve fazer para comear a brin-
car com o banco de dados entrar com a senha do root. Lembra
daquela senha alguns passos atrs?
12 Depois de fazer o login, use o comando SHOW DATABASES
para ver quais bancos de dados possvel utilizar para fazer
novos projetos.
04-07-Rev.indd 6 18/12/2007 11:28:20
geEk especial 7
GEEK ESPECIAL
13 Com os comandos CREATE DATABASE <NOME DO BANCO>
e USE <NOME DO BANCO>, respectivamente, crie um novo banco
e passe a us-lo como referncia para os outros passos.
14 Com o CREATE TABLE, crie uma tabela de pessoas com
suporte a dois fatores: nome e idade. Veja que para cada tipo de
informao, utiliza-se um atributo.
15 Insira dados nesse banco. Veja que ocorreu um erro ao
tentarmos alocar um texto no campo de valor inteiro. Logo, a
escolha do tipo de dado importante.
16 Selecione as pessoas com o comando SELECT para saber
quais delas existem na tabela. Na seqncia, foi usado um ltro
chamado WHERE, para vericar as pessoas acima de 28 anos.
17 Para atualizar alguma informao, use o comando UPDATE,
congurando valores com a diretiva SET. Especique onde aconte-
cer essa atualizao no banco de dados com o ltro WHERE.
18 Para excluir dados, utilize o comando DELETE em conjunto
com o ltro WHERE e o UPDATE. Para apagar tudo, use os comando
DROP TABLE pessoas e DROP DATABASE michael.
04-07-Rev.indd 7 18/12/2007 11:28:21

Interesses relacionados