Os joins são extremamente úteis para a recuperação de informações. Eles permitem interligar tabelas, ou seja, recuperar informações que estão armazenadas em mais de uma tabela em uma única consulta. Este processo só é possível se existir vínculo entre as tabelas, que é o que acontece quando se adiciona uma chave estrangeira em uma tabela, referenciando a chave primária de outra tabela. É um conceito bastante simples. Vamos analisar atentamente a figura abaixo:

Inner Join

Se você observar atentamente verá que as tabelas estão interligadas através das colunas "Modelo". Bem, vou criar essas tabelas na nossa base de dados "Teste" e vamos entender como o Join funciona.

Create table carro(
modelo varchar(40),
cor varchar(20),
qtde_portas int,
combustivel varchar(20),
montadora varchar(20),
primary key(modelo)) Engine=innoDB;

Create table preco(
modelo varchar(40),
valor float,
primary key(modelo),
foreign key(modelo) references carro(modelo)) Engine=InnoDB;

Agora nossa base de dados possui essas duas tabelas, conforme figura abaixo:

Inner Join MySQL

Agora vou inserir os dados conforme a ilustração número 1;

INSERT INTO carro VALUES("Gol I Motion 1.6 MI Total Flex 8V 4P", "Preto", 4, "Flex", "Volkswagen");

INSERT INTO carro VALUES ("Palio Weekend Trekking 1.8 MPI Flex 8V", "Azul", 2, "Flex", "FIAT");

INSERT INTO carro VALUES ("Ka Sport 1.6 8V Flex 2P", "Prata", 2, "Flex", "Ford");

INSERT INTO carro VALUES("Corsa Hat Maxx 1.4 8V ECONOFLEX", "Vermelho", 2, "Flex", "GM");

INSERT INTO carro VALUES ("EDGE LIMITED 3.5 V6 24V AWD Aut.", "Preto", 4, "Gasolina", "Ford");

INSERT INTO carro VALUES ("Jetta 2.0 TSI 16V 4P Tiptronic", "Preto", 4, "Gasolina", "Volkswagen");

INSERT INTO preco VALUES ("Gol I Motion 1.6 MI Total Flex 8V 4P", "36900.00");

INSERT INTO preco VALUES ("Palio Weekend Trekking 1.8 MPI Flex 8V", "44000");

INSERT INTO preco VALUES ("Ka Sport 1.6 8V Flex 2P", "36100");

INSERT INTO preco VALUES ("Corsa Hat Maxx 1.4 8V ECONOFLEX", "31200");

INSERT INTO preco VALUES ("EDGE LIMITED 3.5 V6 24V AWD Aut.", "152500");

INSERT INTO preco VALUES ("Jetta 2.0 TSI 16V 4P Tiptronic", "95000");

Nós temos, na tabela "preço", o valor dos carros referente a cada modelo. Já na tabela "carro" nós temos o modelo, a quantidade de portas, a cor, o combustível e a montadora. No entanto podemos precisar saber qual o preço de todos os carros cujo combustível seja gasolina. Essas informações estão em tabelas separadas, mas que podem ser ligadas através da coluna que elas possuem em comum, que é a coluna "Modelo".

Essa busca de dados interligando mais de uma tabela é, como já foi dito, um Join. Quando precisamos citar mais de uma tabela em nosso comando SQL, devemos dizer qual é a tabela que estamos acessando, em seguida, separado por um ponto, referenciarmos a coluna. Por exemplo: vamos imaginar que tivéssemos uma tabela chamada "aluno" com uma coluna "nome" e uma tabela "escola" com uma coluna "telefone". Se quiséssemos fazer um SELECT exibindo os dados desses dois campos, isso seria feito da seguinte forma:

Inner Join MySQL

Vamos ver como fica o comando que nos mostra quais são os preços dos carros cujo combustível seja a Gasolina, considerando que esses dados estão parte na tabela "carro" e parte na tabela "preco":

SELECT carro.modelo AS Modelo, carro.combustivel AS ‘Combustível’, preco.valor AS ‘Preço’ FROM carro, preco WHERE carro.modelo = preco.modelo AND carro.combustivel like ‘Gasolina’;

Inner Join MySQL

O comando comentado é:

Inner Join MySQL

Vejam que as informações foram cruzadas corretamente e conseguimos montar o que parece ser uma única tabela, mas contendo os dados de tabelas distintas. A essa ligação entre tabelas em que se usa como referência a chave primária de uma e a chave estrangeira de outra, chamamos Inner Join.

O MySQL, assim como outros grandes SGBDs, aceita que você use esse rótulo para realizar suas consultas, em vez de utilizar o parâmetro WHERE, da seguinte forma:

SELECT carro.modelo AS Modelo, combustivel AS 'Combustível', valor AS 'Preço' FROM carro INNER JOIN preco ON carro.modelo = preco.modelo AND carro.combus tivel LIKE 'Gasolina';

