![]() |
|
||||
Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
Você está aqui: MySQL ::: Dicas & Truques ::: Joins (Junções) |
Como usar joins no MySQLQuantidade de visualizações: 11368 vezes |
|
As junções (joins) são ferramentas presentes na maioria dos bancos de dados que suportam SQL e são usadas quando precisamos recuperar dados de uma ou mais tabelas com base em suas relações lógicas. Desta forma, é possível combinar os registros de tais tabelas de forma a construir um "super-registro", que nos permitirá exibir relatórios mais elaborados. Para o bom entendimento de junções, vamos considerar duas tabelas: filmes e generos. Aqui nós temos uma cardinalidade de 1 x N. Um filme possui um gênero, enquanto um gênero pode abranger vários filmes. Vamos começar criando estas duas tabelas (comece com a tabela generos, já que esta não depende da tabela de filmes): Comando DLL CREATE TABLE para a tabela generos: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- CREATE TABLE generos( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, PRIMARY KEY(id) ) ENGINE = InnoDB; Veja agora o comando SQL para a criação da tabela de filmes: Comando DLL CREATE TABLE para a tabela filmes: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
CREATE TABLE filmes(
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
titulo VARCHAR(45) NOT NULL,
genero INTEGER UNSIGNED NOT NULL,
PRIMARY KEY(id),
CONSTRAINT fk_filmes_generos FOREIGN KEY fk_filmes_generos(id)
REFERENCES generos(id) ON DELETE RESTRICT ON UPDATE RESTRICT
)
ENGINE = InnoDB;
Veja que a tabela filmes contém uma chave estrangeira referenciando a chave primária da tabela generos. Isso nos permite "atrelar" um filme ao seu gênero. Vá em frente e insira alguns dados em ambas as tabelas. Primeiro cadastre alguns gêneros e em seguida alguns filmes. Vejamos agora a importância dos joins. Observe o resultado de um comando DML SELECT na tabela filmes: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT * FROM filmes; id titulo genero 1 EFEITO BORBOLETA 6 2 O PENTELHO 1 3 VIAGEM MALDITA 3 Nesta query o gênero é retornado como um valor inteiro, ou seja, o valor do campo id da tabela generos. Em muitos casos este não é o comportamento que queremos. Em vez do id do gênero nós gostaríamos de exibir seu nome. Isso pode ser conseguido da seguinte forma: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT filmes.id, filmes.titulo, generos.nome FROM filmes, generos WHERE filmes.genero = generos.id; id titulo genero 1 EFEITO BORBOLETA FICÇÃO 2 O PENTELHO COMÉDIA 3 VIAGEM MALDITA TERROR Nesta query eu usei o nome completo da tabela antes do nome dos campos a serem retornados. Na prática, é comum darmos apelidos às tabelas. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT f.id, f.titulo, g.nome FROM filmes f, generos g WHERE f.genero = g.id; Neste exemplo, não usamos as palavras-chaves INNER JOIN, LEFT JOIN, RIGHT JOIN, etc. A junção está "escondida" na cláusula SELECT. Esta técnica é conhecida como "junção implícita" ou "implicit join". Veja como o mesmo resultado pode ser obtido usando a junção INNER JOIN: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- SELECT f.id, f.titulo, g.nome FROM filmes f INNER JOIN generos g ON f.genero = g.id; Veja minhas outras dicas sobre junções para aprender mais sobre INNER JOIN, LEFT JOIN, RIGHT JOIN, OUTER JOIN, FULL JOIN, etc. |
|
|
Veja mais Dicas e truques de MySQL |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |





