Learning Hub Logo

Sobre Diego Pinho

Professor especialista em tecnologia com mais de 10 anos de experiência. Autor de livros técnicos e criador de cursos que já impactaram milhares de estudantes.

Visite meu site principal →

Serviços

  • Área do Aluno
  • Solicite um orçamento
  • Trabalhe Conosco

Redes Sociais

  • Youtube
  • TikTok
  • Instagram
  • LinkedIn

Links

  • Site Institucional
  • Nosso Blog
  • Cursos Online
  • Livros Publicados

Professor Diego Pinho

Educação, Tecnologia e IA © 2026

SQL›SQL UNIQUE

SQL UNIQUE

Como garantir que os valores de uma coluna não se repitam com a constraint UNIQUE

⚡1 min de leitura

SQL UNIQUE

A constraint UNIQUE garante que todos os valores de uma coluna sejam únicos nenhum registro pode ter o mesmo valor que outro na mesma coluna.

Definindo UNIQUE

1CREATE TABLE clientes ( 2 id SERIAL PRIMARY KEY, 3 nome VARCHAR(100) NOT NULL, 4 email VARCHAR(150) UNIQUE

O que acontece ao violar

1INSERT INTO clientes (nome, email) VALUES ('Ana Souza', 'ana@email.com'); 2 3-- ERRO: email já existe 4INSERT
ERROR: duplicate key value violates unique constraint "clientes_email_key"

UNIQUE composto

Você pode exigir que a combinação de colunas seja única, mesmo que cada coluna individualmente se repita:

1CREATE TABLE matriculas ( 2 aluno_id INTEGER NOT NULL, 3 curso_id INTEGER NOT NULL, 4 -- Um aluno pode se matricular em vários cursos,

Nomeando a constraint

1CREATE TABLE clientes ( 2 id SERIAL PRIMARY KEY, 3 email VARCHAR(150) NOT NULL, 4

Adicionando UNIQUE em tabela existente

1ALTER TABLE clientes ADD CONSTRAINT uq_clientes_cpf UNIQUE (cpf);

Removendo UNIQUE

1ALTER TABLE clientes DROP CONSTRAINT uq_clientes_cpf;

UNIQUE vs PRIMARY KEY

CaracterísticaUNIQUEPRIMARY KEY
Aceita NULL?Sim (um por vez)Não
Quantas por tabela?VáriasApenas uma
FinalidadeUnicidade geralIdentificador único

Use UNIQUE para campos que precisam ser únicos mas não são a chave principal da tabela — como e-mail, CPF, código de produto, número de matrícula.

Próximo →Introdução ao SQL
NOT
NULL
,
5 cpf VARCHAR(14) UNIQUE
6);
INTO
clientes
(
nome
,
email
)
VALUES
(
'Ana Lima'
,
'ana@email.com'
)
;
5
-- mas não pode ter duas matrículas no mesmo curso
6 UNIQUE (aluno_id, curso_id)
7);
CONSTRAINT
uq_clientes_email
UNIQUE
(
email
)
5);