sql >> Database >  >> RDS >> Mysql

MySQL Unieke beperking toevoegen

Soms moet u de kolom uniek maken in MySQL. U kunt dit doen door een UNIEKE kolombeperking toe te voegen in MySQL. Er zijn een aantal manieren om een ​​unieke beperking toe te voegen - met behulp van CREATE TABLE- of ALTER TABLE-instructies. Hier leest u hoe u een unieke beperking in MySQL kunt toevoegen.

MySQL Unieke beperking toevoegen

Hier leest u hoe u een unieke beperking in MySQL kunt toevoegen. U kunt een unieke beperking toevoegen wanneer u een tabel maakt of nadat u een tabel hebt gemaakt. We zullen beide benaderingen bekijken.

MySQL voegt unieke beperking toe tijdens het maken van een tabel

Hier is de SQL-instructie om UNIEKE beperking te creëren wanneer u een tabel maakt

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

In de bovenstaande zoekopdracht moet u het trefwoord UNIQUE opgeven voor de definitie van de kolom die u uniek wilt maken.

Hier is een voorbeeld om een ​​unieke beperking te creëren. In het volgende voorbeeld hebben we UNIQUE-beperking toegevoegd voor order_id kolom

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

Als u nu dubbele waarden probeert in te voegen voor order_id kolom krijgt u een foutmelding.

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 Lezen:MySQL Kolom hernoemen

MySQL Voeg unieke beperking toe aan bestaande kolom

Hier is de SQL-instructie om UNIQUE-beperking voor een bestaande kolom te maken, met behulp van de ALTER TABLE-instructie.

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

In de bovenstaande SQL-query moet u een constraint_name opgeven voor UNIQUE-beperking na ADD CONSTRAINT en vermeld de kolommen die u uniek wilt maken in ( )

Hier is een voorbeeld om Unieke beperking toe te voegen aan bestaande kolom

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

In de bovenstaande zoekopdracht hebben we een unieke beperking toegevoegd aan de bedragkolom.

Bonus Lezen:Tabel dupliceren in MySQL

MySQL Unieke beperking toevoegen Meerdere kolommen

Hier is de SQL-instructie om een ​​UNIEKE beperking voor meerdere kolommen te maken.

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 lezen:MySQL opgeslagen procedure met parameters

U kunt UNIQUE CONSTRAINT ook aan meerdere kolommen toevoegen met de instructie ALTER TABLE.

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

Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!

  1. MariaDB JSON_QUERY() uitgelegd

  2. Wat is in een Oracle-database het verschil tussen ROWNUM en ROW_NUMBER?

  3. MySQL, update meerdere tabellen met één query

  4. Oracle Trigger ORA-04098:trigger is ongeldig en hervalidatie mislukt