Detaillierte Erläuterung der sechs gängigen Einschränkungstypen in MySQL

Detaillierte Erläuterung der sechs gängigen Einschränkungstypen in MySQL

Vorwort

Beim Einfügen von Daten in eine Datentabelle gibt es manchmal besondere Anforderungen an die eingefügten Daten. So dürfen die Noten nicht leer sein, die Matrikelnummern dürfen nicht wiederholt werden usw. In solchen Fällen sind Einschränkungen hilfreich.

Der Einschränkungstyp stellt die Integrität und Eindeutigkeit der Tabellendaten sicher, indem er die Daten in den Zeilen oder Spalten der Tabelle einschränkt. In diesem Kapitel stellen wir hauptsächlich sechs gängige MySQL-Einschränkungstypen vor.

1. nicht null

Stellen Sie sicher, dass keine NULL-Werte gespeichert werden können. Wenn NULL eingefügt wird, schlägt das Einfügen fehl.

Wir definieren zwei Datentabellen, die Studententabelle und die student_copy-Tabelle. Die Studententabelle legt relevante Einschränkungen fest, und die student_copy-Tabelle wird als Vergleichstabelle verwendet, ohne dass Einschränkungen festgelegt werden, um den Unterschied zwischen den beiden zu beobachten.

In der Studententabelle ist die ID als ungleich null definiert, also gilt für die ID-Zeile NULL = NEIN. Dies bedeutet, dass die Daten in dieser Zeile nicht NULL sein können, da sonst die Einfügung fehlschlägt.

In der Tabelle „student_copy“ gibt es keine Einschränkungen, daher gilt für jedes Feld NULL = JA. Dies bedeutet, dass Benutzer nach Belieben Nullwerte einfügen können, ohne dass Fehler auftreten.

F: Zusätzlich zur expliziten Angabe, dass das Einfügen von NULL zu einem Fehler unter der Nicht-Null-Einschränkung führt, stellt sich die Frage, ob das implizite NULL zu einem Fehler führt?

Es gibt zwei Möglichkeiten, NULL anzugeben: explizit und implizit.

Explizit bedeutet, dass die Spalte beim Einfügen auf NULL gesetzt wird, während implizit bedeutet, dass der Spalte beim Einfügen kein Wert zugewiesen wird und für diese Spalte kein Standardwert angegeben ist. Das System setzt standardmäßig NULL ein, sodass alle diese Situationen Einfügesteuerungsfehler auslösen.

2. einzigartig

Stellen Sie sicher, dass jede Zeile einer Spalte einen eindeutigen Wert haben muss, d. h. die einzelnen Datenzeilen in der angegebenen Spalte dürfen nicht wiederholt werden.

Die folgenden beiden Abbildungen zeigen die Operationen an der Studententabelle und der student_copy-Tabelle. Die ID-Spalte der Studententabelle hat einen eindeutigen Einschränkungssatz, sodass doppelte Operationen angezeigt werden, wenn dieselbe ID = 1 eingefügt wird.

In der Tabelle „student_copy“ gibt es keine Einschränkungen. Dies bedeutet, dass Benutzer beliebige Werte einfügen können, ohne dass eine Fehlermeldung angezeigt wird.

F: Tritt ein Fehler auf, wenn ein NULL-Wert unter einer eindeutigen Einschränkung eingefügt wird?

Tatsächlich wurde dieses Problem gerade gelöst. Wenn id = NULL in die Studententabelle eingefügt wird, meldet das System keinen Fehler. Unique stellt nur sicher, dass der gespeicherte Wert eindeutig ist. Es kann ein Nullwert sein, aber der Nullwert muss auch eindeutig sein. Das Einfügen von NULL führt zu einem Fehler.

3. Verzug

Gibt den Standardwert an, wenn der Spalte kein Wert zugewiesen ist. Mit anderen Worten: Wenn beim Einfügen von Daten der angegebenen Spalte kein Wert zugewiesen wird, ist ihr Wert der standardmäßig angegebene Standardwert.

Nachdem die Studententabelle das Namensfeld angegeben und die Standardeinschränkung festgelegt hat, hat die Standardspalte einen Namen. Wenn beim Einfügen von Daten die Spalte „Name“ nicht angegeben ist, wird die Spalte „Name“ entsprechend dem von uns festgelegten Standardwert = „Unbenannt“ ausgefüllt.

Für die Tabelle „student_copy“ ist keine Standardeinschränkung festgelegt. Wenn also Daten eingefügt werden, werden nicht angegebene Spalten mit dem Systemstandardwert NULL gefüllt.

4. Primärschlüssel

Die Kombination aus „not null“ und „unique“ stellt sicher, dass eine Spalte eine eindeutige Kennung hat und keine NULL-Werte speichern kann.

