Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL fügt Unique-Constraint hinzu

Manchmal müssen Sie möglicherweise Spalten in MySQL eindeutig machen. Sie können dies tun, indem Sie in MySQL eine UNIQUE-Spaltenbeschränkung hinzufügen. Es gibt mehrere Möglichkeiten, Unique Constraints hinzuzufügen – mit CREATE TABLE- oder ALTER TABLE-Anweisungen. So fügen Sie in MySQL eine eindeutige Einschränkung hinzu.

Eindeutigkeitsbeschränkung für MySQL hinzufügen

So fügen Sie in MySQL eine eindeutige Einschränkung hinzu. Sie können Unique-Einschränkungen hinzufügen, wenn Sie eine Tabelle erstellen oder nachdem Sie eine Tabelle erstellt haben. Wir werden uns diese beiden Ansätze ansehen.

MySQL fügt beim Erstellen der Tabelle eine eindeutige Beschränkung hinzu

Hier ist die SQL-Anweisung zum Erstellen einer EINZIGARTIGEN Einschränkung, wenn Sie eine Tabelle erstellen

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

In der obigen Abfrage müssen Sie das Schlüsselwort UNIQUE für die Definition der Spalte angeben, die eindeutig sein soll.

Hier ist ein Beispiel zum Erstellen einer eindeutigen Einschränkung. Im folgenden Beispiel haben wir die UNIQUE-Einschränkung für order_id hinzugefügt Spalte

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

Wenn Sie jetzt versuchen, doppelte Werte für order_id einzufügen Spalte erhalten Sie eine Fehlermeldung.

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-Lesetext:MySQL-Umbenennungsspalte

MySQL fügt eindeutige Einschränkung zu bestehender Spalte hinzu

Hier ist die SQL-Anweisung zum Erstellen einer UNIQUE-Einschränkung für eine vorhandene Spalte mithilfe der ALTER TABLE-Anweisung.

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

In der obigen SQL-Abfrage müssen Sie einen constraint_name angeben für die UNIQUE-Einschränkung nach ADD CONSTRAINT und listen Sie die Spalten auf, die in ( )

eindeutig sein sollen

Hier ist ein Beispiel für das Hinzufügen einer eindeutigen Einschränkung zu einer vorhandenen Spalte

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 der obigen Abfrage haben wir der Betragsspalte eine eindeutige Einschränkung hinzugefügt.

Bonuslektüre:Wie man Tabellen in MySQL dupliziert

MySQL-Eindeutigkeitsbeschränkung für mehrere Spalten hinzufügen

Hier ist die SQL-Anweisung zum Erstellen einer UNIQUE-Einschränkung für mehrere Spalten.

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-Lesevorgang:Gespeicherte MySQL-Prozedur mit Parametern

Sie können UNIQUE CONSTRAINT auch mehreren Spalten hinzufügen, indem Sie die ALTER TABLE-Anweisung verwenden.

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

Ubiq macht es einfach, Daten innerhalb von Minuten zu visualisieren und in Echtzeit-Dashboards zu überwachen. Probieren Sie es noch heute aus!