Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL Adicionar Restrição Exclusiva


Às vezes, você pode precisar tornar a coluna exclusiva no MySQL. Você pode fazer isso adicionando uma restrição de coluna UNIQUE no MySQL. Existem algumas maneiras de adicionar restrições exclusivas – usando instruções CREATE TABLE ou ALTER TABLE. Veja como adicionar restrição exclusiva no MySQL.


Adicionar restrição exclusiva do MySQL


Veja como adicionar restrição exclusiva no MySQL. Você pode adicionar a restrição Unique ao criar a tabela ou depois de criar a tabela. Veremos essas duas abordagens.


MySQL adiciona restrição exclusiva ao criar tabela


Aqui está a instrução SQL para criar a restrição UNIQUE ao criar a tabela
CREATE TABLE table_name(
    ...,
    column_name data_type UNIQUE,
    ...
)

Na consulta acima, você precisa especificar a palavra-chave UNIQUE para a definição da coluna que deseja que seja exclusiva.

Aqui está um exemplo para criar uma restrição exclusiva. No exemplo a seguir, adicionamos a restrição UNIQUE para order_id coluna
mysql> create table recent_orders
     (
     order_id int UNIQUE,
     amount int
     );

mysql> describe recent_orders;
+----------+---------+------+-----+---------+-------+
| Field    | Type    | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| order_id | int(11) | YES  | UNI | NULL    |       |
| amount   | int(11) | YES  |     | NULL    |       |
+----------+---------+------+-----+---------+-------+

Agora, se você tentar inserir valores duplicados para order_id coluna, você receberá um erro.
mysql> insert into recent_orders(order_id, amount) values(1, 100),(1,250);
ERROR 1062 (23000): Duplicate entry '1' for key 'order_id'

mysql> insert into recent_orders(order_id, amount) values(1, 100),(2,250);

mysql> select * from recent_orders;
+----------+--------+
| order_id | amount |
+----------+--------+
|        1 |    100 |
|        2 |    250 |
+----------+--------+

Bônus de leitura:MySQL Renomear coluna


MySQL adiciona restrição exclusiva à coluna existente


Aqui está a instrução SQL para criar uma restrição UNIQUE para uma coluna existente, usando a instrução ALTER TABLE.
ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... );

Na consulta SQL acima, você precisa especificar um constraint_name para restrição UNIQUE após ADD CONSTRAINT e liste as colunas nas quais você deseja que sejam exclusivas ( )

Aqui está um exemplo para adicionar restrição exclusiva à coluna existente
mysql> alter table recent_orders add constraint unique_amount UNIQUE (amount);

mysql> describe recent_orders;
+----------+---------+------+-----+---------+-------+
| Field    | Type    | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| order_id | int(11) | YES  | UNI | NULL    |       |
| amount   | int(11) | YES  | UNI | NULL    |       |
+----------+---------+------+-----+---------+-------+

Na consulta acima, adicionamos uma restrição exclusiva à coluna de valor.

Bônus de leitura:Como duplicar a tabela no MySQL


MySQL adiciona várias colunas de restrição exclusiva


Aqui está a instrução SQL para criar uma restrição UNIQUE para várias colunas.
mysql> create table old_orders
     (
     order_id int,
     amount int,
     CONSTRAINT u_orders UNIQUE (order_id,amount)
     );


mysql> describe old_orders;
+----------+---------+------+-----+---------+-------+
| Field    | Type    | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+-------+
| order_id | int(11) | YES  | MUL | NULL    |       |
| amount   | int(11) | YES  |     | NULL    |       |
+----------+---------+------+-----+---------+-------+


mysql> insert into old_orders(order_id, amount) values(1, 100),(1,100);
ERROR 1062 (23000): Duplicate entry '1-100' for key 'u_orders'


Bônus de leitura:procedimento armazenado do MySQL com parâmetros



Você também pode adicionar UNIQUE CONSTRAINT a várias colunas usando a instrução ALTER TABLE.
alter table old_orders add constraint unique_orders UNIQUE (order_id,amount);



A Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!