Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Tutorial MySQL
Table of Contents
Projeto
Linux......................................................1
Tutorial de MySQL.......................................................3
Conectando e desconectando do servidor..................................6
Entrando e perguntando.................................................18
Exemplos de perguntas comuns...........................................22
A fila da coluna com o nmero mximo...................................24
Mximo da coluna: por grupo e por valores..............................29
Usando chaves estrangeiras.............................................34
Pesquisando em duas chaves.............................................36
Criando e usando um banco de dados.....................................40
Selecionando um banco de dados.........................................43
Criando uma tabela.....................................................49
Carregando dados dentro uma tabela.....................................57
Tutorial MySQL
Table of Contents
Recuperando informao de uma tabela...................................66
Selecionando colunas particulares......................................71
Classificando filas....................................................76
Clculos de Data.......................................................86
Trabalhando com valores NULOS..........................................89
Unindo Modelo..........................................................99
Contando filas........................................................107
Usando mais que uma tabela............................................118
Usando MySQL em modo lote...........................................title
ii
Tutorial de MySQL
Esta apostila fornece uma introduo ao MySQL por mostrar ao usurio como
criar
e gerenciar um banco de dados. MySQL um programa interativo que permite
voc conectar
com um servidor de MySQL, perguntar e ver os resultados. Tambm veremos
MySQL utilizado
em modo de lote: voc coloca suas perguntas em um arquivo de antemo, e
MySQL executa os
contedos do arquivo. Ambos os caminhos de usar o MySQL so descritos
aqui.
Para ver uma lista de opes fornecidas por MySQL, invoque?o com ?help:
Esta apostila assume que o MySQL est instalado em sua mquina, e que um
servidor de MySQL
Tutorial de MySQL
Tutorial MySQL
Tutorial de MySQL
O ******** representa sua senha; entre com a senha quando MySQL exibir
Enter
password: prompt.
Se daquela estao, voc deveria ver alguma informao de introduo
seguida
Tutorial MySQL
mysql>
O prompt diz que voc est pronto para entrar com os comandos.
Algumas instalaes do MySQL permite aos usurios conectar com o servidor
e continuar
como anfitrio local. Se isto o caso em sua mquina, voc deveria ser
capaz de
conectar com o servidor ao invocar o MySQL sem quaisquer opes:
Tutorial MySQL
shell> mysql
mysql> QUIT
Bye
Na maioria dos exemplos nas seguintes sees, assumem que voc est
conectado ao servidor.
Eles indicam isto por: mysql> prompt.
Entrando e perguntando
Neste ponto, mais importante descobrir como emitir perguntas do que
criar tabelas,
carregar e recuperar dados. Esta seo descreve os princpios bsicos de
como entrar
com os comandos, usando vrias perguntas. Voc pode experimentar
familiarizando com os
trabalhos do MySQL.
Aqui um comando simples que pergunta ao servidor o nmero de sua verso
e a data corrente.
| CURRENT_DATE |
+??????????????+??????????????+
| 3.22.20a?log | 1999?03?19
Entrando e perguntando
Tutorial MySQL
+??????????????+??????????????+
1 row in set (0.01 sec)
mysql>
Entrando e perguntando
Tutorial MySQL
Entrando e perguntando
Tutorial MySQL
Aqui outra pergunta. Isto demonstra que voc pode usar MySQL como uma
simples calculadora:
0.707107 |
25 |
+?????????????+?????????+
Entrando e perguntando
Tutorial MySQL
+??????????????+
| 3.22.20a?log |
+??????????????+
+?????????????????????+
| NOW()
+?????????????????????+
| 1999?03?19 00:15:33 |
+?????????????????????+
Entrando e perguntando
10
Tutorial MySQL
Um comando dado todo em uma nica linha, assim como comandos compridos
que requerem vrias
linhas, no tem nenhum problema. MySQL determina que sua declarao
termina por um
ponto?e?vrgula, e no, o fim de uma linha de entrada.
Aqui uma simples declarao de linha mltipla:
mysql> SELECT
?> USER()
?> ,
?> CURRENT_DATE;
+????????????????????+??????????????+
| USER()
| CURRENT_DATE |
+????????????????????+??????????????+
| joesmith@localhost | 1999?03?18
+????????????????????+??????????????+
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.
Se voc decide no executar mais nenhum comando que est no processo de
entrada, cancele
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
Prompt
Significado
mysql>
Pronto para um novo comando
?>
Esperando para prxima linha de linha mltipla de comando
'>
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
a resposta um
ponto?e?vrgula.
Entrando e perguntando
14
Tutorial MySQL
?> ;
+????????????????????+
| USER()
+????????????????????+
| joesmith@localhost |
+????????????????????+
O '> e "> prompts ocorrem durante coleo de fio. No MySQL, pode escrever
fios
circundados por um
"adeus"), e MySQL
"'"
ou
"""
caracteres
(por
exemplo,
'hello'
ou
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
caracter de citao. Por exemplo:
mysql> SELECT * FROM my_table WHERE name = "Smith AND age < 30;
">
Entrando e perguntando
16
Tutorial MySQL
mysql> SELECT * FROM my_table WHERE name = "Smith AND age < 30;
"> "\\c
mysql>
contendo
QUIT,
isto
pode
ser
completamente
confuso,
Entrando e perguntando
17
DOUBLE(16,2)
DEFAULT ''
NOT NULL,
18
Tutorial MySQL
+?????????+????????+???????+
| article | dealer | price |
+?????????+????????+???????+
|
0001 | A
| 3.45 |
0001 | B
| 3.99 |
0002 | A
| 10.99 |
0003 | B
| 1.45 |
0003 | C
| 1.69 |
19
Tutorial MySQL
0003 | D
| 1.25 |
0004 | D
| 19.95 |
+?????????+????????+???????+
+?????????+
| article |
+?????????+
|
4|
+?????????+
20
Tutorial MySQL
21
shop
No MySQL (ainda no faz uma sub?seleo) somente faz isto em dois passos:
1. Obtem o valor mximo e avalia a tabela com uma declarao SELECT.
2. Usando este valor compila a pergunta real:
22
Tutorial MySQL
FROM
shop
WHERE price=19.95
shop
23
shop
GROUP BY article
+?????????+???????+
| article | price |
+?????????+???????+
|
0001 | 3.99 |
0002 | 10.99 |
0003 | 1.69 |
0004 | 19.95 |
24
Tutorial MySQL
+?????????+???????+
"Para cada artigo, encontre o(s) negociante(s) com o preo mais caro."
shop s1
25
Tutorial MySQL
INSERT INTO tmp SELECT article, MAX(price) FROM shop GROUP BY article;
26
Tutorial MySQL
UNLOCK TABLES;
Se voc usar uma tabela TEMPORRIA, voc deve tambm fechar o "tmp"
tabela.
"Isto pode ser feito com uma pergunta nica?"
Sim, mas pode usar um truque ineficiente que chamado de "MAX
trick":
?CONCAT
SELECT article,
SUBSTRING( MAX( CONCAT(LPAD(price,6,'0'),dealer) ), 7) AS dealer,
0.00+LEFT(
27
Tutorial MySQL
FROM shop
GROUP BY article;
+?????????+????????+???????+
| article | dealer | price |
+?????????+????????+???????+
|
0001 | B
| 3.99 |
0002 | A
| 10.99 |
0003 | C
| 1.69 |
0004 | D
| 19.95 |
+?????????+????????+???????+
28
29
Tutorial MySQL
30
Tutorial MySQL
+????+?????????????????????+
| 1 | Antonio Paz
| 2 | Lilliana Angelovska |
+????+?????????????????????+
31
Tutorial MySQL
| color | owner |
+????+?????????+????????+???????+
| 1 | polo
| blue
| 2 | dress
| white |
| 3 | t?shirt | blue
1|
1|
1|
| 4 | dress
| orange |
2|
| 5 | polo
| red
2|
| 6 | dress
| blue
2|
| 7 | t?shirt | white |
2|
+????+?????????+????????+???????+
32
Tutorial MySQL
+????+???????+????????+???????+
| id | style | color | owner |
+????+???????+????????+???????+
| 4 | dress | orange |
2|
| 5 | polo | red
2|
| 6 | dress | blue
2|
+????+???????+????????+???????+
33
SELECT
'1'
field1_index,
field2_index
FROM
test_table
WHERE
field1_index
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
complicadas onde o servidor do SQL faz as otimizaes no pedido errado.
34
Tutorial MySQL
SELECT
'1';
field1_index,
field2_index
FROM
test_table
WHERE
field1_index
field2_index
FROM
test_table
WHERE
field2_index
field1_index,
Acima est o caminho para resolver a pergunta com efeito de unio de duas
perguntas.
35
36
Tutorial MySQL
|
|
|
37
Tutorial MySQL
+??????????+
38
Tutorial MySQL
39
40
Tutorial MySQL
explicitamente.
Para fazer o menagerie do banco de dados corrente, use este comando:
Seu banco de dados necessita ser criado uma unicamente vez, mas deve
selecion?lo o
uso a cada vez que comear uma sesso do MySQL. Voc pode fazer isto ao
usar uma declarao
de USE como mostrada acima. Alternativamente, voc pode selecionar o
banco de dados
na linha de comando, quando voc invocar MySQL. Somente vai especificar
seu nome depois
de quaisquer parmetros de conexo que poder ser necessrio fornecer.
Por exemplo:
41
Tutorial MySQL
42
A parte mais dura decidir que estrutura o seu banco de dados dever
ter: que tabelas
voc necessitar, e que colunas deve ter em cada uma delas.
Voc desejar uma tabela que contm um registro para cada um de seus
animais de estimao.
Isto pode ser chamado de tabela de animal de estimao, e isto deveria
conter, no mnimo,
o nome de cada animal. O nome por si mesmo no est muito interessante, a
tabela deveria
43
Tutorial MySQL
44
Tutorial MySQL
45
Tutorial MySQL
46
Tutorial MySQL
| Tables in menagerie |
+?????????????????????+
| pet
+?????????????????????+
Para verificar que sua tabela foi criada no caminho que voc criou, use a
declarao
DESCRIBE:
| Type
+?????????+?????????????+??????+?????+?????????+???????+
| name
| varchar(20) | YES |
| NULL
| owner
| varchar(20) | YES |
| NULL
| NULL
47
Tutorial MySQL
| sex
| char(1)
| YES |
| NULL
| birth
| date
| YES |
| NULL
| death
| date
| YES |
| NULL
+?????????+?????????????+??????+?????+?????????+???????+
Voc pode usar DESCRIBE a qualquer hora, por exemplo, se voc esquecer os
nomes das
colunas em sua tabela.
48
Nom
e
Dono
Espcie
Sexo
Nascimento
Morte
49
Tutorial MySQL
Fofo
Harold
gato
f
1993?02?04
Claws
Gwen
gato
m
1994?03?17
Buffy
Harold
co
f
50
Tutorial MySQL
1989?05?13
Presa
Benny
co
m
1990?08?27
Bowser
Diane
co
m
1998?08?31
1995?07?29
Chirpy
Gwen
51
Tutorial MySQL
pssaro
f
1998?09?11
Whistler
Gwen
pssaro
1997?12?09
Magro
Benny
cobra
m
1996?04?29
52
Tutorial MySQL
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
contedo do arquivo dentro da tabela com uma declarao nica.
Voc pode criar um arquivo de texto "pet.txt" contendo um registro por
linha, com
valores separados por tabulaes, conforme as colunas foram listadas na
declarao de
CREATE TABLE.
ou datas
Para
valores
desconhecidos
(tal
como
sexos
desconhecidos,
de morte para animais que esto ainda vivos), voc pode usar valores
NULL. Para
represent?los em seu arquivo de texto, use \\N. Por exemplo, o registro
do pssaro:
Whistler
Gwen
53
Tutorial MySQL
Pssaro
\
\N
1997?12?09
\
\N
Para carregar
estimao,
arquivo
de
texto
"pet.txt"
dentro
da
tabela
de
animal
de
54
Tutorial MySQL
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
foram listadas na declarao de CREATE TABLE. Suponha Diane obtem um novo
hamster
especificado Puffball. Voc podia inserir um novo registro usando uma
declarao INSERT:
55
Tutorial MySQL
56
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
* para para indicar todas colunas.
which_table indica a tabela de que voc deseja recuperar os dados. A
clusula WHERE
opcional.
Se for apresentado, conditions_to_satisfy especifica as condies que as
57
Tutorial MySQL
filas devem
satisfazer para recuperao qualificada.
| death
58
Tutorial MySQL
+??????????+????????+?????????+??????+????????????+????????????+
| Fluffy | Harold | cat | f | 1993?02?04 | NULL
|
|
+??????????+????????+?????????+??????+????????????+????????????+
Este comando SELECT til se voc desejar rever sua tabela inteira. Isto
acontece
quando a sada revela um erro em seu arquivo de dados: Bowser parece
nascer depois
59
Tutorial MySQL
Entretanto, se voc fez isto, voc tambm deve dar uma reentrada no
registro do Puffball.
60
Tutorial MySQL
Como mostrado acima, isto fcil para recuperar uma tabela inteira.
| death
+????????+???????+?????????+??????+????????????+????????????+
| Bowser | Diane | dog | m | 1989?08?31 | 1995?07?29 |
61
Tutorial MySQL
+????????+???????+?????????+??????+????????????+????????????+
A sada confirma que agora o ano est corretamente registrado como 1989 e
no 1998.
Comparaes de fio so normalmente casos insensveis, assim voc pode
especificar o
nome como "bowser", "BOWSER", etc. A pergunta a mesma.
Voc pode especificar condies em qualquer coluna, no somente no nome.
Por exemplo,
se voc deseja saber que animais nasceram depois 1998, teste a coluna de
nascimento:
| death |
+??????????+???????+?????????+??????+????????????+???????+
| Chirpy | Gwen | bird | f | 1998?09?11 | NULL |
| Puffball | Diane | hamster | f | 1999?03?30 | NULL |
62
Tutorial MySQL
+??????????+???????+?????????+??????+????????????+???????+
mysql> SELECT * FROM pet WHERE species = "dog" AND sex = "f";
+???????+????????+?????????+??????+????????????+???????+
| name | owner | species | sex | birth
| death |
+???????+????????+?????????+??????+????????????+???????+
| Buffy | Harold | dog | f | 1989?05?13 | NULL |
+???????+????????+?????????+??????+????????????+???????+
63
Tutorial MySQL
| name
| death |
+??????????+???????+?????????+??????+????????????+???????+
| Chirpy | Gwen | bird | f | 1998?09?11 | NULL |
| Whistler | Gwen | bird | NULL | 1997?12?09 | NULL |
| Slim | Benny | snake | m | 1996?04?29 | NULL |
+??????????+???????+?????????+??????+????????????+???????+
mysql> SELECT * FROM pet WHERE (species = "cat" AND sex = "m")
?> OR (species = "dog" AND sex = "f");
+???????+????????+?????????+??????+????????????+???????+
| name | owner | species | sex | birth
| death |
+???????+????????+?????????+??????+????????????+???????+
| Claws | Gwen | cat | m | 1994?03?17 | NULL |
| Buffy | Harold | dog | f | 1989?05?13 | NULL |
+???????+????????+?????????+??????+????????????+???????+
64
Tutorial MySQL
AND e OR podem ser misturados. Isto uma boa idia para usar parnteses
para indicar
que condies deveriam ser agrupados:
65
| birth
+??????????+????????????+
| Fluffy | 1993?02?04 |
| Claws | 1994?03?17 |
| Buffy | 1989?05?13 |
| Fang | 1990?08?27 |
| Bowser | 1989?08?31 |
66
Tutorial MySQL
| Chirpy | 1998?09?11 |
| Whistler | 1997?12?09 |
| Slim | 1996?04?29 |
| Puffball | 1999?03?30 |
+??????????+????????????+
| Harold |
67
Tutorial MySQL
| Benny |
| Diane |
| Gwen
| Gwen
| Benny |
| Diane |
+????????+
68
Tutorial MySQL
+????????+
| Benny |
| Diane |
| Gwen
| Harold |
+????????+
Voc pode usar a clusula WHERE para combinar a seleo da fila com
seleo da coluna.
Por exemplo, para obter datas de nascimento de ces e gatos unicamente:
| species | birth
+????????+?????????+????????????+
69
Tutorial MySQL
70
Classificando filas
Voc pode notar nos exemplos, que as filas de resultado so exibidas sem
nenhum
modo particular. Entretanto, isto mais fcil examinar a sada da
pergunta quando
as filas so classificadas em algum caminho significativo. Para
classificar um resultado,
use ORDER BY.
| birth
+??????????+????????????+
| Buffy | 1989?05?13 |
Classificando filas
71
Tutorial MySQL
| Bowser | 1989?08?31 |
| Fang | 1990?08?27 |
| Fluffy | 1993?02?04 |
| Claws | 1994?03?17 |
| Slim | 1996?04?29 |
| Whistler | 1997?12?09 |
| Chirpy | 1998?09?11 |
| Puffball | 1999?03?30 |
+??????????+????????????+
Para classificar
com o nome
um
pedido
em
ordem
decrescente,
use
palavra
chave
DESC
da coluna:
Classificando filas
72
Tutorial MySQL
| name
| birth
+??????????+????????????+
| Puffball | 1999?03?30 |
| Chirpy | 1998?09?11 |
| Whistler | 1997?12?09 |
| Slim | 1996?04?29 |
| Claws | 1994?03?17 |
| Fluffy | 1993?02?04 |
| Fang | 1990?08?27 |
| Bowser | 1989?08?31 |
| Buffy | 1989?05?13 |
+??????????+????????????+
Classificando filas
73
Tutorial MySQL
animal
pelo o
por
data
de
nascimento,
tipo
de
animal
deve
ser
classificado
mysql> SELECT name, species, birth FROM pet ORDER BY species, birth DESC;
+??????????+?????????+????????????+
| name
| species | birth
+??????????+?????????+????????????+
| Chirpy | bird | 1998?09?11 |
| Whistler | bird | 1997?12?09 |
| Claws | cat | 1994?03?17 |
| Fluffy | cat | 1993?02?04 |
| Fang | dog | 1990?08?27 |
| Bowser | dog | 1989?08?31 |
| Buffy | dog | 1989?05?13 |
| Puffball | hamster | 1999?03?30 |
Classificando filas
74
Tutorial MySQL
Classificando filas
75
Clculos de Data
MySQL fornece vrias funes que pode fazer clculos em datas, por
exemplo, para
calcular idades ou extrair partes das datas.
Para determinar quantos anos tem seus animais de estimao, ele pega a
diferena entre
a data de nascimento e a data corrente. Converte as duas datas para dias,
tomam a
diferena, e divide por 365 (o nmero de dias em um ano):
6.15 |
|
Clculos de Data
5.04 |
76
Tutorial MySQL
| Buffy
9.88 |
| Fang
8.59 |
| Bowser
| Chirpy
9.58 |
0.55 |
| Whistler |
1.30 |
| Slim
2.92 |
| Puffball |
0.00 |
+??????????+?????????????????????????????????????+
se
as
filas
que
forem
apresentadas
em
alguma
ordem.
Clculos de Data
77
Tutorial MySQL
| 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:
| age |
+??????????+??????+
| Puffball | 0.00 |
| Chirpy
| 0.55 |
| Whistler | 1.30 |
| Slim
| 2.92 |
Clculos de Data
79
Tutorial MySQL
| Claws
| Fluffy
| Fang
| Bowser
| Buffy
| 5.04 |
| 6.15 |
| 8.59 |
| 9.58 |
| 9.88 |
+??????????+??????+
Uma pergunta
animais
parecida
pode
ser
utilizada
para
determinar
idade
dos
mysql>
age
SELECT
name,
birth,
death,
(TO_DAYS(death)?TO_DAYS(birth))/365
AS
Clculos de Data
80
Tutorial MySQL
+????????+????????????+????????????+??????+
| name
| birth
| death
| age |
+????????+????????????+????????????+??????+
| Bowser | 1989?08?31 | 1995?07?29 | 5.91 |
+????????+????????????+????????????+??????+
A pergunta usa morte IS NOT NULL em vez de morte != NULL porque NULL um
valor especial.
Se voc deseja saber que animais tm aniversrios no prximo ms? Para
este tipo de
clculo, ano e dia so irrelevantes, voc simplesmente deseja extrair o
ms da
coluna de nascimento. MySQL fornece vrias funes do extrao de partes
da data,
tal como YEAR(), MONTH() and DAYOFMONTH(). MONTH() a funo apropriada
aqui. Para ver
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
| birth
| MONTH(birth) |
+??????????+????????????+??????????????+
| Fluffy | 1993?02?04 |
2|
| Claws | 1994?03?17 |
3|
| Buffy | 1989?05?13 |
5|
| Fang | 1990?08?27 |
8|
| Bowser | 1989?08?31 |
| Chirpy | 1998?09?11 |
8|
9|
| Whistler | 1997?12?09 |
| Slim | 1996?04?29 |
| Puffball | 1999?03?30 |
12 |
4|
3|
+??????????+????????????+??????????????+
Clculos de Data
82
Tutorial MySQL
+???????+????????????+
| Buffy | 1989?05?13 |
+???????+????????????+
Clculos de Data
83
Tutorial MySQL
Voc pode at mesmo escrever a pergunta de modo que isto trabalhe com
nenhuma matria
do ms corrente. Aquele caminho que voc no tem que usar um nmero de
ms particular
na pergunta. DATE_ADD() permite voc somar um intervalo do tempo para uma
data dada.
Se voc soma um ms ao valor de NOW(), ento o ms desfaz
resultado
?se MONTH(), o
Clculos de Data
84
Tutorial MySQL
Clculos de Data
85
NULL |
NULL |
NULL |
NULL |
+??????????+???????????+??????????+??????????+
86
Tutorial MySQL
0|
1|
+???????????+???????????????+
87
Tutorial MySQL
88
Unindo Modelo
MySQL fornece um modelo do SQL padronizado unindo assim um formulrio de
modelo
baseado em expresses regulares parecidas com aquelas utilizadas por
utilitrios de
Unix tal como vi, grep e sed.
Modelo do SQL permite voc usar "_" para unir qualquer caracter nico, e
"%" para unir
um nmero arbitrrio de caracteres (incluindo zero caracteres). No MySQL,
modelos
do SQL so caso insensvel por default. Alguns exemplos so mostrados
baixo. Note
que voc no usa = ou != quando voc usa modelos do SQL; use o GOSTADO DE
ou NO
operadores de comparao IGUAIS ao invs.
Unindo Modelo
89
Tutorial MySQL
| death
+????????+????????+?????????+??????+????????????+????????????+
| Buffy | Harold | dog | f | 1989?05?13 | NULL
| death |
+????????+????????+?????????+??????+????????????+???????+
| Fluffy | Harold | cat | f | 1993?02?04 | NULL |
Unindo Modelo
90
Tutorial MySQL
| death
+??????????+???????+?????????+??????+????????????+????????????+
| Claws | Gwen | cat | m | 1994?03?17 | NULL
+??????????+???????+?????????+??????+????????????+????????????+
Unindo Modelo
extamente
cinco
caracteres,
usam
os
91
Tutorial MySQL
| death |
+???????+????????+?????????+??????+????????????+???????+
| Claws | Gwen | cat | m | 1994?03?17 | NULL |
| Buffy | Harold | dog | f | 1989?05?13 | NULL |
+???????+????????+?????????+??????+????????????+???????+
Unindo Modelo
92
Tutorial MySQL
* Uma classe
suportes.
de
caracter
"[...]"
une
qualquer
caracter
dentro
dos
Por exemplo, "[abc]" une "a", "b" ou "c". Para especificar uma srie de
caracteres,
usam um trao. "[a
une
?9]"
qualquer dgito.
* "*" une zero ou mais solicitaes. Por exemplo, "x*" une qualquer
nmero de "x"
caracteres, "[0 ?9]*" une qualquer nmero de dgitos, e ".*" une qualquer
nmero de algo.
* 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"
e "[a?zA?Z]" une qualquer letra em um caso ou outro.
* O modelo ocorre em qualquer parte na existncia do valor testado (
modelos do SQL
unem unicamente os valores inteiro).
Unindo Modelo
93
Tutorial MySQL
* Para ancorar um modelo de modo que isto deve unir o comeo ou trmino
da existncia
do valor testado, use "^" no comeo ou "$" no final do modelo.
| death
+????????+????????+?????????+??????+????????????+????????????+
| Buffy | Harold | dog | f | 1989?05?13 | NULL
Unindo Modelo
94
Tutorial MySQL
Para encontrar
nome:
nomes
finalizando
com
"fy"
use
"$"
para
unir
no
final
do
| death |
+????????+????????+?????????+??????+????????????+???????+
| Fluffy | Harold | cat | f | 1993?02?04 | NULL |
| Buffy | Harold | dog | f | 1989?05?13 | NULL |
+????????+????????+?????????+??????+????????????+???????+
Para encontrar nomes contendo "w" use "[wW]" e para unir letra minscula
com outra maiscula "w":
Unindo Modelo
95
Tutorial MySQL
+??????????+???????+?????????+??????+????????????+????????????+
| name
| death
+??????????+???????+?????????+??????+????????????+????????????+
| Claws | Gwen | cat | m | 1994?03?17 | NULL
+??????????+???????+?????????+??????+????????????+????????????+
nomes
contendo
exatamente
cinco
caracteres,
use
"^"
"$"
Unindo Modelo
96
Tutorial MySQL
| death |
+???????+????????+?????????+??????+????????????+???????+
| Claws | Gwen | cat | m | 1994?03?17 | NULL |
| Buffy | Harold | dog | f | 1989?05?13 | NULL |
+???????+????????+?????????+??????+????????????+???????+
| death |
+???????+????????+?????????+??????+????????????+???????+
| Claws | Gwen | cat | m | 1994?03?17 | NULL |
| Buffy | Harold | dog | f | 1989?05?13 | NULL |
Unindo Modelo
97
Tutorial MySQL
+???????+????????+?????????+??????+????????????+???????+
Unindo Modelo
98
Contando filas
Bancos de Dados so freqentemente utilizados para responder a pergunta,
"quantas vezes
faz um certo tipo de dados ocorrer em uma tabela?" Por exemplo, voc pde
querer
saber quantos animais de estimao voc tem, ou quantos animais de
estimao cada
dono tem, ou voc pde desejar desempenhar vrias espcies de censos em
seus animais.
Contando o nmero total de animais voc faz a mesma pergunta de "quantas
filas
tem na tabela de animal de estimao?" porque h um registro, por cada
animal de estimao.
A funo COUNT() conta o nmero de resultados no NULOS, assim a pergunta
para
contar seus de animais :
Contando filas
99
Tutorial MySQL
+??????????+
| COUNT(*) |
+??????????+
|
9|
+??????????+
2|
| Diane |
2|
Contando filas
100
Tutorial MySQL
| Gwen
| Harold |
3|
2|
+????????+??????????+
exemplos
mostram
caminhos
diferentes
para
desempenhar
censo animais.
Contando filas
101
Tutorial MySQL
2|
| cat
2|
| dog
3|
| hamster |
| snake
1|
1|
+?????????+??????????+
Contando filas
102
Tutorial MySQL
1|
4|
4|
+??????+??????????+
mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
+?????????+??????+??????????+
| species | sex | COUNT(*) |
Contando filas
103
Tutorial MySQL
+?????????+??????+??????????+
| bird
| NULL |
| bird
|f
1|
| cat
|f
1|
| cat
|m
1|
| dog
|f
1|
| dog
|m
2|
| hamster | f
1|
| snake
1|
|m
1|
+?????????+??????+??????????+
Para uma tabela inteira voc usa COUNT(). Por exemplo, a pergunta prvia,
quando
desempenhada somente nos ces e gatos:
mysql> SELECT species, sex, COUNT(*) FROM pet
?> WHERE species = "dog" OR species = "cat"
Contando filas
104
Tutorial MySQL
|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
o sexo dos animais:
Contando filas
105
Tutorial MySQL
|f
1|
| cat
|f
1|
| cat
|m
1|
| dog
|f
1|
| dog
|m
2|
| hamster | f
1|
| snake
1|
|m
+?????????+??????+??????????+
Contando filas
106
107
Tutorial MySQL
108
Tutorial MySQL
3 puppies, 3 fmea
Chirpy
1999?03?21
vet
necessitado beak endireitado
Magro
1997?08?03
vet
quebrado rib
Bowser
1991?10?12
kennel
Presa
1991?10?12
kennel
109
Tutorial MySQL
Presa
1998?08?28
aniversrio
Deu ele um novo brinquedo mascado
Claws
1998?03?17
aniversrio
Deu ele um novo colarinho de pulga
Whistler
1998?12?09
aniversrio
Primeiro aniversrio
Carregue os registros:
110
Tutorial MySQL
de
evento
indica
quando
isto
ocorreu,
mas
para
mysql>
remark
SELECT
pet.name,
(TO_DAYS(date)
TO_DAYS(birth))/365
AS
age,
111
Tutorial MySQL
| age | remark
+????????+??????+?????????????????????????????+
| Fluffy | 2.27 | 4 kittens, 3 female, 1 male |
| Buffy | 4.12 | 5 puppies, 2 female, 3 male |
| Buffy | 5.10 | 3 puppies, 3 female
+????????+??????+?????????????????????????????+
112
Tutorial MySQL
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
entre seus animais de estimao, voc pode unir a tabela de animal de
estimao
com si mesmo para juntar os masculinos e as fmeas da mesma espcie:
113
Tutorial MySQL
+????????+??????+????????+??????+?????????+
| name
| sex | name
| sex | species |
+????????+??????+????????+??????+?????????+
| Fluffy | f
| Claws | m
| cat
| Buffy | f
| Fang
| dog
| Buffy | f
| Bowser | m
|m
| dog
+????????+??????+????????+??????+?????????+
114
Tutorial MySQL
banco
de
dados
corrente
foi
selecionado,
usa
115
Tutorial MySQL
| pet
+?????????????????????+
| Type
+?????????+?????????????+??????+?????+?????????+???????+
116
Tutorial MySQL
| name
| varchar(20) | YES |
| NULL
| owner
| varchar(20) | YES |
| NULL
| NULL
| sex
| char(1)
| YES |
| NULL
| birth
| date
| YES |
| NULL
| death
| date
| YES |
| NULL
+?????????+?????????????+??????+?????+?????????+???????+
Field indica o nome de coluna, Type o tipo de dados, Null indica que
no importa se
a coluna pode conter valores NULOS, Key indica que no importa se a
coluna ordenada
e Default especifica valor de default da coluna.
Se ordenou uma tabela, SHOW INDEX FROM tbl_name produzimos informao
sobre elas.
117
118
Tutorial MySQL
119
Tutorial MySQL
120
Tutorial MySQL
+?????????+
| species |
+?????????+
| bird
| cat
| dog
| hamster |
| snake
+?????????+
121
Tutorial MySQL
espcie
Se voc deseja obter a sada interativa formatada em modo lote, use mysql
?t. Para ecoar
sada os comandos que so executados, usam mysql ?vvv.
Apostila de MySQL
122