Avançar para o conteúdo

Como Criar e Gerir Chaves Estrangeiras no MySQL

Se estás a dar os primeiros passos no MySQL e queres aprender a criar relações entre tabelas, estás no sítio certo! Neste artigo, vais descobrir como criar chaves estrangeiras (Foreign Keys), como utilizá-las em consultas e até como modificar uma tabela para adicionar novas colunas. Tudo explicado de forma simples! 🚀


📌 O Que é uma Chave Estrangeira?

Uma chave estrangeira (Foreign Key – FK) é um vínculo entre duas tabelas no MySQL. Ela serve para garantir que os dados de uma tabela estão relacionados com outra, evitando erros e melhorando a integridade dos dados.

Por exemplo, imagina que tens uma tabela de clientes e outra de pedidos. Cada pedido deve estar associado a um cliente, certo? É aqui que entra a chave estrangeira!


🔹 Criar uma Chave Estrangeira no MySQL

Passo 1️⃣ Criar a Tabela Principal

Primeiro, precisas de uma tabela com um identificador único (Primary Key – PK). Vamos criar a tabela clientes:

CREATE TABLE clientes (
    id INT PRIMARY KEY AUTO_INCREMENT,
    nome VARCHAR(100) NOT NULL
);

Passo 2️⃣ Criar a Tabela Relacionada

Agora, criamos a tabela pedidos, onde cada pedido estará ligado a um cliente através da chave estrangeira cliente_id.

CREATE TABLE pedidos (
    id INT PRIMARY KEY AUTO_INCREMENT,
    cliente_id INT,
    descricao VARCHAR(255) NOT NULL,
    FOREIGN KEY (cliente_id) REFERENCES clientes(id) ON DELETE CASCADE ON UPDATE CASCADE
);

🧐 O Que Significa Isto?

  • FOREIGN KEY (cliente_id) REFERENCES clientes(id)
    • Define cliente_id como chave estrangeira que aponta para id da tabela clientes.
  • ON DELETE CASCADE
    • Se um cliente for apagado, os pedidos associados também serão eliminados automaticamente.
  • ON UPDATE CASCADE
    • Se o id do cliente mudar, a referência nos pedidos será atualizada.

🔎 Como Fazer um SELECT com JOIN Entre as Tabelas?

Para consultar os dados das duas tabelas em conjunto, usa um JOIN. Aqui está um exemplo:

SELECT pedidos.id AS pedido_id, pedidos.descricao, clientes.nome
FROM pedidos
INNER JOIN clientes ON pedidos.cliente_id = clientes.id;

Este comando retorna todos os pedidos com os respetivos nomes dos clientes.

Se quiseres mostrar todos os clientes, mesmo os que não fizeram pedidos, usa LEFT JOIN:

SELECT clientes.nome, pedidos.descricao
FROM clientes
LEFT JOIN pedidos ON pedidos.cliente_id = clientes.id;

Agora, se quiseres filtrar pedidos de um cliente específico, podes fazer assim:

SELECT pedidos.id, pedidos.descricao, clientes.nome
FROM pedidos
INNER JOIN clientes ON pedidos.cliente_id = clientes.id
WHERE clientes.nome = 'João Silva';

✏️ Como Adicionar Colunas a uma Tabela Existente?

Se precisas de modificar uma tabela e adicionar novas colunas, usa ALTER TABLE.

👉 Para adicionar uma única coluna:

ALTER TABLE clientes
ADD COLUMN email VARCHAR(150);

👉 Para adicionar várias colunas de uma vez:

ALTER TABLE pedidos
ADD COLUMN data_pedido DATE,
ADD COLUMN valor DECIMAL(10,2);

👉 Para adicionar uma coluna numa posição específica:

ALTER TABLE clientes
ADD COLUMN telefone VARCHAR(20) AFTER nome;

Se a nova coluna não pode ter valores nulos, define um valor padrão:

ALTER TABLE pedidos
ADD COLUMN status VARCHAR(20) NOT NULL DEFAULT 'pendente';

🚀 Conclusão

Agora já sabes como criar chaves estrangeiras no MySQL, fazer consultas combinadas com JOIN e até modificar tabelas existentes! Estas técnicas são essenciais para manter a organização e integridade dos teus dados.

Tens alguma dúvida ou queres aprender mais? Deixa um comentário e partilha este artigo com quem pode precisar! 😉

Comentários Facebook