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?

Criar um jogo é muito mais complexo do que parece. São milhares, às vezes, milhões de linhas de código. Isso não é exagero! Apenas o jogo Ultima Online possui 6.006.313 linhas de programação, totalizando 25.103.295 palavras


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 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.


A empresa Universal City Studios, detentora dos direitos autorais do King Kong, processou a Nintendo logo após o lançamento de Donkey Kong, pois segundo ela, o game violava os seus direitos. Ela venceu o processo e recebeu da Nintendo uma indenização de quase 2 milhões de dólares.


A empresa Take-Two pagou à Infogrames mais de 22 milhões de dólares pelos direitos de Civilization, em novembro de 1994. Ainda sobre este título, Sid Meier, um dos seus fundadores, é o profissional da área dos games mais premiado em todo o mundo.


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.


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 mouse foi criado em 9 de dezembro de 1968, por um americano chamado Douglas Engelbart, que o batizou de "XY Position Indicator for a Display System". Conheça a história do mouse clicando aqui.


O primeiro computador a conseguir rodar o jogo Spacewar era o PDP-1, que custava 120 mil dólares e pertencia ao Massachusetts Institute of Technology. O jogo demorou 200 horas para ser desenvolvido, em 1962, e seu criador foi um cientista da computação chamado Steve Russel.


O título Tetris detém o recorde de jogo mais adaptado de todos os tempos. No total foram mais de 60 plataformas diferentes que receberam alguma versão do quebra-cabeças criado por Alexey Pajitnov. Conheça mais sobre este incrível jogo clicando aqui.


Nos primeiros oito dias após o lançamento do console Nintendo Wii foram vendidas 600 mil unidades. Isso equivale a quase um por segundo e estes incríveis números são referentes às vendas apenas nos EUA!