Inner Join MySQL

Vejam que no lugar de WHERE eu utilizei o termo INNER JOIN e, com o parâmetro ON, especifiquei quais campos seriam comparados.

Observação!

Assim como nos comandos UPDATE e DELETE é fundamental que você especifique quais tuplas devem ser alvo do seu comando, nos Joins isso também é muito importante. Caso você não especifique, o SGDB fará o produto cartesiano das tabelas envolvidas, retornando dados que provavelmente não terão utilidade para você. Vejam o retorno do seguinte comando:

SELECT carro.modelo AS Modelo, carro.combustivel AS 'Combustível', preco.valor AS 'Preço' FROM carro, preco;

Inner Join MySQL

Vejam que o sistema nos retornou 36 tuplas, que é o produto das 6 tuplas da tabela "carro" com as 6 da tabela "preco". Notem que existem informações absurdas nesse retorno, já que um mesmo carro tem 6 preços diferentes. A esse produto cartesiano entre as tabelas, damos o nome de Cross Join. Ou seja, sempre que não quiser o produto entre todos os itens das tabelas, o que deve acontecer na maioria esmagadora dos casos, lembre sempre de sempre utilizar o parâmetro WHERE para especificar os campos que devem ser igualados.

É isso! O temido assunto Join nada mais é do que o cruzamento de dados de mais de uma tabela! Aqui vimos o Inner e o Cross, mas existem outros tipos, que veremos na sequência.


HARDWARE

Entendendo o seu computador

O que há dentro do meu computador?

Existem alguns componentes fundamentais presentes dentro do seu computador e é muito importante que você conheça um pouco sobre eles, seja para argumentar com algum vendedor durante a compra de um novo PC ou para identificar alguma atitude desleal de algum técnico que esteja te passando um orçamento para reparo. Na seção Raio-X aqui do Contém Bits você pode conhecer e entender mais detalhadamente sobre cada componente, ou também pode clicar abaixo no componente que deseja, para conhecê-lo melhor.

  • Gabinetes

  • Placas-Mãe

  • Processadores

  • Memória

  • Fontes

  • Drives Ópticos

  • Discos Rígidos

  • SSD

  • Placas de Som

  • Placas de Vídeo

Você Sabia?

A IBM detém o recorde de patentes em um único ano, atingindo a marca de 4186 registros no ano de 2008. Clique aqui e saiba mais sobre esta gigante do mundo da tecnologia.


Instalar vários aplicativos com o mesmo propósito, como editores de texto, reprodutores de músicas ou vídeos e até programas antívirus sobrecarregam o seu sistema operacional e ainda ocupam espaço desnecessário em seu HD. Tenha apenas um bom programa para cada função.


O personagem Mario surgiu pela primeira vez no mundo dos games em um jogo chamado Donkey Kong, lançado em 1981. Mario, que naquela época se chamava Jumpman, não era o personagem principal do jogo, mas ele se tornaria um dos mais famosos personagens do mundo dos games. Saiba mais.


O ENIAC, primeiro computador valvulado do mundo, possuía 17.000 válvulas, 500.000 pontos de solda, 30 toneladas de peso e ocupava uma área de 180 metros quadrados. Clique aqui e conheça mais sobre a história dos computadores.


O primeiro jogo a fazer uso de uma Inteligência Artificial foi o Mouse in the Maze, criado em 1955, na União Soviética. Você pode saber mais sobre ele clicando aqui.


O personagem Mario só possui bigode porque quando ele foi criado, em 1981, a resolução de tela dos equipamentos disponíveis não permitia que fosse desenhada uma boca, então os desenvolvedores fizeram o grande bigode para contornar essa limitação tecnológica.


Excesso de barulho dentro do seu gabinete, principalmente logo que você o liga, pode ser sintoma de problemas nas ventoinhas, que podem precisar ser limpas ou trocadas. Entre em contato com um técnico de sua confiança e verifique isso o quanto antes.


O filme Mortal Kombat, inspirado no jogo de mesmo nome, faturou 23 milhões de dólares apenas no fim de semana de estreia nos EUA. Ainda sobre este título de sucesso, outra cifra que impressiona é o faturamento ao longo do primeiro ano: 1 bilhão de dólares no mundo todo.


Desde o seu lançamento, em 1985, o fantástico jogo Tetris vende pelo menos 70 milhões de unidades por ano em todo o mundo! Os dados são oficiais e fornecidos pela THQ, uma das distribuidoras do título.


A Máquina de Pascal, criada em 1642 pelo filósofo, físico e matemático francês Blaise Pascal, é reconhecida como o primeiro computador do mundo e ele foi criado com o objetivo de calcular impostos. Saiba mais.


O console Nintendo Entertainment System (NES), da Nintendo, detém o recorde de videogame mais clonado em todo o mundo. Já foram catalogados mais de 300 aparelhos diferentes capazes de reproduzir seus jogos! Saiba mais sobre ele aqui.