sql >> Base de Datos >  >> RDS >> Mysql

MySQL Agregar restricción única

A veces, es posible que deba hacer que la columna sea única en MySQL. Puede hacer esto agregando una restricción de columna ÚNICA en MySQL. Hay un par de formas de agregar restricciones únicas:usando las declaraciones CREATE TABLE o ALTER TABLE. Aquí se explica cómo agregar una restricción única en MySQL.

MySQL Agregar Restricción Única

Aquí se explica cómo agregar una restricción única en MySQL. Puede agregar restricciones únicas cuando crea la tabla o después de haberla creado. Veremos ambos enfoques.

MySQL agrega una restricción única al crear la tabla

Aquí está la instrucción SQL para crear una restricción ÚNICA cuando crea una tabla

CREATE TABLE table_name(
    ...,
    column_name data_type UNIQUE,
    ...
)

En la consulta anterior, debe especificar la palabra clave ÚNICA para la definición de la columna que desea que sea única.

Aquí hay un ejemplo para crear una restricción única. En el siguiente ejemplo, hemos agregado una restricción ÚNICA para order_id columna

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    |       |
+----------+---------+------+-----+---------+-------+

Ahora, si intenta insertar valores duplicados para order_id columna obtendrá un error.

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 |
+----------+--------+

Lectura adicional:Columna de cambio de nombre de MySQL

MySQL agrega una restricción única a la columna existente

Aquí está la instrucción SQL para crear una restricción ÚNICA para una columna existente, utilizando la instrucción ALTER TABLE.

ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column1, column2, ... );

En la consulta SQL anterior, debe especificar un constraint_name para la restricción ÚNICA después de AGREGAR RESTRICCIÓN, y enumere las columnas que desea que sean únicas en ( )

Aquí hay un ejemplo para agregar una restricción única a la columna 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    |       |
+----------+---------+------+-----+---------+-------+

En la consulta anterior, hemos agregado una restricción única a la columna de cantidad.

Lectura adicional:Cómo duplicar una tabla en MySQL

MySQL Añadir Restricciones Únicas Múltiples Columnas

Aquí está la instrucción SQL para crear una restricción ÚNICA para varias columnas.

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'

Lectura adicional:Procedimiento almacenado de MySQL con parámetros

También puede agregar RESTRICCIÓN ÚNICA a múltiples columnas usando la instrucción ALTER TABLE.

alter table old_orders add constraint unique_orders UNIQUE (order_id,amount);

Ubiq facilita la visualización de datos en minutos y la supervisión en paneles en tiempo real. ¡Pruébalo hoy!