logo

Chave exclusiva do MySQL

Uma chave exclusiva no MySQL é um único campo ou combinação de campos que garante que todos os valores armazenados na coluna sejam exclusivos. Isso significa que uma coluna não pode armazenar valores duplicados . Por exemplo, os endereços de e-mail e os números de matrícula dos alunos na tabela 'student_info' ou o número de contato dos funcionários na tabela 'Employee' devem ser exclusivos.

janelas.open javascript

MySQL nos permite usar mais de uma coluna com restrição UNIQUE em uma tabela. Ele pode aceitar um nulo valor, mas o MySQL permitiu apenas um valor nulo por coluna. Ele garante o integridade da coluna ou grupo de colunas para armazenar valores diferentes em uma tabela.

Necessidades de chave exclusiva

  • É útil para evitar que dois registros armazenem valores idênticos na coluna.
  • Armazena apenas valores distintos que mantêm a integridade e confiabilidade do banco de dados para acesso às informações de forma organizada.
  • Também funciona com uma chave estrangeira para preservar a singularidade de uma tabela.
  • Ele pode conter valor nulo na tabela.

Sintaxe

A sintaxe a seguir é usada para criar uma chave exclusiva em MySQL .

Se quisermos criar apenas uma coluna-chave exclusiva em uma tabela, use a sintaxe abaixo:

 CREATE TABLE table_name( col1 datatype, col2 datatype UNIQUE, ... ); 

Se quisermos criar mais de uma coluna de chave exclusiva em uma tabela, use a sintaxe abaixo:

 CREATE TABLE table_name( col1 col_definition, col2 col_definition, ... [CONSTRAINT constraint_name] UNIQUE(column_name(s)) ); 

Se não especificamos o nome para uma restrição exclusiva, o MySQL gera um nome para esta coluna automaticamente. Portanto, é recomendado usar o nome da restrição ao criar uma tabela.

Explicação do parâmetro

A tabela a seguir explica os parâmetros em detalhes.

Nome do parâmetro Descrições
Nome da tabela É o nome da tabela que vamos criar.
col1, col2 São os nomes das colunas que contêm na tabela.
nome_da_restrição É o nome da chave exclusiva.
nome_coluna(s) São os nomes das colunas que serão uma chave exclusiva.

Exemplo de chave exclusiva

O exemplo a seguir explica como uma chave exclusiva é usada no MySQL.

Esta instrução cria uma tabela ' Aluno2 ' com uma restrição UNIQUE:

 CREATE TABLE Student2 ( Stud_ID int NOT NULL UNIQUE, Name varchar(45), Email varchar(45), Age int, City varchar(25) ); 

A seguir, execute as consultas de inserção listadas abaixo para entender como funciona:

 mysql> INSERT INTO Student2 (Stud_ID, Name, Email, Age, City) VALUES (1, 'Peter', '[email protected]', 22, 'Texas'), (2, 'Suzi', '[email protected]', 24, 'California'), (3, 'Joseph', '[email protected]', 23, 'Alaska'); mysql> INSERT INTO Student2 (Stud_ID, Name, Email, Age, City) VALUES (1, 'Stephen', '[email protected]', 22, 'Texas'); 

Saída

Na saída abaixo, podemos ver que o primeiro INSERIR consulta é executado corretamente, mas a segunda instrução falha e gera um erro que diz: Entrada duplicada '1' para a chave Stud_ID.

Chave exclusiva do MySQL

Se você deseja definir a chave exclusiva em múltiplas colunas , use a consulta abaixo:

 CREATE TABLE Student3 ( Stud_ID int, Roll_No int, Name varchar(45) NOT NULL, Email varchar(45), Age int, City varchar(25), CONSTRAINT uc_rollno_email Unique(Roll_No, Email) ); 

Na saída, podemos ver que o valor da chave exclusiva contém duas colunas que são Núm. da lista e E-mail .

Chave exclusiva do MySQL

Para verificar isso, execute a seguinte instrução:

 mysql> SHOW INDEX FROM Student3; 

Aqui, podemos ver que a restrição exclusiva foi adicionada com sucesso à tabela:

Chave exclusiva do MySQL

Chave exclusiva DROP

A instrução ALTER TABLE também nos permite eliminar a chave exclusiva da tabela. A seguinte sintaxe é usada para descartar a chave exclusiva:

 ALTER TABLE table_name DROP INDEX constraint_name; 

Na sintaxe acima, o Nome da tabela é o nome da tabela que queremos modificar, e nome_da_restrição é o nome da chave exclusiva que iremos remover.

Exemplo

Esta declaração removerá o uc_rollno_email restrição da tabela permanentemente.

 mysql> ALTER TABLE Student3 DROP INDEX uc_rollno_email; 

Podemos executar a instrução SHOW INDEX para fazer isso.

Chave exclusiva usando a instrução ALTER TABLE

Esta instrução nos permite fazer a modificação na tabela existente. Às vezes queremos adicionar uma chave exclusiva à coluna de uma tabela existente; então, esta instrução é usada para adicionar a chave exclusiva para aquela coluna.

Sintaxe

A seguir está a sintaxe da instrução ALTER TABLE para adicionar uma chave exclusiva:

 ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(column_list); 

Exemplo

Esta instrução cria uma tabela ' Alunos3 'que não possuem nenhuma coluna chave exclusiva na definição da tabela.

 CREATE TABLE Student3 ( Stud_ID int, Roll_No int, Name varchar(45) NOT NULL, Email varchar(45), Age int, City varchar(25) ); 

Depois de criar uma tabela, se quisermos adicionar uma chave exclusiva a esta tabela, precisamos executar a instrução ALTER TABLE conforme abaixo:

 mysql> ALTER TABLE Student3 ADD CONSTRAINT uc_rollno_email UNIQUE(Roll_No, Email); 

Podemos ver a saída onde ambas as instruções foram executadas com sucesso.

Chave exclusiva do MySQL

Para verificar isso, execute a seguinte instrução:

 mysql> SHOW INDEX FROM Student3; 

Aqui, podemos ver que a restrição exclusiva foi adicionada com sucesso à tabela:

Chave exclusiva do MySQL