Escolar Documentos
Profissional Documentos
Cultura Documentos
Mysql Tutorial PDF
Mysql Tutorial PDF
Table of Contents
Projeto Linux......................................................1
Tutorial de MySQL.......................................................3
Entrando e perguntando.................................................18
i
Tutorial MySQL
Table of Contents
Recuperando informao de uma tabela...................................66
Classificando filas....................................................76
Clculos de Data.......................................................86
Unindo Modelo..........................................................99
Contando filas........................................................107
ii
Tutorial de MySQL
Esta apostila fornece uma introduo ao MySQL por mostrar ao usurio como
criar
Para ver uma lista de opes fornecidas por MySQL, invoqueo com help:
Esta apostila assume que o MySQL est instalado em sua mquina, e que um
servidor de MySQL
Tutorial de MySQL 1
Tutorial MySQL
Tutorial de MySQL 2
Conectando e desconectando do servidor
O ******** representa sua senha; entre com a senha quando MySQL exibir
Enter
password: prompt.
mysql>
O prompt diz que voc est pronto para entrar com os comandos.
como anfitrio local. Se isto o caso em sua mquina, voc deveria ser
capaz de
shell> mysql
no mysql> prompt:
mysql> QUIT
Bye
Na maioria dos exemplos nas seguintes sees, assumem que voc est
conectado ao servidor.
trabalhos do MySQL.
+++
| version() | CURRENT_DATE |
+++
| 3.22.20alog | 19990319 |
Entrando e perguntando 6
Tutorial MySQL
+++
mysql>
ento exibe mysql>, para indicar que est pronto para outro comando.
Entrando e perguntando 7
Tutorial MySQL
Entrando e perguntando 8
Tutorial MySQL
Aqui outra pergunta. Isto demonstra que voc pode usar MySQL como uma
simples calculadora:
+++
| SIN(PI()/4) | (4+1)*5 |
+++
| 0.707107 | 25 |
+++
Voc pode at mesmo entrar com declaraes mltiplas em uma nica linha.
Entrando e perguntando 9
Tutorial MySQL
++
| version() |
++
| 3.22.20alog |
++
++
| NOW() |
++
| 19990319 00:15:33 |
++
Entrando e perguntando 10
Tutorial MySQL
Um comando dado todo em uma nica linha, assim como comandos compridos
que requerem vrias
mysql> SELECT
> USER()
> ,
> CURRENT_DATE;
+++
| USER() | CURRENT_DATE |
+++
| joesmith@localhost | 19990318 |
+++
Entrando e perguntando 11
Tutorial MySQL
Neste exemplo, note como o prompt muda de mysql> para > depois que entra
com a pergunta na
primeira linha de uma linha mltipla. MySQL indica que no tem uma
declarao completa e
est esperando o resto. O prompt seu amigo, porque ele fornece retorno
valioso.
Se voc usa aquele retorno, voc sempre estar atento do que MySQL est
esperando.
isto, digitando \c
mysql> SELECT
> USER()
> \c
mysql>
Note tambm aqui, o prompt. Isto muda o retorno para mysql> depois que
voc digita \c,
Entrando e perguntando 12
Tutorial MySQL
A seguinte tabela mostra cada um dos prompts que pode ser visto e resume
que estado
o MySQL est:
Prompt
Significado
mysql>
>
'>
Esperando para prxima linha, colecionando um fio que comea com uma
citao nica ("'")
">
Esperando para prxima linha, colecionando um fio que comea com uma
citao duplicada (""")
Entrando e perguntando 13
Tutorial MySQL
>
Se isto acontecer (voc pensa que entrou com uma declarao mas a
unicamente
Entrando e perguntando 14
Tutorial MySQL
> ;
++
| USER() |
++
| joesmith@localhost |
++
O '> e "> prompts ocorrem durante coleo de fio. No MySQL, pode escrever
fios
deixa que voc entre com os fios que transpem linhas mltiplas. Quando
voc v um '> ou
"> prompt, este meio que tem de entrar com uma linha contendo um fio que
comea com
caracteres: "'" ou "", no tem ainda que entrar com a citao que termina
o fio.
Seria bom se est realmente entrando com uma linha mltipla de fio, mas
como provavelmente
Entrando e perguntando 15
Tutorial MySQL
isso? Mais freqentemente, o '> e "> prompts indicam que voc descuidou
e deixou fora um
mysql> SELECT * FROM my_table WHERE name = "Smith AND age < 30;
">
no pode ser somente \c, porque MySQL interpreta isto, como a separao
do fio que est
Entrando e perguntando 16
Tutorial MySQL
mysql> SELECT * FROM my_table WHERE name = "Smith AND age < 30;
"> "\c
mysql>
comando.
Isto importante, para saber o que '> e "> prompts expressam, porque se
voc entrar
incorretamente com um fio, mais alm, voc digita a vontade e parece que
MySQL ignorou,
incluindo uma linha contendo QUIT, isto pode ser completamente confuso,
se voc no sabe
Entrando e perguntando 17
Exemplos de perguntas comuns
Aqui segue exemplos de como resolver alguns dos problemas mais comuns do
MySQL.
de cada negociante. Supondo que cada negociante tem um preo fixo por
artigo, ento
(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69),
(3,'D',1.25),(4,'D',19.95);
++++
++++
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
++++
++
| article |
++
| 4 |
++
FROM shop
No MySQL (ainda no faz uma subseleo) somente faz isto em dois passos:
FROM shop
WHERE price=19.95
FROM shop
LIMIT 1
FROM shop
GROUP BY article
+++
| article | price |
+++
| 0001 | 3.99 |
| 0002 | 10.99 |
| 0003 | 1.69 |
| 0004 | 19.95 |
+++
"Para cada artigo, encontre o(s) negociante(s) com o preo mais caro."
FROM shop s1
FROM shop s2
INSERT INTO tmp SELECT article, MAX(price) FROM shop GROUP BY article;
UNLOCK TABLES;
Se voc usar uma tabela TEMPORRIA, voc deve tambm fechar o "tmp"
tabela.
SELECT article,
FROM shop
GROUP BY article;
++++
++++
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | C | 1.69 |
| 0004 | D | 19.95 |
++++
);
);
+++
| id | name |
+++
| 1 | Antonio Paz |
| 2 | Lilliana Angelovska |
+++
+++++
+++++
| 1 | polo | blue | 1 |
| 2 | dress | white | 1 |
| 3 | tshirt | blue | 1 |
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
| 7 | tshirt | white | 2 |
+++++
+++++
+++++
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
+++++
MySQL ainda no faz, pesquisa com duas chaves diferentes combinadas com
OR
OR field2_index = '1'
No momento, voc pode resolver isto com muita eficincia, usando uma
tabela TEMPORRIA;
Este tipo de otimizao tambm muito boa se voc est usando muitas
perguntas
Acima est o caminho para resolver a pergunta com efeito de unio de duas
perguntas.
Agora que voc j sabe como entrar com os comandos, isto , como acessar
um banco de dados.
Suponha que voc tenha vrios animais de estimao em sua casa e tem
vontade de
guardar vrios tipos de informaes sobre eles. Voc pode fazer isto,
criando tabelas
de dados pde ser utilizado. Por exemplo, um banco de dados pode ser
utilizado por um
dos pacientes.
++
| Database |
++
| mysql |
| test |
| tmp |
++
Database changed
Voc pode usar o banco de dados test com os exemplos que seguem, mas se
voc criar algo no
banco de dados, pode ser removido por qualquer um que tenha acesso. Por
esta razo, voc
assim voc deve sempre referir para seu banco de dados como menagerie,
no como Menagerie,
Criando um banco de dados, voc no o seleciona para uso, deve fazer isto
explicitamente.
Database changed
Seu banco de dados necessita ser criado uma unicamente vez, mas deve
selecionlo o
uso a cada vez que comear uma sesso do MySQL. Voc pode fazer isto ao
usar uma declarao
Criar um banco de dados a parte mais fcil, mas neste ponto ele est
vazio,
A parte mais dura decidir que estrutura o seu banco de dados dever
ter: que tabelas
Voc desejar uma tabela que contm um registro para cada um de seus
animais de estimao.
estimao, voc pde desejar listar o dono de cada animal. Pode registrar
alguma informao
Como sobre idade? interessante, mas isto, no uma boa coisa para
armazenar em um banco
Ento, sempre que voc necessitar da idade, voc pode calcular isto como
a diferena entre
* Voc pode usar o banco de dados para tarefas, tal como gerar lembretes
para os prximos
se voc armazena data da morte, voc pode facilmente calcular a idade que
animal de
nascimento e morte.
escolha pobre e mais tarde voc necessita um campo mais longo, MySQL
fornece uma declarao
de ALTER TABLE .)
O sexo do animal pode ser representado com uma variedade de caminhos, por
exemplo,
"m" e "f".
Agora que voc criou uma tabela, SHOW TABLE deveria produzir alguma
sada:
++
| Tables in menagerie |
++
| pet |
++
Para verificar que sua tabela foi criada no caminho que voc criou, use a
declarao
DESCRIBE:
+++++++
+++++++
+++++++
Voc pode usar DESCRIBE a qualquer hora, por exemplo, se voc esquecer os
nomes das
utilizado.)
Nome
Dono
Espcie
Sexo
Nascimento
Morte
Fofo
Harold
gato
19930204
Claws
Gwen
gato
19940317
Buffy
Harold
co
19890513
Presa
Benny
co
19900827
Bowser
Diane
co
19980831
19950729
Chirpy
Gwen
pssaro
19980911
Whistler
Gwen
pssaro
19971209
Magro
Benny
cobra
19960429
Se voc est comeando com uma tabela vazia, um caminho fcil para
preencher criar
um arquivo de texto contendo uma fila para cada um de seus animais, ento
carregue os
de morte para animais que esto ainda vivos), voc pode usar valores
NULL. Para
Whistler
Gwen
Pssaro
\N
19971209
\N
propriamente.
Cada vez que voc desejar inseir um novo registro, a declarao INSERT
til.
Em seu formulrio, voc fornece valores para cada coluna, na forma em que
as colunas
Deste exemplo, voc deveria ser capaz de ver que pode ser muito mais
trabalhoso
geral da declarao :
SELECT what_to_select
FROM which_table
WHERE conditions_to_satisfy
what_to_select indica o que voc deseja ver. Isto pode ser uma lista de
colunas, ou
opcional.
filas devem
+++++++
+++++++
+++++++
Este comando SELECT til se voc desejar rever sua tabela inteira. Isto
acontece
Entretanto, se voc fez isto, voc tambm deve dar uma reentrada no
registro do Puffball.
Como mostrado acima, isto fcil para recuperar uma tabela inteira.
o registro do Bowser:
+++++++
+++++++
+++++++
A sada confirma que agora o ano est corretamente registrado como 1989 e
no 1998.
se voc deseja saber que animais nasceram depois 1998, teste a coluna de
nascimento:
+++++++
+++++++
+++++++
mysql> SELECT * FROM pet WHERE species = "dog" AND sex = "f";
+++++++
+++++++
+++++++
+++++++
+++++++
+++++++
mysql> SELECT * FROM pet WHERE (species = "cat" AND sex = "m")
+++++++
+++++++
+++++++
AND e OR podem ser misturados. Isto uma boa idia para usar parnteses
para indicar
+++
| name | birth |
+++
| Fluffy | 19930204 |
| Claws | 19940317 |
| Buffy | 19890513 |
| Fang | 19900827 |
| Bowser | 19890831 |
| Chirpy | 19980911 |
| Whistler | 19971209 |
| Slim | 19960429 |
| Puffball | 19990330 |
+++
++
| owner |
++
| Harold |
| Gwen |
| Harold |
| Benny |
| Diane |
| Gwen |
| Gwen |
| Benny |
| Diane |
++
e algum deles aparece mais de uma vez. Para diminuir a sada, recuperar e
registrar
++
| owner |
++
| Benny |
| Diane |
| Gwen |
| Harold |
++
Voc pode usar a clusula WHERE para combinar a seleo da fila com
seleo da coluna.
++++
++++
++++
Voc pode notar nos exemplos, que as filas de resultado so exibidas sem
nenhum
+++
| name | birth |
+++
| Buffy | 19890513 |
Classificando filas 71
Tutorial MySQL
| Bowser | 19890831 |
| Fang | 19900827 |
| Fluffy | 19930204 |
| Claws | 19940317 |
| Slim | 19960429 |
| Whistler | 19971209 |
| Chirpy | 19980911 |
| Puffball | 19990330 |
+++
da coluna:
+++
Classificando filas 72
Tutorial MySQL
| name | birth |
+++
| Puffball | 19990330 |
| Chirpy | 19980911 |
| Whistler | 19971209 |
| Slim | 19960429 |
| Claws | 19940317 |
| Fluffy | 19930204 |
| Fang | 19900827 |
| Bowser | 19890831 |
| Buffy | 19890513 |
+++
Classificando filas 73
Tutorial MySQL
mysql> SELECT name, species, birth FROM pet ORDER BY species, birth DESC;
++++
++++
Classificando filas 74
Tutorial MySQL
++++
Classificando filas 75
Clculos de Data
MySQL fornece vrias funes que pode fazer clculos em datas, por
exemplo, para
Para determinar quantos anos tem seus animais de estimao, ele pega a
diferena entre
+++
| name | (TO_DAYS(NOW())TO_DAYS(birth))/365 |
+++
| Fluffy | 6.15 |
| Claws | 5.04 |
Clculos de Data 76
Tutorial MySQL
| Buffy | 9.88 |
| Fang | 8.59 |
| Bowser | 9.58 |
| Chirpy | 0.55 |
| Whistler | 1.30 |
| Slim | 2.92 |
| Puffball | 0.00 |
+++
para classificar a sada por nome. Para lidar com o ttulo da coluna,
fornece um
Clculos de Data 77
Tutorial MySQL
da coluna):
+++
| name | age |
+++
| Bowser | 9.58 |
| Buffy | 9.88 |
| Chirpy | 0.55 |
| Claws | 5.04 |
| Fang | 8.59 |
| Fluffy | 6.15 |
| Puffball | 0.00 |
Clculos de Data 78
Tutorial MySQL
| Slim | 2.92 |
| Whistler | 1.30 |
+++
Para classificar a sada por idade em vez de nome, somente use a clusula
ORDER BY:
+++
| name | age |
+++
| Puffball | 0.00 |
| Chirpy | 0.55 |
| Whistler | 1.30 |
| Slim | 2.92 |
Clculos de Data 79
Tutorial MySQL
| Claws | 5.04 |
| Fluffy | 6.15 |
| Fang | 8.59 |
| Bowser | 9.58 |
| Buffy | 9.88 |
+++
Uma pergunta parecida pode ser utilizada para determinar a idade dos
animais
Clculos de Data 80
Tutorial MySQL
+++++
+++++
+++++
A pergunta usa morte IS NOT NULL em vez de morte != NULL porque NULL um
valor especial.
como isto trabalha, faz uma pergunta simples que exibe o valor de ambos
data de
nascimento e ms(nascimento):
Clculos de Data 81
Tutorial MySQL
++++
++++
| Fluffy | 19930204 | 2 |
| Claws | 19940317 | 3 |
| Buffy | 19890513 | 5 |
| Fang | 19900827 | 8 |
| Bowser | 19890831 | 8 |
| Chirpy | 19980911 | 9 |
| Whistler | 19971209 | 12 |
| Slim | 19960429 | 4 |
| Puffball | 19990330 | 3 |
++++
Clculos de Data 82
Tutorial MySQL
+++
| name | birth |
+++
| Buffy | 19890513 |
+++
Clculos de Data 83
Tutorial MySQL
Voc pode at mesmo escrever a pergunta de modo que isto trabalhe com
nenhuma matria
depois o ms corrente:
Clculos de Data 84
Tutorial MySQL
entre 0 e 11. Assim a adio tem que estar depois de MOD() de outra
maneira ns
Clculos de Data 85
Trabalhando com valores NULOS
+++++
+++++
+++++
+++
+++
| 0 | 1 |
+++
Este tratamento especial de NULL por que isto foi necessrio para
determinar
Modelo do SQL permite voc usar "_" para unir qualquer caracter nico, e
"%" para unir
que voc no usa = ou != quando voc usa modelos do SQL; use o GOSTADO DE
ou NO
Unindo Modelo 89
Tutorial MySQL
+++++++
+++++++
+++++++
+++++++
+++++++
Unindo Modelo 90
Tutorial MySQL
+++++++
+++++++
+++++++
+++++++
Unindo Modelo 91
Tutorial MySQL
+++++++
+++++++
+++++++
testa este tipo de modelo, usa os operadores REGEXP e NOT REGEXP (ou
RLIKE e NOT RLIKE,
que so sinnimos).
Unindo Modelo 92
Tutorial MySQL
Por exemplo, "[abc]" une "a", "b" ou "c". Para especificar uma srie de
caracteres,
usam um trao. "[az]" une qualquer letra minscula, ao passo que "[09]"
une
qualquer dgito.
* "*" une zero ou mais solicitaes. Por exemplo, "x*" une qualquer
nmero de "x"
* Expresses Regulares so casos sensveis, mas voc pode usar uma classe
de caracter
para unir ambos lettercases. Por Exemplo, "[aA]" une letra minscula ou
maiscula "a"
Unindo Modelo 93
Tutorial MySQL
* Para ancorar um modelo de modo que isto deve unir o comeo ou trmino
da existncia
Para encontrar nomes que comeam com "b", para unir o comeo do nome
use "^" e "[bB]" para unir letra minscula com outra maiscula "b":
+++++++
+++++++
+++++++
Unindo Modelo 94
Tutorial MySQL
Para encontrar nomes finalizando com "fy" use e "$" para unir no final do
nome:
+++++++
+++++++
+++++++
Para encontrar nomes contendo "w" use "[wW]" e para unir letra minscula
Unindo Modelo 95
Tutorial MySQL
+++++++
+++++++
+++++++
Para encontrar nomes contendo exatamente cinco caracteres, use "^" e "$"
para unir
Unindo Modelo 96
Tutorial MySQL
+++++++
+++++++
+++++++
+++++++
+++++++
Unindo Modelo 97
Tutorial MySQL
+++++++
Unindo Modelo 98
Contando filas
faz um certo tipo de dados ocorrer em uma tabela?" Por exemplo, voc pde
querer
Contando filas 99
Tutorial MySQL
++
| COUNT(*) |
++
| 9 |
++
+++
| owner | COUNT(*) |
+++
| Benny | 2 |
| Diane | 2 |
| Gwen | 3 |
| Harold | 2 |
+++
censo animais.
+++
| species | COUNT(*) |
+++
| bird | 2 |
| cat | 2 |
| dog | 3 |
| hamster | 1 |
| snake | 1 |
+++
+++
| sex | COUNT(*) |
+++
| NULL | 1 |
| f | 4 |
| m | 4 |
+++
mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
++++
++++
| bird | NULL | 1 |
| bird | f | 1 |
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
| hamster | f | 1 |
| snake | m | 1 |
++++
Para uma tabela inteira voc usa COUNT(). Por exemplo, a pergunta prvia,
quando
++++
++++
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
++++
Ou, se voc desejar o nmero de animais por sexo, que contenha valores
conhecidos para
++++
++++
| bird | f | 1 |
| cat | f | 1 |
| cat | m | 1 |
| dog | f | 1 |
| dog | m | 2 |
| hamster | f | 1 |
| snake | m | 1 |
++++
tem. Se voc deseja registrar outra informao sobre eles, tal como
eventos em suas
* Isto necessita conter o animal de estimao assim voc sabe que evento
cada animal
participou.
* Isto necessita uma data assim voc sabe quando o evento ocorreu.
Fofo
19950515
litter
Buffy
19930623
litter
Buffy
19940619
litter
3 puppies, 3 fmea
Chirpy
19990321
vet
Magro
19970803
vet
quebrado rib
Bowser
19911012
kennel
Presa
19911012
kennel
Presa
19980828
aniversrio
Claws
19980317
aniversrio
Whistler
19981209
aniversrio
Primeiro aniversrio
Carregue os registros:
suas crias. A tabela de evento indica quando isto ocorreu, mas para
calcular a idade
++++
++++
++++
tabela que pode ser a unio do outro registro. Isto fcil porque ambos
tem uma
Voc tem duas tabelas diferentes para unilas. s vezes isto til para
unir
uma tabela para si mesmo, se voc deseja comparar registros em uma tabela
com
outros registros naquela mesma tabela. Por exemplo, para encontrar o sexo
> WHERE p1.species = p2.species AND p1.sex = "f" AND p2.sex = "m";
++++++
++++++
++++++
++
| DATABASE() |
++
| menagerie |
++
++
| Tables in menagerie |
++
| event |
| pet |
++
+++++++
+++++++
+++++++
Field indica o nome de coluna, Type o tipo de dados, Null indica que
no importa se
pode tambm executar MySQL em modo lote. Para fazer isto, coloque os
comandos que
voc deseja num arquivo, ento pea ao MySQL para ler a entrada do
arquivo:
Por que usar uma escrita? Aqui so umas das poucas razes:
* Modo Lote pode tambm ser til enquanto voc est desenvolvendo uma
pergunta,
de comandos.
* Se voc tem uma pergunta que produz uma sada, voc pode fazer que a
sada ocorra
atravs de um pager:
uma pergunta de um trabalho. Neste caso, voc deve usar modo lote.
++
| species |
++
| bird |
| cat |
| dog |
| hamster |
| snake |
++
cobra
hamster
co
gato
pssaro
espcie
Se voc deseja obter a sada interativa formatada em modo lote, use mysql
t. Para ecoar
Apostila de MySQL