sql >> Databasteknik >  >> RDS >> Mysql

MySQL Lägg till unik begränsning

Ibland kan du behöva göra kolumn unik i MySQL. Du kan göra detta genom att lägga till en UNIK kolumnbegränsning i MySQL. Det finns ett par sätt att lägga till unika begränsningar – med CREATE TABLE eller ALTER TABLE-satser. Så här lägger du till unika begränsningar i MySQL.

MySQL Lägg till unik begränsning

Så här lägger du till unika begränsningar i MySQL. Du kan lägga till en unik begränsning när du skapar en tabell eller efter att du har skapat en tabell. Vi kommer att titta på båda dessa tillvägagångssätt.

MySQL Lägg till unik begränsning när du skapar tabell

Här är SQL-satsen för att skapa UNIK begränsning när du skapar tabell

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

I frågan ovan måste du ange UNIKT nyckelord för definitionen av kolumn som du vill ska vara unik.

Här är ett exempel för att skapa unika begränsningar. I följande exempel har vi lagt till UNIK begränsning för order_id kolumn

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

Om du nu försöker infoga dubbletter av värden för order_id kolumnen får du ett felmeddelande.

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

Bonusläsning:MySQL Byt namn på kolumn

MySQL Lägg till unik begränsning till befintlig kolumn

Här är SQL-satsen för att skapa UNIK begränsning för en befintlig kolumn, med hjälp av ALTER TABLE-satsen.

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

I SQL-frågan ovan måste du ange ett constraint_name för UNIK begränsning efter ADD CONSTRAINT, och lista de kolumner som du vill ska vara unika i ( )

Här är ett exempel för att lägga till unik begränsning till befintlig kolumn

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

I ovanstående fråga har vi lagt till en unik begränsning för beloppskolumnen.

Bonus Läs:Hur man duplicerar tabell i MySQL

MySQL Lägg till Unique Constraint Multiple Columns

Här är SQL-satsen för att skapa UNIK begränsning för flera kolumner.

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 Läs:MySQL lagrad procedur med parametrar

Du kan också lägga till UNIQUE CONSTRAINT till flera kolumner med ALTER TABLE-satsen.

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

Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!

  1. ändra tabell byt namn på kolumn i Oracle-databasen

  2. ScaleGrid nu tillgängligt i Sydney AWS-regionen

  3. Fel:Det finns tabellutrymme för tabell xxx. Vänligen KASSA tabellutrymmet före IMPORT

  4. MySQL välj koordinater inom räckvidd