MySQL - Check Constraints: A Beginner's Guide
Hallo da, angehende Datenbankenthusiasten! Ich freue mich sehr, Ihr Guide auf dieser Reise durch die Welt der MySQL-Prüfbeziehungen zu sein. Als jemand, der seit Jahren Informatik unterrichtet, weiß ich aus erster Hand, wie überwältigend neue Konzepte sein können. Aber keine Sorge - wir gehen das Schritt für Schritt durch, und am Ende werden Sie ein Prüfbeziehungsprofi sein!
Was sind Prüfbeziehungen?
Bevor wir tiefer einsteigen, lassen Sie uns mit den Grundlagen beginnen. Stellen Sie sich vor, Sie führen eine Aufzeichnung der Altersangaben Ihrer Freunde. Sie möchten sicherlich nicht versehentlich eine negative Zahl oder eine lächerlich hohe Zahl eingeben, oder? Genau hier kommen Prüfbeziehungen ins Spiel!
Eine Prüfbeziehung ist wie ein Türsteher in einem Club - er überprüft, ob die Daten, die in Ihre Tabelle eintreten, bestimmten Bedingungen entsprechen. Wenn nicht, dürfen sie nicht hineingelassen werden. So einfach ist das!
Die MySQL-Prüfbeziehung
MySQL führte Prüfbeziehungen in Version 8.0.16 ein. Wenn Sie eine frühere Version verwenden, machen Sie sich keine Sorgen - wir werden später eine alternative Methode mit Trigger behandeln.
Lassen Sie uns mit einem grundlegenden Beispiel beginnen:
CREATE TABLE freunde (
id INT PRIMARY KEY,
name VARCHAR(50),
alter INT CHECK (alter >= 0 AND alter <= 120)
);
In diesem Beispiel erstellen wir eine Tabelle namens 'freunde'. Die PRÜFBEZIEHUNG stellt sicher, dass der Wert von 'alter' zwischen 0 und 120 liegt. Es ist, als ob man dem Türsteher sagt: "Lass nur Altersangaben zwischen 0 und 120 zu!"
Prüfbeziehung mit einem Trigger
Für diejenigen von Ihnen, die frühere Versionen von MySQL verwenden, fühlen Sie sich nicht ausgeschlossen! Wir können eine ähnliche Funktionalität mit Trigger erreichen. Hier ist, wie man das macht:
DELIMITER //
CREATE TRIGGER pruef_alter
BEFORE INSERT ON freunde
FOR EACH ROW
BEGIN
IF NEW.alter < 0 OR NEW.alter > 120 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Alter muss zwischen 0 und 120 liegen';
END IF;
END;//
DELIMITER ;
Dieser Trigger funktioniert wie unser Türsteher, der jede neue Eingabe überprüft, bevor sie in die Tabelle eingefügt wird.
Hinzufügen einer Prüfbeziehung auf einer einzigen Spalte
Angenommen, wir möchten sicherstellen, dass die Namen in unserer 'freunde'-Tabelle mindestens 2 Zeichen lang sind:
ALTER TABLE freunde
ADD CONSTRAINT pruef_name_länge
CHECK (LENGTH(name) >= 2);
Jetzt wird ein Versuch, einen Namen kürzer als 2 Zeichen einzufügen, einen Fehler verursachen. Es ist, als ob unser Türsteher sagt: "Entschuldigung, Ihr Name ist zu kurz. Sie dürfen nicht rein!"
Hinzufügen einer Prüfbeziehung auf mehrere Spalten
Manchmal müssen wir mehrere Spalten gleichzeitig überprüfen. Angenommen, wir möchten sicherstellen, dass eine Freundes Lieblinzzahl immer kleiner ist als ihr Alter:
ALTER TABLE freunde
ADD COLUMN lieblingszahl INT,
ADD CONSTRAINT pruef_lieblingszahl
CHECK (lieblingszahl < alter);
Diese Beziehung überprüft gleichzeitig zwei Spalten. Es ist, als ob unser Türsteher sowohl Ihren Ausweis als auch Ihr Ticket überprüft, bevor er Sie einlässt!
Hinzufügen einer Prüfbeziehung zu einer bestehenden Tabelle
Was ist, wenn wir bereits eine Tabelle haben und eine Prüfbeziehung hinzufügen möchten? Kein Problem! Wir können den Befehl ALTER TABLE
verwenden:
ALTER TABLE freunde
ADD CONSTRAINT pruef_alter
CHECK (alter >= 0 AND alter <= 120);
Dies fügt unsere Altersprüfung zu einer bestehenden 'freunde'-Tabelle hinzu. Es ist, als ob wir einen neuen Türsteher für unseren bereits geöffneten Club einstellen!
Entfernen einer Prüfbeziehung
Manchmal müssen wir möglicherweise eine Prüfbeziehung entfernen. Hier ist, wie man das macht:
ALTER TABLE freunde
DROP CONSTRAINT pruef_alter;
Dies entfernt die 'pruef_alter'-Beziehung aus unserer 'freunde'-Tabelle. Es ist, als ob wir unserem Türsteher sagen: "Du kannst nach Hause gehen. Wir brauchen keine Altersprüfungen mehr."
Prüfbeziehungen mit einem.Client-Programm
Wenn Sie ein.Client-Programm wie MySQL Workbench verwenden, können Sie Prüfbeziehungen über die GUI hinzufügen. Es befindet sich normalerweise unter der Option 'Tabelle ändern'. Denken Sie daran, dass immer noch die zugrunde liegende SQL ausgeführt wird - die GUI macht es nur benutzerfreundlicher!
Schlussfolgerung
Und da haben Sie es, Leute! Sie haben die ersten Schritte in die Welt der MySQL-Prüfbeziehungen unternommen. Denken Sie daran, diese Beziehungen sind die Türsteher Ihrer Datenbank - sie halten die schlechten Daten draußen und stellen sicher, dass nur das Gute hineingelassen wird.
Hier ist eine schnelle Zusammenfassung der Methoden, die wir behandelt haben:
Methode | Beschreibung |
---|---|
CREATE TABLE mit PRÜF |
Hinzufügen einer Beziehung beim Erstellen einer neuen Tabelle |
Trigger | Wird für frühere MySQL-Versionen verwendet |
ALTER TABLE ADD CONSTRAINT |
Hinzufügen einer Beziehung zu einer bestehenden Tabelle |
ALTER TABLE DROP CONSTRAINT |
Entfernen einer bestehenden Beziehung |
Üben Sie diese Konzepte, experimentieren Sie mit verschiedenen Beziehungen, und bald werden Sie ein Datenbanktürsteher-Experte sein! Denken Sie daran, dass in der Welt der Datenbanken gute Beziehungen gute Nachbarn machen. Viel Spaß beim Programmieren!
Credits: Image by storyset