Nesse post iremos abordar diferentes recursos do SQL que permitem a manipulação avançada de dados em um banco de dados relacional.
Código
JOIN
INNER JOIN
SELECT tb_fornecedor.fornecedor, tb_cidade.cidade FROM tb_fornecedor INNER JOIN tb_cidade ON tb_fornecedor.id_cidade = tb_cidade.id;Esta consulta utiliza INNER JOIN para combinar linhas de tb_fornecedor com linhas de tb_cidade onde os IDs das cidades coincidem, retornando fornecedor e cidade correspondentes.
- Resultado

LEFT JOIN
SELECT tb_fornecedor.fornecedor, tb_cidade.cidade FROM tb_fornecedor LEFT JOIN tb_cidade ON tb_fornecedor.id_cidade = tb_cidade.id;Utiliza um LEFT JOIN para selecionar todos os registros da tabela à esquerda (tb_fornecedor) juntamente com os registros correspondentes da tabela à direita (tb_cidade). Se não houver correspondência, o resultado para a tabela à direita será NULL.
- Resultado

RIGHT JOIN
SELECT tb_produto.descricao, tb_categoria.categoria FROM tb_produto RIGHT JOIN tb_categoria ON tb_produto.id_categoria = tb_categoria.id;Executa um RIGHT JOIN, escolhendo todos os registros da tabela à direita (tb_categoria) e os registros correspondentes da tabela à esquerda (tb_produto). Se não houver correspondência, o resultado para a tabela à esquerda será NULL.
- Resultado

Union
SELECT id_cidade FROM tb_loja
UNION
SELECT id_cidade FROM tb_fornecedor
ORDER BY id_cidade;Combina os resultados de duas consultas sem duplicatas, graças ao operador UNION, e os ordena pelo id_cidade.
- Resultado

UNION ALL
SELECT id_cidade FROM tb_loja
UNION ALL
SELECT id_cidade FROM tb_fornecedor
ORDER BY id_cidade;Utiliza UNION ALL para combinar os resultados de duas consultas, incluindo duplicatas.
- Resultado

Simulando FULL OUTER JOIN com UNION
SELECT * FROM tb_fornecedor
LEFT JOIN tb_cidade ON tb_fornecedor.id = tb_cidade.id
UNION ALL
SELECT * FROM tb_fornecedor
RIGHT JOIN tb_cidade ON tb_fornecedor.id = tb_cidade.id
WHERE tb_cidade.id IS NULL;Combina LEFT JOIN e RIGHT JOIN com UNION ALL para simular um FULL OUTER JOIN, unindo dados de duas tabelas independentemente de correspondências diretas entre elas.
- Resultado

Criação de Views
CREATE VIEW viewCidade AS
SELECT tb_fornecedor.fornecedor AS Fornecedor, tb_cidade.cidade AS Cidade
FROM tb_fornecedor
INNER JOIN tb_cidade ON tb_fornecedor.id = tb_cidade.id;
SELECT Fornecedor, Cidade FROM viewCidade ORDER BY Fornecedor;Define uma View chamada viewCidade para simplificar e organizar a consulta de dados relacionados entre fornecedores e cidades, e em seguida realiza uma seleção a partir dessa view.
- Resultado

PROCEDURE
CREATE PROCEDURE verValor(varProduto SMALLINT)
BEGIN
SELECT CONCAT('O valor:', valor) FROM tb_produto WHERE id = varProduto;
END;
CALL verValor(2);Cria uma PROCEDURE chamada verValor que, quando chamada, retorna o valor de um produto baseado em seu ID.
- Resultado

TRIGGER
ALTER TABLE tb_produto ADD Preco_desconto DECIMAL(5,2);
CREATE TRIGGER tr_desconto BEFORE INSERT ON tb_produto
FOR EACH ROW
SET NEW.Preco_desconto = (NEW.valor * 0.20);
INSERT INTO tb_produto(descricao, valor, qtdmin, taxa) VALUES ('Monitor', '900.00', '30', '20');Adiciona uma coluna Preco_desconto à tabela tb_produto e define um TRIGGER chamado tr_desconto, que automaticamente calcula um desconto antes de cada inserção de novos registros na tabela.
- Resultado

Conclusão
A utilização de JOIN, UNION, Views, Procedures e Triggers no SQL oferece uma gama robusta de ferramentas, permitindo a realização de consultas complexas, a manipulação eficiente de dados e a automatização de tarefas.