Die ersten Einschränkungstypen können für mehrere Spalten gleichzeitig festgelegt werden, der Primärschlüssel kann jedoch nur eine Spalte in einer Tabelle einschränken. Die Spalte, die die Primärschlüsseleinschränkung verwendet, wird als Primärschlüssel bezeichnet.

Wenn die eingefügten Daten wiederholt werden, schlägt das Einfügen der nächsten Daten fehl und die eingefügten Daten können nicht NULL sein.

Eine Tabelle kann nur eine Spalte als Primärschlüssel haben und nicht mehrere Spalten gleichzeitig als Primärschlüssel. Beim Entwerfen einer Tabelle empfiehlt es sich im Allgemeinen, einen Primärschlüssel festzulegen. Übliche Primärschlüssel liegen in numerischer Form vor.

Auto_increment-Primärschlüssel

In der tatsächlichen Entwicklung gibt es häufig eine Reihe von Strategien, um sicherzustellen, dass Primärschlüssel nicht wiederholt werden. Die gängigste Methode besteht darin, einen automatisch inkrementierten Primärschlüssel festzulegen. Das System kann Daten automatisch zuweisen, und Benutzer können gleichzeitig auch manuell eingreifen. Da MySQL über eine integrierte Funktion zum automatischen Inkrementieren von Primärschlüsseln verfügt, ist es sehr einfach zu verwenden.

In der folgenden Abbildung wird die ID-Spalte zu einem automatisch inkrementierten Primärschlüssel, sodass Benutzer beim Einfügen von Daten nicht manuell eingreifen müssen.

F: Führen Sie die folgenden Vorgänge aus und raten Sie, was das Abfrageergebnis der Tabelle sein wird?

Es ist bekannt, dass das ID-Feld als automatisch inkrementeller Primärschlüssel festgelegt ist.

Zhang Sans ID = null, da der automatisch inkrementierte Primärschlüssel der Reihenfolge folgt, ist seine ID = 1; Li Sis ID = 1, der Primärschlüssel kann nicht wiederholt werden, Li Sis ID ist dieselbe wie Zhang Sans ID, also schlägt das Einfügen fehl; fahren Sie mit dem Einfügen von Li Sis Daten fort, setzen Sie dieses Mal die ID = 4, es gibt keine Duplizierung mit den Originaldaten, also ist das Einfügen erfolgreich; Wang Wus ID = null, gemäß dem automatisch inkrementierten Primärschlüssel geht es weiter in der vorherigen Reihenfolge nach unten, also ist seine ID = 5;

Schauen wir uns also die Ergebnisse an:

5. Fremdschlüssel

Fremdschlüssel werden verwendet, um eine Verbindung zu den Primärschlüsseln anderer Tabellen herzustellen. Dadurch wird die referenzielle Integrität sichergestellt, d. h., die Daten einer Tabelle entsprechen den Werten einer anderen Tabelle.

foreign key (字段名) references 主表(列)

Um dies zu verstehen, nehmen wir ein Beispiel. Jetzt erstellen wir zwei Tabellen und möchten sie verknüpfen. Wie sollen wir das tun?

Lassen Sie uns zunächst über diese Entsprechung nachdenken. Ein Schüler entspricht einer Klasse und eine Klasse entspricht mehreren Schülern. In der Schülertabelle ist die ID der Primärschlüssel, daher können wir die Klassen-ID des Schülers als Fremdschlüssel festlegen, um sie mit der Klassentabelle zu verknüpfen.

Erstellen Sie eine Klassentabellenklasse und legen Sie classesId als Primärschlüssel fest

Tabellenklasse erstellen (
 ID int Primärschlüssel auto_increment,
 Name varchar(20)
);

Erstellen Sie eine Studententabelle Student und legen Sie die ID als Primärschlüssel fest

Tabelle Student erstellen (
 ID int Primärschlüssel auto_increment,
 Name varchar(20),
 Klassen-ID int,
 Fremdschlüssel (class_id) verweist auf Klasse(id)
);

MUL zeigt eine Fremdschlüsseleinschränkung an;

Regeln für die Verwendung von Fremdschlüsseln

Die in die Studententabelle eingefügte Klassen-ID muss in der Klassentabelle vorhanden sein.

Die Klassentabelle ist leer. Fügen Sie zu diesem Zeitpunkt die Daten der Studententabelle ein und geben Sie class_id = 1 an, aber die Klassennummer in der Klassentabelle ist leer, sodass das Einfügen fehlschlägt. Die von der Studententabelle angegebene Fremdschlüsseleinschränkung muss der Primärschlüssel der Klassentabelle sein. Nachdem die Fremdschlüsseleinschränkung festgelegt wurde, kann die Klassen-ID in der Klassentabelle nicht mehr beliebig geändert oder gelöscht werden.

