🔐 UNIQUE no MySQL

Introdução

A constraint UNIQUE é utilizada para garantir que os valores armazenados em uma coluna não sejam duplicados.

Ela permite que uma tabela possua informações exclusivas além da chave primária.

📌 UNIQUE garante que um valor apareça apenas uma vez dentro de uma coluna.

Objetivo da Constraint UNIQUE

Exemplos de Dados Únicos

Informação Motivo
CPF Cada pessoa possui um único CPF
E-mail Usuários possuem e-mails diferentes
Login Identificador exclusivo do usuário
Código Produto Identificação individual

Sintaxe Básica

CREATE TABLE usuarios (
  id INT PRIMARY KEY,
  email VARCHAR(100) UNIQUE
);

Exemplo Prático

Criando uma tabela de usuários:

CREATE TABLE usuarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  nome VARCHAR(100),
  email VARCHAR(150) UNIQUE
);

O campo email não poderá possuir valores repetidos.

Tentativa de Inserção Duplicada

INSERT INTO usuarios
(nome, email)
VALUES
('Maria','maria@email.com');


INSERT INTO usuarios
(nome, email)
VALUES
('João','maria@email.com');
⚠️ O segundo cadastro será rejeitado porque o e-mail já existe.

UNIQUE em Mais de uma Coluna

É possível criar uma combinação única utilizando várias colunas.

CREATE TABLE matriculas (
  aluno_id INT,
  curso_id INT,

  UNIQUE(aluno_id, curso_id)
);

A mesma combinação de aluno e curso não poderá ser cadastrada duas vezes.

Adicionar UNIQUE em uma Tabela Existente

Podemos adicionar uma constraint UNIQUE utilizando ALTER TABLE.

ALTER TABLE clientes
ADD CONSTRAINT email_unico
UNIQUE(email);

Remover UNIQUE

ALTER TABLE clientes
DROP INDEX email_unico;

PRIMARY KEY x UNIQUE

PRIMARY KEY UNIQUE
Identifica o registro Garante exclusividade
Apenas uma por tabela Pode existir várias
Não aceita NULL Pode aceitar NULL
Obrigatória Opcional

Aplicações no Mundo Real

Sistema Campo UNIQUE
Rede Social Nome de usuário
Loja Virtual Código do produto
Banco Número da conta
Empresa CNPJ

Boas Práticas

Resumo da Aula

🎓 Aula concluída! Agora você sabe utilizar a constraint UNIQUE para controlar valores exclusivos e evitar duplicidade de informações no MySQL.