A restrição UNIQUE em SQL garante que os valores em uma coluna ou conjunto de colunas sejam distintos, evitando duplicatas. Ao contrário de uma CHAVE PRIMÁRIA, ela permite vários valores NULL, uma vez que cada NULL é tratado como único, enquanto uma chave primária exige que todos os valores sejam únicos e não NULL.
Características:
- Garante que as colunas tenham valores exclusivos.
- Vários NULLs são permitidos.
- Pode ser aplicado a uma ou mais colunas.
- Não cria automaticamente um índice (embora muitos bancos de dados o façam para desempenho).
- Pode ser adicionado ou removido usando ALTER TABLE.
Sintaxe:
CREATE TABLE table_name (
column1 datatype UNIQUE
column2 datatype
...
);
Na sintaxe acima:
- CREATE TABLE nome_tabela: cria uma nova tabela.
- tipo de dados coluna1 ÚNICO: define uma coluna com um tipo de dados e impõe valores exclusivos.
- tipo de dados coluna2: define outra coluna sem a restrição exclusiva.
- Repita para colunas adicionais conforme necessário.
Exemplo de uso da restrição SQL UNIQUE
Exemplo 1: Criando uma tabela com restrições UNIQUE
Vamos criar uma tabela Clientes onde a coluna Email deve ser única.
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY
Name VARCHAR(100)
Email VARCHAR(100) UNIQUE
Country VARCHAR(50)
);
Neste caso, cada cliente deve ter um endereço de e-mail exclusivo. Se você tentar inserir um e-mail duplicado SQL gerará um erro.
INSERT INTO Customers (CustomerID Name Email Country)
VALUES (1 'John Doe' '[email protected]' 'USA');
INSERT INTO Customers (CustomerID Name Email Country)
VALUES (2 'Jane Smith' '[email protected]' 'Canada');
-- This will fail because '[email protected]' already exists
INSERT INTO Customers (CustomerID Name Email Country)
VALUES (3 'Alice Johnson' '[email protected]' 'UK');
A terceira inserção falhará porque o Email [email protected] já existe na tabela Clientes.
Exemplo 2: Usando UNIQUE com múltiplas colunas
Também podemos aplicar a restrição UNIQUE a múltiplas colunas para garantir que a combinação dessas colunas seja única.
CREATE TABLE Orders (
OrderID INT PRIMARY KEY
CustomerID INT
ProductID INT
OrderDate DATE
UNIQUE (CustomerID ProductID)
);
Neste exemplo, a combinação de CustomerID e ProductID deve ser exclusiva, o que significa que um cliente não pode solicitar o mesmo produto mais de uma vez.
Exemplo 3: verificação de valores exclusivos usando subconsultas
SQL permite verificar a exclusividade em subconsultas. Você pode usar a palavra-chave UNIQUE em uma subconsulta para garantir que os resultados não contenham valores duplicados.
SELECT CustomerID
FROM Orders
WHERE UNIQUE (
SELECT OrderID
FROM OrderDetails
WHERE Orders.CustomerID = OrderDetails.CustomerID
);
Neste exemplo, verificamos se há algum valor de OrderID duplicado para cada cliente na tabela Pedidos. Se a subconsulta retornar valores exclusivos, o CustomerID será selecionado.
Pontos importantes
- Avalia como verdadeiro em uma subconsulta vazia.
- Retorna verdadeiro apenas se houver tuplas únicas presentes como saída da subconsulta (duas tuplas são únicas se o valor de qualquer atributo das duas tuplas for diferente).
- Retorna verdadeiro se a subconsulta tiver duas linhas duplicadas com pelo menos um atributo NULL.
O que a restrição UNIQUE garante no SQL?
- UM
A coluna armazena apenas valores que permanecem não duplicados
- B
A coluna permite valores sem verificar duplicatas
- C
A coluna aceita vários valores idênticos em linhas
- D
A coluna armazena apenas valores que são sempre diferentes de NULL
UNIQUE garante que todos os valores na coluna (ou grupo de colunas) sejam distintos, evitando entradas duplicadas.
Como UNIQUE difere de uma CHAVE PRIMÁRIA?
longo para string java
- UM
UNIQUE permite muitos valores NULL; chave primária não
- B
UNIQUE remove NULLs; chave primária sempre armazena NULL
- C
Indexação de forças UNIQUE; chave primária impede índices
- D
UNIQUE impõe classificação; chave primária evita ordenação
UNIQUE permite vários valores NULL porque cada NULL é considerado diferente, ao contrário de uma PRIMARY KEY que proíbe totalmente NULLs.
O que acontece ao inserir um valor duplicado em uma coluna UNIQUE?
- UM
SQL aceita linha duplicada e armazena ambos os valores
- B
SQL substitui o valor anterior pelo inserido mais recentemente
- C
SQL rejeita duplicata e gera erro de integridade
- D
SQL converte valor duplicado em NULL automaticamente
Se um valor violar a restrição UNIQUE, o SQL bloqueará a inserção ou atualização e reportará um erro.
Qual afirmação sobre UNIQUE e NULL está correta?
- UM
UNIQUE trata todos os valores NULL como duplicatas iguais
- B
UNIQUE trata todos os valores NULL como linhas únicas separadas
- C
UNIQUE converte todas as entradas NULL em strings vazias
- D
UNIQUE permite NULL somente quando não existem dados na coluna
Vários NULLs são permitidos porque cada NULL é avaliado como um valor distinto e incomparável em UNIQUE.
Por que muitos bancos de dados criam um índice para UNIQUE?
- UM
Para organizar os valores em ordem alfabética antes de inserir
- B
Para formatar dados numéricos antes de armazená-los na tabela
- C
Para converter NULLs em valores sequenciais exclusivos
- D
Para melhorar a verificação de duplicatas durante a validação
Um índice ajuda o mecanismo a detectar rapidamente valores duplicados, tornando a aplicação de restrições UNIQUE mais eficiente.
O que a palavra-chave UNIQUE verifica em uma subconsulta?
- UM
Garante que a subconsulta retorne exatamente uma coluna numérica
- B
Garante que a saída da subconsulta contenha apenas linhas distintas
- C
Garante que a subconsulta compare valores sem usar junções
- D
Garante que a subconsulta ignore linhas que contenham qualquer NULL
UNIQUE valida que a subconsulta não produz tuplas duplicadas – cada linha retornada deve diferir em pelo menos um atributo.
Questionário concluído com sucesso Sua pontuação: 2/6Precisão : 0%Faça login para ver a explicação 1/6 1/6 < Previous Próximo >