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.
| Informação | Motivo |
|---|---|
| CPF | Cada pessoa possui um único CPF |
| Usuários possuem e-mails diferentes | |
| Login | Identificador exclusivo do usuário |
| Código Produto | Identificação individual |
CREATE TABLE usuarios (
id INT PRIMARY KEY,
email VARCHAR(100) UNIQUE
);
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.
INSERT INTO usuarios
(nome, email)
VALUES
('Maria','maria@email.com');
INSERT INTO usuarios
(nome, email)
VALUES
('João','maria@email.com');
É 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.
Podemos adicionar uma constraint UNIQUE utilizando ALTER TABLE.
ALTER TABLE clientes
ADD CONSTRAINT email_unico
UNIQUE(email);
ALTER TABLE clientes
DROP INDEX email_unico;
| 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 |
| Sistema | Campo UNIQUE |
|---|---|
| Rede Social | Nome de usuário |
| Loja Virtual | Código do produto |
| Banco | Número da conta |
| Empresa | CNPJ |