Você está na página 1de 24

Tutorial MySQL Apostilando.

com

Tutorial MySQL Apostilando.com

Table of Contents
Tutorial MySQL..............................................................................................................................................1
Sobre este tutorial....................................................................................................................................1
Nota do autor.....................................................................................................................................1
Molhando seus ps...................................................................................................................................2
Breve introduo ao MySQL............................................................................................................2
Indo mais fundo.......................................................................................................................................3
Viso geral.........................................................................................................................................3
At seu pescoo em MySQL....................................................................................................................6
Tabelas e campos...............................................................................................................................6
Campos..............................................................................................................................................7
Tipos de campos no MySQL.............................................................................................................7
Registros..........................................................................................................................................12
Tabelas.............................................................................................................................................12
Totalmente imerso em MySQL.............................................................................................................15
Manipulando a base de dados..........................................................................................................15
Afogandose em MySQL......................................................................................................................20
Comando avanados........................................................................................................................20

Tutorial MySQL
Reviso 2

Sobre este tutorial


Este documento aborda superficialmente o MySQL. Sua leitura recomendada para leigos em servidores
SQL e at mesmo em base de dados. A leitura deste documento no recomendada para pessoas que j
tenham alguma experincia no assunto, e possam ficar entediadas lendo este.
O texto aqui contido pode e deve ser distribudo livremente, contanto que sejam mantidos os nomes dos
autores, e que fique documentada alguma eventual alterao.
Vale lembrar ainda, que este texto tambm se aplica a outros servidores de Base de Dados, como o Oracle
(R), tendo em conta que a abordagem do texto da linguagem SQL, que um padro.

