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!

MySQL - Check Constraints

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