Cursos / Informática para Internet / Banco de dados / Aula

arrow_back Aula 12 - Linguagem SQL – Alteração da estrutura de tabelas e ambientes de múltiplas tabelas

Consultas em ambientes multitabelas

Já vimos que em um banco de dados relacional, muitas vezes, os dados são armazenados em tabelas diferentes, entretanto, eles estão relacionados entre si, sendo essa relação definida entre determinadas colunas dessas tabelas. Mas, como fazer para realizar uma consulta que combine os registros de duas ou mais tabelas em um banco de dados?

A solução para essa pergunta está no uso de conexões definidas pela cláusula JOIN (conexões). A cláusula JOIN em SQL permite combinar os registros de duas ou mais tabelas em um banco de dados. Por meio dessa cláusula, é possível pesquisar dados em duas ou mais tabelas, com base nas relações entre determinadas colunas nessas tabelas.

Vamos começar nosso estudo sobre conexões estudando o tipo mais simples de conexão denominada de conexão cartesiana ou de produto cartesiano.

Uma consulta a duas tabelas utilizando a cláusula CROSS JOIN vai retornar todos os registros resultantes da combinação de cada linha da primeira tabela (A) com cada linha da segunda tabela (B). A conexão cruzada combina cada linha da tabela A, com cada linha da tabela B. O número total de linhas no conjunto de resultados será o número de linhas da tabela A vezes o número de linhas da tabela B. Ou seja, a cláusula CROSS JOIN retorna o produto cartesiano dos conjuntos de linhas das tabelas.

No comando SELECT, a conexão cruzada pode ser especificada inserindo a palavra CROSS JOIN entre os nomes das tabelas na cláusula FROM, ou simplesmente utilizando uma vírgula (,) entre os nomes das tabelas. A sintaxe do comando SELECT com conexão cruzada é descrita no quadro a seguir.

No comando SELECT, os valores representados por atributo1_da_tabela1, atributo1_da_tabela2, ... compõem a lista de atributos das diferentes tabelas que você deseja consultar. A cláusula FROM informa de quais tabelas os dados serão recuperados.

Uma forma de identificar o atributo de uma determinada tabela é utilizando a sintaxe nome_da_tabela.nome_da_coluna, dessa forma, o sistema sabe exatamente a qual tabela aquele determinado atributo pertence. Essa sintaxe é especialmente útil quando atributos com nomes idênticos estiverem presentes em mais de uma tabela.

Vamos analisar a seguinte consulta, no nosso banco de dados cineOnline, para fundamentar melhor o conceito de conexão cruzada.

Observe que não foi necessária a utilização da sintaxe nome_da_tabela.nome_da_coluna, pois estamos usando um sistema de nomenclatura de atributos que possui uma abreviação do nome da tabela antes de cada atributo, de forma a identificar a qual tabela pertence aquele atributo.

Nessa consulta às tabelas clientes e filmes, é solicitada a visualização do nome do cliente e o título do filme de todas as combinações possíveis entre esses dois campos, conforme é ilustrado na Figura 7. Além da resposta à consulta anterior, a Figura 7 contém a visualização de todos os dados contidos nas tabelas clientes e filmes do nosso banco de dados cineOnline, para que você compreenda melhor a resposta do sistema à consulta realizada.

Tela do <span class='italico'>My</span>SQL mostrando o conteúdo das tabelas <span class='strong'>clientes</span> e <span class='strong'>filmes</span> e o comando SELECT com conexão cruzada.

Versão 5.3 - Todos os Direitos reservados