Nota do autor
Ao escrever este manual, no pude gastar muito tempo dando ateno a todos os itens. Peo desculpas
antecipadamente por alguma falha no documento, e agradeo eventuais colaboraes e sugestes. Pretendo
manter atualizaes deste documento em minha pgina pessoal (http://www.linuxqos.cjb.net) portanto, as
verses mais novas sempre estaro l primeiro. Enfim, aproveitem!
Rafael V. Aroca rafael@linuxqos.cjb.net
So Carlos, 20 de fevereiro de 2000.
Atualizada em: 18/Set/2001
SP Brasil

Tutorial MySQL

Tutorial MySQL Apostilando.com

Molhando seus ps
Breve introduo ao MySQL
Bancos de dados, hoje em dia, so parte fundamental da vida de quase todos seres humanos. Viver sem
sistemas de bancos de dados em nosso mundo, hoje em dia praticamente impossvel. Sem nem mesmo
perceber, a todo momento estamos usando um banco de dados, mesmo nas mais triviais tarefas.
Bancos, universidades e bibliotecas so trs exemplos de organizaes que dependem totalmente de bancos
de dados. A prpria internet, usa um sistema de banco de dados para controle e funcionamento dos sites, como
este.
Normalmente, bases de dados com muitas informaes so armazenadas em computadores de grande porte,
chamados de servidores, e que permitem o uso das mesmas informaes, atravs de uma rede, por um nmero
(dizse) ilimitado de usurios.
Um dos mais rpidos programas para servidores de SQL (do ingls, "Linguagem de pesquisa simples"),
hoje no mercado, o MySQL, desenvolvido pela T.c.X. DataKonsultAB. Este programa est disponvel para
download em sua verso original em www.mysql.com, em ingls, e tambm em www.mysql.com.br para sua
verso brasileira, onde encontramse projetos de traduo e documentao do MySQL em portugus.
Alm de oferecer vrios recursos no existentes em outros servidores, o MySQL tem a vantagem de ser
totalmente gratuito para uso tanto comercial, quanto privado, em conformidade com a licena pblica GPL.
As principais metas da equipe de desenvolvimento do MySQL construir um servidor rpido e robusto.
Os recursos acima mencionados incluem:
Capacidade de lidar com um nmero ilimitado de usurios;
Capacidade de manipular mais de cinqenta milhes (50.000.000) de registros;
Execuo muito rpida de comandos, provavelmente o mais rpido do mercado;
Sistema de segurana simples e funcional.
Quem usa o MySQL:
Silicon Graphics (www.sgi.com)

Molhando seus ps

Tutorial MySQL Apostilando.com

Siemens (www.siemens.com)
Yahoo (www.yahoo.com)
IFX Networks (www.ifx.com.br)
Dezenas de Web hosting e Provedores devido ao enorme sucesso que o MySQL vem fazendo
Existem sistemas rodando servidor MySQL com bases de dados de 200 Gigabytes!!! Caso voc ache isto
insuficiente, verifique a lista completa de usurios do MySQL no site oficial www.mysql.com

Indo mais fundo


Viso geral
A partir deste captulo, comearemos a usar o MySQL na prtica, para tal, preciso que voc tenha acesso
a algum servidor com o MySQL instalado e funcionando devidamente. A instalao do MySQL ser abordada
posteriormente. A forma mais comum de se utilizar o MySQL, via telnet. Uma vez conectado ao servidor,
um segundo comando permite o acesso ao servidor MySQL.
Para acessar o servidor MySQL, preciso utilizar o comando que segue. importante lembrar, que o
MySQL tem seu prprio cadastro de nomes e senhas, sendo que voc pode possuir uma conta no servidor
SQL, mas no telnet, e o oposto tambm vlido. Voc tambm pode usar clienter grficos para o MySQL,
como o FreeMascon e o MyNavigator.

mysql u elaine p supersenha


Sintaxe:
mysql u (usurio) p (senha)

Indo mais fundo

Tutorial MySQL Apostilando.com

ou
mysql h servidor u (usurio) password=(senha)

Aps validada a senha, e prsupondo que o MySQL tenha sido corretamente instalado, voc ver algo
como:

Cliente MySQL NBS


Bem vindo ao monitor do MySQL. Use ; aps os comandos ou \g.
Sua id 49, e voc est conectado a um servidor verso 3.21.23betalog
Digite 'help' para ajuda.

mysql>

Uma vez no prompt do MySQL, podemos comear a utilizar os comandos do MySQL e manipular os dados
e o servidor. Contudo, antes de modificar a base de dados, ns devemos escolher qual desejamos usar, da
seguinte forma:

Indo mais fundo

Tutorial MySQL Apostilando.com

mysql>use teste;
Base de dados alterada.

Troque teste, pelo nome da base de dados desejada. Voc obter uma mensagem confirmando a alterao
da base de dados. Isto significa que voc est conectado a ela.
Repare que o comando est seguido de ponto e vrgula, pois como em C, a maioria dos comandos do
MySQL so sucedidos por ponto e vrgula.
Antes de fazer qualquer coisa, seria interessante voc consultar a ajuda, que listar os comandos disponveis
neste momento da execuo do MySQL.
Isto deve ser feito atravs do comando help.

mysql>help
...
...

Provavelmente, nem todas as funes sero teis neste momento, porm bom gastar um tempo
aprendendo cada uma delas para uso futuro.
Por outro lado, funes como status, connect, clear, e quit sero usadas com uma freqncia to grande que
voc deve se familiarizar com elas.
Neste ponto, voc deve ter um conhecimento bsico de como conectarse ao servidor, selecionar a base de
dados, e executar operaes simples. No prximo captulo, aprenderemos os conceitos e tcnicas necessrias

Indo mais fundo

Tutorial MySQL Apostilando.com

para preparar e manter uma base de dados.

At seu pescoo em MySQL


Tabelas e campos
Chegamos! Talvez no captulo mais difcil deste texto. Voc logo entender, portanto, tenha uma tima
noo de bases de dados!
Algumas pessoas podem achar fcil, mas minha experincia no assunto, diz que muitas pessoas tm
dificuldades sobre os conceitos bsicos de bases de dados. Portanto, s passe para o prximo tpico quando
voc estiver plenamente seguro que domina os conceitos de bases de dados.
Uma base de dados, nada mais do que estruturas complexas de dados. Estes dados so gravados em forma
de registros em tabelas. Parece simples, certo? Faamos ento uma analogia para que este conceito se torne
ainda mais simples:
Imagine um arquivo de fichas, numa empresa onde h vrias caixas, cada uma contendo os dados dos
funcionrios de um certo setor. Cada caixa possui vrias fichas, que so os cadastros dos funcionrios cada
ficha contm os dados de apenas um funcionrio. Indo mais longe, podemos concluir que cada ficha contm
diversas informao sobre o funcionrio em questo:
Portanto, cada caixa uma tabela, contendo diversas fichas, que so os registros, e cada ficha possui vrias
informaes sobre o funcionrio, que so os campos.
Como foi dito, h vrias caixas, uma para cada departamento, a soma de todas as caixas forma a base de
dados.
Observando tudo isto de fora, podemos formar o seguinte esquema:
Base de dados < Tabela < Registro < Coluna (datatype)
Banco de dados < Tabela < Linha < Campo

At seu pescoo em MySQL

Tutorial MySQL Apostilando.com

As duas linhas acima mostram os termos normalmente usados para o que acabamos de aprender. Os
campos podem ser de diferentes tipos e tamanhos, permitindo ao programador criar tabelas que satisfaam ao
escopo do projeto. A deciso de quais campos usar e quais no usar muito importante, pois influi
drasticamente na performance da base de dados que estamos desenvolvendo, portanto, de bom grado um
conhecimento slido destes conceitos.
A etapa de montagem das tabelas, seno a mais importante, uma das mais importantes etapas da
montagem de uma base de dados, pois um bom projeto pode facilitar muito o trabalho de programao.

Campos
Como j sabemos, os campos so a parte fundamental de uma base de dados. nos campos que as
informaes ficam armazenadas. Para um otimizao da base de dados, antes e utilizar, devemos definir os
campos que desejamos usar, e especificar o que cada um pode conter.

Tipos de campos no MySQL


O MySQL oferece os mais comuns campos, que at mesmo um programador novato j deve ter visto.
Alguns deles esto aqui listados:

CHAR(M)
Os campos CHAR so usados para caracteres alfanumricos, como endereos e nomes. Seu tamanho fixo
e instaurado ao ser criado. Um campo do tipo CHAR pode ter de 1 a 255 caracteres.

Campos

Tutorial MySQL Apostilando.com

Exemplo:
endereco_comercial CHAR(10);
Define um campo chamado 'endereco_comercial', que pode conter at dez letras.
Observe que no h acentos no nome do campo, pois muitos servidores no acentuam, e sua tabela teria difcil
acesso.

VARCHAR(M)
Sua estrutura e funcionamento idntico ao campo anterior, salvo que no tipo CHAR, o tamanho definido
fixo, e mesmo que no usado, aquele espao em disco alocado. J o campo VARCHAR, aloca apenas o
espao necessrio para gravao. Contudo, vale lembrar que trocamos espao por velocidade, pois este campo
50% mais lento que o anterior.
Exemplo:
endereco_comercial VARCHAR(10);
Define um campo chamado endereco_comercial que pode conter at dez letras. Se voc preencher apenas
duas, o campo no ocupara todos dez bytes, mas apenas 2.

INT(M) [Unsigned]
O campo INT, que como o prprio nmero diz, suporta o conjunto dos nmeros inteiros numa variao de
2147483648 a 2147483647. O parmetro Unsigned pode ser passado, excluindo os nmeros negativos,
proporcionando um intervalo de 0 at 4294967295.
Exemplos:

Tipos de campos no MySQL

Tutorial MySQL Apostilando.com

carros_estocados INT;
Inteiro vlido: 245
Inteiro vlido: 245
Inteiro invlido: 3000000000

carros_estocados INT unsigned;


Inteiro vlido: 245
Inteiro invlido: 245
Inteiro invlido: 3000000000

FLOAT[(M,D)]
Os pontos flutuantes (FLOAT) representam pequenos nmeros decimais, e so usados para representar
nmeros com maior preciso.
Exemplo:
voltagem_cadeira_eletrica FLOAT(4,2);
Float vlido: 324.50

DATE
Campo usado para armazenar informaes referentes a data. A forma padro 'AAAAMMDD', onde
AAAA corresponde ao ano, MM ao ms, e DD ao dia. Ele pode variar de 00000000 a 99991231.

Tipos de campos no MySQL

Tutorial MySQL Apostilando.com

O MySQL possui um conjunto poderoso de comandos de formatao e manipulao de datas. Consulte


documentao adicional, se houver interesse.
Exemplo:
data_de_nascimento DATE;

Data vlida: 19991206


Data invlida: 19990612

TEXT/BLOB
Os campos texto e blob so usados para guardar grandes quantidades de caracteres. Podendo conter de 0 a
65535 bytes, os blobs e texts so teis para armazenar documentos completos, como este que voc est lendo.
A nica diferena entre os campos BLOB e TEXT est no fato de um campo TEXT no ser sensvel a letras
maisculas e minscula quando uma comparao realizada, e os BLOBs sim.
Exemplo:
relatorio BLOB;
BLOB vlido: 'Minha terra tem palmeiras onde canta o...'

relatorio TEXT;
TEXT vlido: 'A que saudades que eu sinto...'

Tipos de campos no MySQL

10

Tutorial MySQL Apostilando.com

SET
Um campo interessante, que permite que o usurio faa uma escolha dado determinado nmero de opes.
Cada campo pode conter at 64 opes.
Exemplo:
vicio SET("cafe", "cigarro") NOT NULL;
Neste exemplo este campo pode conter apenas os seguintes itens:
""
"cafe"
"cigarro"
"cafe,cigarro"

ENUM
Um campo com funcionamento semelhante ao SET, com a diferena que apenas um valor pode ser
escolhido.
Exemplo:
virtude ENUM("programar", "amar") NOT NULL;
Neste exemplo este campo pode conter os seguintes valores:

""
"programar"

Tipos de campos no MySQL

11

Tutorial MySQL Apostilando.com

"amar"

Registros
Um conjunto de campos relacionados, forma o que chamamos de registro. Um registro, portanto, pode ter a
seguinte estrutura:

nome CHAR(15);
email CHAR(25);
telefone INT;
Neste exemplo, nosso registro contm trs campos, podendo armazenar o email e o telefone de uma
determinada pessoa. Observe que o campo nome foi definido como CHAR, portanto poder conter qualquer
tipo de caractere, contudo, o campo telefone, definido como INT, poder apenas conter nmeros, pois foi
configurado como INT.

Tabelas
Um conjunto de registros, forma uma tabela. As tabelas portanto, armazenam grande quantidade de dados.
Como no exemplo anterior, poderamos ter centenas de nomes diferentes cadastrados em nossa tabela de
pessoas. Cada conjunto de dados corresponde a um registro.
Antes de usar uma base de dados, ou dar qualquer comando, ns precisamos de uma tabela pelo menos,
para armazenar os dados:
Isto pode ser feito usando o comando CREATE TABLE, que recebe como parmetro o nome da tabela que
desejamos usar.

Registros

12

Tutorial MySQL Apostilando.com

mysql> CREATE TABLE teste(


>codigo INT,
>nome CHAR(15),
>email CHAR(25),
>telefone INT);

Notas:
No possvel criar duas tabelas com o mesmo nome;
Cada conjunto de dados, quando visto em uma tabela, tambm chamado linha;
Voc acaba de criar sua primeira tabela!
Caractersticas das linhas:
O nome de uma coluna pode ter at 64 letras;
O nome de uma coluna pode comear com um nmero;
O nome de uma coluna no pode ser composto de nmeros apenas.
Opes de uma tabela:
As seguintes opes podem ser adicionadas a qualquer campo de uma tabela, concatenando recursos
adicionais a estes campos.
Chave primria:

Usado para que no seja permitido, que o usurio consiga cadastrar dois registros com chaves primrias
iguais. Isto claramente til, quando no desejado que seja digitado um segundo registro igual ao primeiro
por engano. Para se definir uma chave primria, basta adicionar 'PRIMARY KEY' a definio do campo que
se deseja a no duplicidade.

Tabelas

13

Tutorial MySQL Apostilando.com

Exemplo:
nome CHAR(15) PRIMARY KEY;
Esta declarao faz com que no seja permitido o cadastro na tabela de dois registros com nomes iguais.

Auto incremento:

Este recurso, faz com que conforme novos registros so criados, automaticamente estes obtm valores
que correspondem ao valor deste mesmo campo no registro anterior, somado a 1.

Exemplo:
codigo INT AUTO_INCREMENT;
Soma um a cada registro automaticamente neste campo. Comeando de 1, com insero subsequente.

Comandos relativos as tabelas:


Podemos executar comandos para saber as condies que as tabelas se encontram, e tambm manipullas.
Abaixo, poderemos conhecer os fundamentais:
Mostrar tabelas
Funo:
Lista todas as tabelas existentes no banco de dados atual.
Comando:
mysql>show tables;

Tabelas

14

Tutorial MySQL Apostilando.com

Mostrar colunas
Funo:
Mostra as informaes referentes a estrutura, ou seja, as colunas da tabelas desejada.
Comando:
mysql>show columns from teste;
Lembrese de dedicar algum tempo a testes. No tenha medo de danificar a base de dados, pois o
Administrador do servidor que voc usa no daria a voc controle total dos dados, e se o servidor pertencer a
voc..."vai, faa o que tu queres".

Totalmente imerso em MySQL


Manipulando a base de dados
Uma base de dados pode ser manipulada com quatro operaes bsicas: Incluir, Apagar, Altera, e
Pesquisar. Estes tpicos sero brevemente abordados nas sees seguintes, mas antes de mais nada, eu
gostaria de lembrar que como toda linguagem para computadores, o MySQL tem suas regras. Um erro de
parnteses que seja pode resultar no inverso do que voc espera. Portanto, fique atento a sintaxe de seus
comandos.
bom saber tambm, que faremos todas experincias a partir de agora, usando a tabela teste, criada no
captulo anterior. Portanto se voc ainda no a criou, esta uma boa hora.

Aqui est ela novamente como uma rpida referncia:


Seleciona base de dados:

Totalmente imerso em MySQL

15

Tutorial MySQL Apostilando.com

use teste;

Cria tabela:

mysql> CREATE TABLE teste(


>codigo INT,
>nome CHAR(15),
>email CHAR(25),
>telefone INT);

Inserindo registros
Para se adicionar dados a uma tabela, usamos o comando INSERT, que diz por si s sua funo, como o
exemplo que segue:

mysql>INSERT INTO teste VALUES


mysql>(NULL, 'Ernesto', 'ernesto@nbsnet.com.br',
mysql>2742729);

Manipulando a base de dados

16

Tutorial MySQL Apostilando.com

Observaes:
Apostrofes foram colocadas na entrada de campos tipo CHAR. Todos os campos que contm texto, ou seja,
CHAR, VARCHAR, BLOB, TEXT, etc. tm de ficar entre apstrofes, ou um erro ocorrer;
Para campos do tipo nmero, no se usam apstrofes.
A entrada NULL em um campo do tipo autoincremento, permite que o MySQL providencie o contedo
deste campo de forma automtica. No caso do primeiro campo, o valor ser 1, no segundo 2, no terceiro 3 e
assim consecutivamente.
Se possussemos um campo DATE, a entrada NULL faria com que o valor gravado no registro se torne a
data atual.
Nota:
importante lembrarse sempre de passar para o camando INSERT um nmero de parmetros igual ao
nmero de campos na tabela que est recebendo os dados. Caso contrario, voc obter uma mensagem de erro.
O mesmo erro tambm ocorre ao tentar inserir mais parmetros do que o nmero de campos suportado pela
tabela.
Nota 2:
Uma das grandes vantagens do MySQL a capacidade de facilmente converter sem problemas entre
campos. O sistema automaticamente converte entre nmeros, caracteres, e datas sem problemas.

Pesquisando registros
Imagine que possumos um carro de ltima gerao, com todos os recursos que a tecnologia atual pode
permitir. Contudo, nosso carro no tem roda, ou seja, no serve para nada, a no ser ostentar. (Opinio
pessoal: assim so os servidores M$).
A inteno de uma base de dados, ser til, portanto, em contradio ao exemplo, ela precisa ter rodas. No

Manipulando a base de dados

17

Tutorial MySQL Apostilando.com

caso de qualquer base de dados, uma das roda a pesquisa, afinal de contas, o que seria um site de busca na
Internet sem pesquisa?
As pesquisas no MySQL so feitas atravs do comando SELECT. Este comando pode fazer desde uma
simples e trivial pesquisa at uma pesquisa extremamente complexa.
Exemplos:
Ao:
mysql>SELECT * FROM teste;
Resultado:
Lista todos registros da tabela teste.
Ao:
mysql>SELECT * FROM teste
mysql>WHERE (nome = "Ernesto");
Resultado:
Lista todos os registros da tabela teste que contm "Ernesto" no campo nome.
Nota:
Consulte maiores detalhes, e estude mais itens relacionados a pesquisas SQL. Voc pode economizar
centenas de linha de cdigo em seus programas usando recursos de pesquisa.

Apagando registros

Quando um registro no nos mais til, podemos apaglo, para que a tabela no contenha dados obsoletos.

Manipulando a base de dados

18

Tutorial MySQL Apostilando.com

Isto pode ser facilmente feito usando o comando DELETE, que tem o funcionamento semelhante ao comando
INSERT.
Ao:
mysql>DELETE FROM teste
mysql>WHERE (telefone = 2744747);
Resultado:
Apaga da tabela teste todos os registros que tm o contedo "2744747" no campo telefone.

Alterando registros
Suponhamos agora que sua namorada trocou o telefone. A primeira providncia, alterar sua tabela para
que voc no possua dados desatualizados. Para tal, existe o camando UPDATE. Observe os exemplos:
Ao:
mysql>UPDATE teste SET nome = 'ErnestaoOBao'
mysql>WHERE nome = 'Ernesto';
Resultado:
Procura na tabela um registro que contenha no campo nome o contedo 'Ernestao', definido pelo comando
WHERE. Encontrado o registro, ele substituido pelo nome definido no comando SET, que 'ErnestaoOBao'.

Manipulando a base de dados

19

Tutorial MySQL Apostilando.com

Afogandose em MySQL
Comando avanados
O que aprendemos at agora, quando comparado a quantidade de recursos do MySQL, no chega a ser a
ponta de um gigante iceberg. O MySQL repleto de comandos avanados que permitem fazer operaes
para todas as necessidades. Veremos agora alguns comandos avanados do MySQL:
Operadores lgicos:
O MySQL suporta todas operaes lgicas, estando abaixo listadas as mais conhecidas:
AND (&&)
O operador lgico AND, ou E, deve ser usado em uma pesquisa que se deseja entrar dois valores. O AND,
verifica ambas as clausulas da comparao, e s retorna algum valor se as duas tiverem uma resposta
verdadeira. Observe o exemplo:

mysql>SELECT * FROM teste WHERE


mysql>(nome = "Aline") AND
mysql>(telefone = 2728918);

Esta pesquisa mostrara todos os registros que contm no campo nome e contedo "Aline", E (AND) no campo
telefone, o contedo 2728988.
OR (||)
O operador lgico OR, ou OU, deve ser usado em uma pesquisa que se deseja entrar dois valores. O OR,

Afogandose em MySQL

20

Tutorial MySQL Apostilando.com

verifica ambas as clausulas da comparao, e retorna valores se qualquer um dos membros obtiver resultado.

mysql>SELECT * FROM teste WHERE


mysql>(nome = "Aline") OR
mysql>(telefone = 2728918);

Este pesquisa far com que todos os resultados que contenham o contedo "Aline" no campo nome, OU
2728918 sejam exibidos na tela.
NOT (!)
O operador lgico NOT, ou NO, realiza uma pesquisa, excluindo valores determinados do resultado.

mysql>SELECT * FROM teste WHERE


mysql>(nome != "Aline");

Esta pesquisa listara todos os registros da base de dados teste, NO (NOT) mostrando aqueles que possuem
"Aline" como contedo do campo nome.
ORDER BY
O operador lgico ORDER BY, ou ORDENAR POR, simplesmente lista os registros, colocandoos em
ordem de acordo com o campo solicitado.

Afogandose em MySQL

21

Tutorial MySQL Apostilando.com

mysql>SELECT * FROM teste WHERE


mysql>(nome = "Aline")
mysql>ORDER BY telefone;

O resultado desta busca resultara em todos os registros contendo "Aline" no campo nome, e a listagem ser
organizada de acordo com a ordem do telefone.

Afogandose em MySQL

22

Você também pode gostar