Tutorial de MySQL - Parte I
Este tutorial fornece uma introdução ao MySQL por mostrar ao usuário 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. Também veremos MySQL utilizado em modo de lote: você coloca suas perguntas em um
arquivo de antemão, e MySQL executa os conteúdos do arquivo. Ambos os caminhos de usar o MySQL são descritos aqui.
Esta apostila assume que o MySQL está instalado em sua máquina, e que um servidor de MySQL está disponÃvel para que possa conectar.
Assume também que voce possui instalado o MySQL-Front, o qual os comandos aqui foram testados atraves do painel Query. Os camandos neste painel seguem o padrão do MySQL e devem ser digitados sem o terminador de linhas ';' a não ser que sejam colocadas várias linhas ao mesmo tempo.
A apostila descreve o processo inteiro de como criar e usar um banco de dados.
1 - Conectando e desconectando do servidor
Para conectar ao servidor, você usualmente necessitará fornecer um usuário ao MySQL e, mais provavelmente, uma senha. Se o servidor continua numa máquina
que não tem onde se registrar, também necessitará especificar um hostname. Sabendo os parâmetros próprios, você poderá se conectar:
shell> mysql -h host -u user -p
Enter password: ********
O ******** representa sua senha; entre com a senha quando MySQL exibir Enter
password: prompt.
Se daquela estação, você deveria ver alguma informação de introdução seguida
por uma mysql> prompt:
shell> mysql -h host -u user -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 459 to server version: 3.22.20a-log
Tipo "help" para ajuda.
mysql>
O prompt diz que você está pronto para entrar com os comandos. Algumas instalações do MySQL permite aos usuários conectar com o servidor e continuar como
anfitrião local. Se isto é o caso em sua máquina, você deveria ser capaz de conectar com o servidor ao invocar o MySQL sem quaisquer opções:
shell> mysql
Depois que está conectado, você pode desconectar a qualquer momento, é só digitar QUIT
no mysql> prompt:
mysql> QUIT
Bye
Você também pode desconectar por control-D.
Na maioria dos exemplos nas seguintes seções, assumem que você está conectado ao servidor.
Eles indicam isto por: mysql> prompt.
Introdução - Entrando e perguntando
Neste ponto, é mais importante descobrir como emitir perguntas do que criar tabelas, carregar e recuperar dados. Esta seção descreve os princÃpios básicos
de como entrar com os comandos, usando várias perguntas. Você pode experimentar familiarizando com os trabalhos do MySQL.
Aqui é um comando simples que pergunta ao servidor o número de sua versão e a data corrente.
mysql> SELECT VERSION(), CURRENT_DATE;
+--------------+--------------+
| version() | CURRENT_DATE |
+--------------+--------------+
| 3.22.20a-log | 1999-03-19 |
+--------------+--------------+
1 row in set (0.01 sec)
mysql>
Esta pergunta ilustra várias coisas sobre MySQL:
* Um comando normalmente consiste de uma declaração do SQL seguida por um ponto-e-vÃrgula.
(Há algumas exceções onde um ponto-e-vÃrgula não são necessário.
QUIT, mencionado anteriormente, é um deles.)
* Quando você emite um comando, MySQL envia ao servidor para execução e exibe os resultados,
então exibe mysql>, para indicar que está pronto para outro comando.
* MySQL exibe a saÃda da pergunta como uma tabela (filas e colunas).
A primeira fila contem rótulos às colunas. As demais filas são os resultados da pergunta. Normalmente, os rótulos da coluna são os nomes das colunas que
traz das tabelas do banco de dados. Se você está recuperando o valor de uma expressão, em vez de uma coluna de tabela, MySQL rotula a coluna usando a
expressão que foi usada.
* MySQL mostra quantas filas foram exibidas, e quanto tempo a pergunta levou para ser executada, dando uma idéia rude de performance do servidor. Esses
valores são imprecisos porque eles representam tempo de relógio de parede (não CPU ou tempo de máquina), e porque eles são afetados por certos tipos de
fatores. Palavras chaves podem ser inseridas em qualquer caixa de entrada . As seguintes perguntas são equivalente:
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;
Aqui é outra pergunta. Isto demonstra que você pode usar MySQL como uma simples calculadora:
mysql> SELECT SIN(PI()/4), (4+1)*5;
+-------------+---------+
| SIN(PI()/4) | (4+1)*5 |
+-------------+---------+
| 0.707107 | 25 |
+-------------+---------+
Os comandos mostrados têm estado relativamente em declarações de linhas únicas e curtas.
Você pode até mesmo entrar com declarações múltiplas em uma única linha.
Somente termine cada uma com um ponto-e-vÃrgula.
mysql> SELECT VERSION()
mysql> SELECT NOW();
+--------------+
| version() |
+--------------+
| 3.22.20a-log |
+--------------+
+---------------------+
| NOW() |
+---------------------+
| 1999-03-19 00:15:33 |
+---------------------+
Um comando dado todo em uma única linha, assim como comandos compridos que requerem várias linhas, não tem nenhum problema. MySQL determina que sua
declaração termina por um ponto-e-vÃrgula, e não, o fim de uma linha de entrada.
Aqui é uma simples declaração de linha múltipla:
mysql> SELECT USER(), CURRENT_DATE;
+--------------------+--------------+
| USER() | CURRENT_DATE |
+--------------------+--------------+
| joesmith@localhost | 1999-03-18 |
+--------------------+--------------+
Exemplos de perguntas comuns
Aqui segue exemplos de como resolver alguns dos problemas mais comuns do MySQL. Algum dos exemplos usam a tabela de compras, coloque os preços de cada
artigo (número de item) de cada negociante. Supondo que cada negociante tem um preço fixo por artigo, então (item, negociante) é uma chave primária aos
registros. Você pode criar a tabela de exemplo como:
CREATE TABLE shop (
article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
dealer CHAR(20) DEFAULT '' NOT NULL,
price DOUBLE(16,2) DEFAULT '0.00' NOT NULL,
PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
(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);
Assim os dados de exemplo estarão:
SELECT * FROM shop
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 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 |
+---------+--------+-------+
O valor máximo de uma coluna
"Qual é o artigo que tem o preço mais alto?"
SELECT MAX(article) AS article FROM shop
+---------+
| article |
+---------+
| 4 |
+---------+
A fila da coluna com o número máximo
"Encontre o número do negociantes, e avalie quem tem o artigo mais caro."
No ANSI SQL isto é facilmente feito com um sub-query:
SELECT article, dealer, price
FROM shop
WHERE price=(SELECT MAX(price) FROM shop)
No MySQL (ainda não faz uma sub-seleção) somente faz isto em dois passos:
1. Obtem o valor máximo e avalia a tabela com uma declaração SELECT.
2. Usando este valor compila a pergunta real:
SELECT article, dealer, price
FROM shop
WHERE price=19.95
Outra solução está em classificar todas filas decrescentes por preço e unicamente obter
uma fila usando o MySQL cláusula de LIMIT:
SELECT article, dealer, price
FROM shop
ORDER BY price DESC
LIMIT 1
Note: Se há vários artigos caros, a solução de LIMIT mostra unicamente um deles.
Máximo da coluna: por grupo e por valores
"Qual é o preço mais alto por artigo?"
SELECT article, MAX(price) AS price
FROM shop
GROUP BY article
+---------+-------+
| article | price |
+---------+-------+
| 0001 | 3.99 |
| 0002 | 10.99 |
| 0003 | 1.69 |
| 0004 | 19.95 |
+---------+-------+
As filas com grupos de campos de valor máximo.
Aguarde pela segunda parte deste tutorial.