Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL aggiunge un vincolo unico

A volte potrebbe essere necessario rendere la colonna univoca in MySQL. Puoi farlo aggiungendo un vincolo di colonna UNIQUE in MySQL. Esistono un paio di modi per aggiungere un vincolo univoco:utilizzando le istruzioni CREATE TABLE o ALTER TABLE. Ecco come aggiungere un vincolo univoco in MySQL.

MySQL aggiunge un vincolo univoco

Ecco come aggiungere un vincolo univoco in MySQL. Puoi aggiungere il vincolo Unique quando crei una tabella o dopo aver creato la tabella. Esamineremo entrambi questi approcci.

MySQL aggiunge un vincolo univoco durante la creazione della tabella

Ecco l'istruzione SQL per creare un vincolo UNIQUE quando crei una tabella

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

Nella query precedente, devi specificare la parola chiave UNIQUE per la definizione della colonna che vuoi che sia univoca.

Ecco un esempio per creare un vincolo unico. Nell'esempio seguente, abbiamo aggiunto il vincolo UNIQUE per order_id colonna

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

Ora, se provi a inserire valori duplicati per order_id colonna riceverai un errore.

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

Bonus Lettura:Colonna Rinomina MySQL

MySQL aggiunge un vincolo univoco alla colonna esistente

Ecco l'istruzione SQL per creare un vincolo UNIQUE per una colonna esistente, utilizzando l'istruzione ALTER TABLE.

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

Nella query SQL precedente, devi specificare un nome_vincolo per il vincolo UNIQUE dopo ADD CONSTRAINT ed elenca le colonne che vuoi siano univoche in ( )

Ecco un esempio per aggiungere il vincolo Unique alla colonna esistente

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

Nella query precedente, abbiamo aggiunto un vincolo univoco alla colonna dell'importo.

Bonus Leggi:Come duplicare la tabella in MySQL

MySQL aggiunge più colonne di vincolo univoco

Ecco l'istruzione SQL per creare un vincolo UNICO su più colonne.

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'

Bonus Lettura:procedura memorizzata MySQL con parametri

Puoi anche aggiungere UNIQUE CONSTRAINT a più colonne usando l'istruzione ALTER TABLE.

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

Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!