Wir können den Datensatz mit der ID = 1 in der Klassentabelle nicht in die ID = 20 ändern, da Zhang San in der Schülertabelle vom Ergebnis der ID = 1 in der Klassentabelle abhängt.

Nachteile von Fremdschlüsseln

Wenn wir zwei Tabellen zu Produkten und Bestellungen wie folgt haben

An dieser Stelle können wir die Produkt-ID in der Bestelltabelle und die Produkt-ID in der Produkttabelle verwenden, um eine Fremdschlüsseleinschränkung festzulegen. Wenn jedoch ein Datensatz mit der Produkt-ID 1 in der Bestelltabelle vorhanden ist, kann der Datensatz mit der ID = 1 in der Produkttabelle nicht gelöscht werden. Dann werden diese Daten dauerhaft gespeichert, aber das Produkt existiert möglicherweise nicht dauerhaft und kann aus dem Regal entfernt werden. Dies ist der Widerspruch, wenn Fremdschlüssel verwendet werden, um bestimmte Tabellen zu verknüpfen.

Wenn wir die Überprüfungsfunktion für Fremdschlüsseleinschränkungen haben und gleichzeitig den aktuellen Widerspruch lösen möchten, können wir eine logische Löschung durchführen: Fügen Sie dem Produkt eine separate Spalte hinzu, um zu kennzeichnen, ob die Daten gültig sind, setzen Sie Flag = 1, um anzuzeigen, dass der Datensatz gültig ist, und Flag = 0, um anzuzeigen, dass der Datensatz ungültig ist. Um das Produkt zu löschen, können Sie sein Flag direkt auf 0 ändern. Logischerweise wurde das Produkt gelöscht, aber tatsächlich sind die Daten noch in der Tabelle gespeichert, was keine echte physische Löschung darstellt.

6. Prüfen

Stellt sicher, dass die Werte in einer Spalte die angegebene Bedingung erfüllen.

Zusammenfassen

Damit ist dieser Artikel über die sechs gängigen Einschränkungstypen in MySQL abgeschlossen. Weitere Informationen zu gängigen MySQL-Einschränkungstypen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • So erstellen und löschen Sie Fremdschlüsseleinschränkungen in MySQL
  • Spezielle Methode zum Hinzufügen von Fremdschlüsseleinschränkungen in MySQL
  • MySQL-Datenbankbeschränkungen und Prinzipien des Datentabellenentwurfs
  • Detaillierte Erklärung, ob die MySQL-Datenbank Fremdschlüsseleinschränkungen verwenden soll
  • MySQL lernen: Fünf Hauptbeschränkungen von Datenbanktabellen im Detail für Anfänger erklärt
  • Eine kurze Diskussion über den Unterschied zwischen MySQL-Primärschlüsseleinschränkung und eindeutiger Einschränkung
  • MySQL-Einschränkungen - Super detaillierte Erklärung
  • Erläuterung des MySQL-Nicht-Null-Einschränkungsfalls
  • So legen Sie Einschränkungen für Tabellen in einer MySQL-Datenbank fest

<<:  Zusammenfassung der Blockelemente, Inline-Elemente und variablen Elemente

>>:  Beispielcode zur Implementierung eines reinen CSS-Popup-Menüs mit Transform

Artikel empfehlen

Detaillierte Beschreibung des Lebenszyklus von React-Komponenten

Inhaltsverzeichnis 1. Was ist der Lebenszyklus 2....

So deinstallieren Sie Node und NPM vollständig auf dem Mac

npm deinstallieren sudo npm deinstallieren npm -g...

Detaillierte Erläuterung des Ausführungsplans, Beispiel für einen Befehl in MySQL

Vorwort Der Befehl „Explain“ ist die primäre Mögl...

Docker-Grundlagen-Tutorial: Detaillierte Erklärung der Dockerfile-Syntax

Vorwort Dockerfile ist ein vom Docker-Programm in...

JavaScript zum Implementieren einer einfachen Uhr

In diesem Artikelbeispiel wird der spezifische Co...

HTML als Startseite festlegen und zu Favoriten hinzufügen_Powernode Java Academy

So implementieren Sie die Funktionen „Als Startse...

Fallstricke bei der neueren Version des IDEA2021 Tomcat10-Servlets

Da die Version, die ich beim Lernen verwendet hab...

Benutzerdefinierte Docker-Netzwerkimplementierung

Inhaltsverzeichnis 1. Passen Sie das Netzwerk an,...

Details zum JavaScript-Prototyp

Inhaltsverzeichnis 1. Übersicht 1.1 Was ist ein P...

Verwendung regulärer Ausdrücke in CSS-Selektoren

Ja, CSS hat auch reguläre Ausdrücke (Amen) Zwei l...