VorwortBeim 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
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.
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
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.
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
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 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üsselIn 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.
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
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;
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.
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
ZusammenfassenDamit 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:
|
<<: Zusammenfassung der Blockelemente, Inline-Elemente und variablen Elemente
>>: Beispielcode zur Implementierung eines reinen CSS-Popup-Menüs mit Transform
Inhaltsverzeichnis 1. Was ist der Lebenszyklus 2....
npm deinstallieren sudo npm deinstallieren npm -g...
Vorwort Der Befehl „Explain“ ist die primäre Mögl...
Vorwort Dockerfile ist ein vom Docker-Programm in...
Dieser Artikel beschreibt anhand eines Beispiels,...
In diesem Artikelbeispiel wird der spezifische Co...
Weitere spannende Inhalte finden Sie unter https:...
Vorbereitung 1. Überprüfen Sie, ob die GPU CUDA u...
Inhaltsverzeichnis Vorwort Lösung Konkrete Umsetz...
So implementieren Sie die Funktionen „Als Startse...
Als ich die kürzlich beliebte WeChat-Tap-Funktion...
Da die Version, die ich beim Lernen verwendet hab...
Inhaltsverzeichnis 1. Passen Sie das Netzwerk an,...
Inhaltsverzeichnis 1. Übersicht 1.1 Was ist ein P...
Ja, CSS hat auch reguläre Ausdrücke (Amen) Zwei l...