Página 26
Whistler
1998-12-09
aniversário
Primeiro aniversário
Carregue os registros:
mysql> LOAD DATA LOCAL INFILE "event.txt" INTO TABLE event;
Baseado no que você já aprendeu nas perguntas, continuando na tabela de animal de estimação, agora você é capaz de desempenhar recuperações nos registros da tabela de evento; os princípios são os mesmos. Mas quando a tabela de evento é por si mesmo insuficiente para responder as perguntas você pôde perguntar?
Suponha que deseja descobrir as idades de cada animal de estimação quando eles tiveram suas crias. A tabela de evento indica quando isto ocorreu, mas para calcular a idade da mãe, você necessita a data de nascimento que está armazenado na tabela de animal de estimação, você necessita de ambas tabelas:
mysql> SELECT pet.name, (TO_DAYS(date) - TO_DAYS(birth))/365 AS age, remark
-> FROM pet, event
-> WHERE pet.name = event.name AND type = "litter";
+--------+------+-----------------------------+
| name | 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 |
+--------+------+-----------------------------+
Há várias coisas para notar sobre esta pergunta:
* A cláusula FROM lista duas tabelas porque a pergunta necessita puxar informação de ambas.
* Quando combina informação de tabelas múltiplas, você necessita registrar em uma tabela que pode ser a união do outro registro. Isto é fácil porque ambos tem uma coluna de nome. A cláusula WHERE pergunta para as duas tabelas os valores do nome.
* A coluna de nome ocorre em ambas tabelas, você deve ser específico sobre que tabela você está se referindo à coluna.
Você tem duas tabelas diferentes para uni-las. À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 entre seus animais de estimação, você pode unir a tabela de animal de estimação com si mesmo para juntar os masculinos e as fêmeas da mesma espécie:
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 |
+--------+------+--------+------+---------+
Obtendo informação sobre bancos de dados e tabelas
Se você esquecer o nome de um banco de dados ou tabela, ou a estrutura de uma tabela (como suas colunas são chamadas). MySQL resolve este problema através de várias declarações que fornecem informação sobre os bancos de dados e tabelas.
Você já viu SHOW DATABASES, que lista os bancos de dados administrados pelo servidor. Para descobrir qual o banco de dados corrente foi selecionado, usa a função DATABASES():
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| menagerie |
+------------+
|