Heim >Datenbank >MySQL-Tutorial >MySQL-Eindeutigkeitsbeschränkung für mehrere Felder
Die MySQL-Eindeutigkeitsbeschränkung (Unique Key) erfordert, dass die Spalte eindeutig ist und erlaubt den Wert null, es kann jedoch nur ein Nullwert angezeigt werden. Eine eindeutige Einschränkung stellt sicher, dass in einer oder mehreren Spalten keine doppelten Werte vorhanden sind.
Legen Sie die Eindeutigkeitsbeschränkung beim Erstellen der Tabelle fest
Verwenden Sie das Schlüsselwort UNIQUE direkt nach der Definition der Spalte, um die Eindeutigkeitsbeschränkung anzugeben. Syntaxregeln wie folgt:
<字段名> <数据类型> UNIQUE
Erstellen Sie die Datentabelle tb_dept2, geben Sie den eindeutigen Namen der Abteilung an und geben Sie die SQL-Anweisung und die Ausführungsergebnisse wie unten gezeigt ein.
mysql> CREATE TABLE tb_dept2 -> ( -> id INT(11) PRIMARY KEY, -> name VARCHAR(22) UNIQUE, -> location VARCHAR(50) -> ); Query OK, 0 rows affected (0.37 sec) mysql> DESC tb_dept2; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(40) | YES | UNI | NULL | | | location | varchar(50) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.08 sec)
Tipp: Der Unterschied zwischen UNIQUE und PRIMARY KEY: Eine Tabelle kann mehrere als UNIQUE deklarierte Felder haben, aber es kann nur eine PRIMARY KEY-Deklaration geben, die als PRIMARY KEY deklariert werden darf. aber die Deklaration von NULL-Werten ist für EINZIGARTIGE Felder zulässig.
Fügen Sie beim Ändern der Tabelle eine eindeutige Einschränkung hinzu.
Das Syntaxformat zum Hinzufügen einer eindeutigen Einschränkung beim Ändern der Tabelle lautet:
ALTER TABLE <数据表名> ADD CONSTRAINT <唯一约束名> UNIQUE(<列名>);
Ändern Sie die Daten Tabelle tb_dept1, geben Sie an, dass der Name der Abteilung eindeutig ist. Die Eingabe-SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt.
mysql> ALTER TABLE tb_dept1 -> ADD CONSTRAINT unique_name UNIQUE(name); Query OK, 0 rows affected (0.63 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> DESC tb_dept1; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(22) | NO | UNI | NULL | | | location | varchar(50) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
Angenommen, es besteht eine Anforderung für Benutzer, Kommentare zu mögen. Das Datenbankdesign besteht aus drei Tabellen: der Benutzertabelle t_user, der Kommentartabelle t_comment und der Likes-Tabelle. Die Likes-Tabelle enthält zwei Fremdschlüssel : user_id und comment_id sind jeweils der Benutzer-ID der Benutzertabelle und der Kommentar-ID der Kommentartabelle zugeordnet und legen dann fest, dass ein Benutzer denselben Kommentar nur einmal mögen kann. Eine Möglichkeit, dies zu erreichen, besteht darin, über user_id und comment_id abzufragen Wenn nicht, führen Sie den Einfügungsvorgang erneut aus, bevor Sie ihn in die Like-Tabelle einfügen. Andernfalls wird zurückgegeben, dass er Ihnen bereits gefallen hat. Wenn er auf diese Weise implementiert wird, gibt es einen weiteren Datenbankabfragevorgang Eine bessere Implementierung besteht darin, die Benutzer-ID und die Kommentar-ID der Like-Tabelle so zu ändern, dass sie eindeutig sind. Das heißt, die beiden Spalten können nicht gleichzeitig identisch sein. Wenn Sie während des Einfügevorgangs bereits auf „Gefällt mir“ geklickt haben Die Datenbank löst einen Verstoß gegen die Eindeutigkeitsschlüsseleinschränkung aus. In diesem Fall können Sie einen weiteren Datenbankabfragevorgang vermeiden. Es gibt viele spezifische Einstellungen. Die als einzige Einschränkung aufgeführte Anweisung lautet:
UNIQUE KEY <唯一约束名>(<列名>,...,<列名n>)rrree
Das obige ist der detaillierte Inhalt vonMySQL-Eindeutigkeitsbeschränkung für mehrere Felder. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!