Was ist der Unterschied zwischen MUL
, PRI
und UNI
in MySQL?
Ich arbeite an einer MySQL-Abfrage mit dem folgenden Befehl:
desc mytable;
Eines der Felder wird als MUL
Schlüssel angezeigt , andere als UNI
oder PRI
.
Ich weiß, dass, wenn ein Schlüssel vorhanden ist PRI
, diesem Schlüssel nur ein Datensatz pro Tabelle zugeordnet werden kann. Wenn ein Schlüssel vorhanden ist MUL
, bedeutet dies, dass möglicherweise mehr als ein Datensatz zugeordnet ist?
Hier ist die Antwort von mytable
.
+-----------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+-------+
| courseid | int(11) | YES | MUL | NULL | |
| dept | char(3) | YES | | NULL | |
| coursenum | char(4) | YES | | NULL | |
+-----------+---------+------+-----+---------+-------+
MUL
nur für diese Spalte und nicht für alle anderen Spalten angezeigt?Dies ist akut eine Abkürzung für:
In jedem Fall gibt es drei mögliche Werte für das Attribut "Schlüssel":
PRI
UNI
MUL
Die Bedeutung von
PRI
undUNI
ist ganz klar:PRI
=> PrimärschlüsselUNI
=> eindeutiger SchlüsselDie dritte Möglichkeit
MUL
(nach der Sie gefragt haben) ist im Grunde ein Index, der weder ein Primärschlüssel noch ein eindeutiger Schlüssel ist. Der Name stammt von "multiple", da mehrere Vorkommen mit demselben Wert zulässig sind. Direkt aus der MySQL-Dokumentation :Es gibt auch eine letzte Einschränkung:
Generell ist die MySQL-Dokumentation recht gut. Wenn Sie Zweifel haben, probieren Sie es aus!
quelle
MUL
.Walkthough auf was ist MUL, PRI und UNI in MySQL?
Aus der MySQL 5.7- Dokumentation:
Live-Beispiele
Kontrollgruppe, dieses Beispiel hat weder PRI, MUL noch UNI:
Eine Tabelle mit einer Spalte und einem Index für die eine Spalte hat eine MUL:
Eine Tabelle mit einer Spalte, die ein Primärschlüssel ist, hat PRI
Eine Tabelle mit einer Spalte, die ein eindeutiger Schlüssel ist, hat UNI:
Eine Tabelle mit einem Index für foo und bar enthält MUL nur für foo:
Eine Tabelle mit zwei separaten Indizes für zwei Spalten enthält jeweils MUL
Eine Tabelle mit einem Index, der drei Spalten umfasst, enthält MUL für die erste:
Eine Tabelle mit einem Fremdschlüssel, der auf den Primärschlüssel einer anderen Tabelle verweist, ist MUL
Stecke das in deinen Neokortex und stelle das Zifferblatt auf "frappe".
quelle
Für Mul war dies auch eine hilfreiche Dokumentation für mich - http://grokbase.com/t/mysql/mysql/9987k2ew41/key-field-mul-newbie-question
"MUL bedeutet, dass mit dem Schlüssel mehrere Zeilen denselben Wert haben können. Das heißt, es ist kein UNIque-Schlüssel."
Angenommen, Sie haben zwei Modelle: "Posten" und "Kommentieren". Post hat eine has_many Beziehung zu Comment. Dann wäre es sinnvoll, wenn die Kommentartabelle einen MUL-Schlüssel (Post-ID) hätte, da viele Kommentare demselben Post zugeordnet werden können.
quelle