A tabela pet mantém informações de quais
          animais você tem. Se você deseja gravar outras informações
          sobre eles como eventos em suas vidas, tais como visitas ao
          veterinário ou sobre suas crias, você necessitará de outra
          tabela. Como esta tabela deve se parecer ? Ela precisa:
        
Conter o nome do animal para que você saiba a qual animal pertence o evento.
Uma data para que você saiba quando ocorreu o evento.
Um campo para descrever o evento.
Um campo com o tipo de evento, se você desejar classificá-los por categoria.
          Dadas estas considerações, a instrução CREATE
          TABLE para a tabela event deve se
          parecer com isto:
        
mysql>CREATE TABLE event (name VARCHAR(20), date DATE,->type VARCHAR(15), remark VARCHAR(255));
          Como na tabela pet, é mais fácil carregar
          os registros iniciais criando um arquivo texto delimitado por
          tabulações contendo a informação:
        
| name | date | type | remark | 
| Fluffy | 1995-05-15 | litter | 4 kittens, 3 female, 1 male | 
| Buffy | 1993-06-23 | litter | 5 puppies, 2 female, 3 male | 
| Buffy | 1994-06-19 | litter | 3 puppies, 3 female | 
| Chirpy | 1999-03-21 | vet | needed beak straightened | 
| Slim | 1997-08-03 | vet | broken rib | 
| Bowser | 1991-10-12 | kennel | |
| Fang | 1991-10-12 | kennel | |
| Fang | 1998-08-28 | birthday | Gave him a new chew toy | 
| Claws | 1998-03-17 | birthday | Gave him a new flea collar | 
| Whistler | 1998-12-09 | birthday | First birthday | 
Carregue os registros usando:
mysql> LOAD DATA LOCAL INFILE "event.txt" INTO TABLE event;
          Baseado no que você já aprendeu com as consultas realizadas
          na tabela pet, você deve estar apto para
          realizar pesquisas na tabela event; os
          princípios são o mesmo. Mas quando a tabela
          event, sozinha, é insuficiente para
          responder às suas questões?
        
          Suppose you want to find out the ages at which each pet had
          its litters. We saw earlier how to calculate ages from two
          dates. The litter date of the mother is in the
          event table, but to calculate her age on
          that date you need her birth date, which is stored in the
          pet table. This means the query requires
          both tables:
        
          Suponha que você deseje descobrir as idades de cada animal
          quando eles tiveram cria. Nós vemos logo que é possível
          calcular a idade a partir das duas datas. A idade dos filhotes
          está na tabela event, mas para calcular a
          idade da mãe, você precisará da data de nascimento dela,
          que está armazenado na tabela pet. Isto
          significa que você precisará das duas tabelas para a
          consulta:
        
mysql>SELECT pet.name,->(YEAR(date)-YEAR(birth)) - (RIGHT(date,5)<RIGHT(birth,5)) AS age,->remark->FROM pet, event->WHERE pet.name = event.name AND type = "litter";+--------+------+-----------------------------+ | name | age | remark | +--------+------+-----------------------------+ | Fluffy | 2 | 4 kittens, 3 female, 1 male | | Buffy | 4 | 5 puppies, 2 female, 3 male | | Buffy | 5 | 3 puppies, 3 female | +--------+------+-----------------------------+
Existem várias coisas que devem ser percebidas sobre esta consulta:
              A cláusula FROM lista as duas tabelas
              porque a consulta precisa extrair informação de ambas.
            
              Quando combinar (unir) informações de múltiplas
              tabelas, você precisa especificar como registros em uma
              tabela podem ser coincididas com os registros na outra.
              Isto é simples porque ambas possuem uma coluna
              name. A consulta utiliza a cláusula
              WHERE para coincidir registros nas duas
              tabelas baseadas nos valores de name.
            
              Como a coluna name ocorre em ambas
              tabelas, você deve especificar qual a tabela a que você
              está se referindo. Isto é feito usando o nome da tabela
              antes do nome da coluna separados por um ponto
              (.).
            
          Você não precisa ter duas tabelas diferentes para realizar
          uma união. Algumas vezes é útil unir uma tabela a ela
          mesma, se você deseja comparar registros em uma tabela com
          outros registros na mesma tabela. Por exemplo, para encontrar
          pares entre seus animais, você pode unir a tabela
          pet com ela mesma para produzir pares
          candidatos de machos e fêmeas de acordo com as espécies:
        
mysql>SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species->FROM pet AS p1, pet AS p2->WHERE p1.species = p2.species AND p1.sex = "f" AND p2.sex = "m";+--------+------+--------+------+---------+ | name | sex | name | sex | species | +--------+------+--------+------+---------+ | Fluffy | f | Claws | m | cat | | Buffy | f | Fang | m | dog | | Buffy | f | Bowser | m | dog | +--------+------+--------+------+---------+
Nesta consulta, nós especificamos apelidos para os nomes das tabelas para conseguir referenciar às colunas e manter com qual instância da tabela cada coluna de referência está associdada.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

