Junior
O que sabes sobre amostras e junções em bancos de dados?
sobes.tech IA
Resposta da IA
As amostras (consultas SELECT) extraem dados de uma ou várias tabelas. As junções (JOIN) combinam linhas de duas ou mais tabelas com base numa coluna relacionada entre elas.
Tipos de junções:
- INNER JOIN: Retorna linhas que têm correspondências em ambas as tabelas.
- LEFT JOIN (LEFT OUTER JOIN): Retorna todas as linhas da tabela da esquerda e as linhas correspondentes da direita. Se não houver correspondência,
NULLé retornado para a tabela da direita. - RIGHT JOIN (RIGHT OUTER JOIN): Retorna todas as linhas da tabela da direita e as linhas correspondentes da esquerda. Se não houver correspondência,
NULLé retornado para a tabela da esquerda. - FULL JOIN (FULL OUTER JOIN): Retorna todas as linhas quando há correspondências em pelo menos uma das tabelas. Se não houver correspondência,
NULLé retornado para os campos ausentes. (Não suportado por todos os SGBD, por exemplo, MySQL usa UNION para emular). - CROSS JOIN: Retorna o produto cartesiano de linhas de ambas as tabelas (cada linha da primeira tabela combina-se com cada linha da segunda).
Exemplos de sintaxe:
-- INNER JOIN
SELECT *
FROM table1
INNER JOIN table2 ON table1.id = table2.foreign_id;
-- LEFT JOIN
SELECT customer.name, order.order_id
FROM customer
LEFT JOIN order ON customer.id = order.customer_id;
Palavras-chave para consultas:
SELECT: Define as colunas a extrair.FROM: Indica a(s) tabela(s).WHERE: Filtra linhas com base numa condição dada.GROUP BY: Agrupa linhas com valores iguais numa linha resumo.HAVING: Filtra os grupos apósGROUP BY.ORDER BY: Ordena o resultado.LIMIT / OFFSET: Limita o número de linhas devolvidas.
A otimização de consultas e junções é importante para o desempenho da base de dados. São utilizados índices, definição correta dos tipos de dados, evitar SELECT * (quando possível), otimização das condições em WHERE.
Em PHP, para trabalhar com consultas e junções, utilizam-se extensões como PDO ou MySQLi, que fornecem API para executar consultas SQL.