Home » Blog » CONSTRAINTS in MySQL
- Anzeige -
Software Asset Management beim Fachmann

CONSTRAINTS in MySQL

In diesem Artikel erkläre ich Euch die Grundlagen von CONSTRAINTS in MYSQL. Dazu gibt es natürlich bereits viele weitere Artikel im Netz. Beim Probieren fehlten mir aber oft einzelne entscheidende Hinweise. Vielfach wird in den Beispielen im Netz das CONSTRAINT innerhalb der CREATE TABLE-Anweisung erstellt. Existiert die Tabelle schon, oder läuft sonst was schief, hat das aber zur Folge, dass das CONSTRAINT nicht mehr angelegt wird. Ich empfehle Euch daher unbedingt, das CONSTRAINT innerhalb einer ALTER TABLE Anweisung anzulegen.

Was sind CONSTRAINTS?

Beispiel - Beziehungen definieren

Ich selbst bin mit der SQL-Syntax wenig vertraut. Ich klicke mir meine Datenbank in der Regel zusammen (meist in phpMySQL). Dort kann man das Ergebnis dann auch exportieren und erhält im Ergebnis die SQL-Syntax. Hier die abgespeckte, funktionierende Variante:

Schritt 1: Tabelle "name" erstellen

CREATE TABLE IF NOT EXISTS `name` (
  `adrnr` int(11) PRIMARY KEY AUTO_INCREMENT NOT NULL,
  `vorname` varchar(50) DEFAULT NULL,
  `nachname` varchar(50) DEFAULT NULL,
  `plz` varchar(4) DEFAULT NULL
) ;

Dies ist eine reduzierte Adresstabelle. Wir verwenden eine automatisch fortlaufende (AUTO_INCREMENT) Nummer als Primärschlüssel.

Schritt 2: Tabelle "plz" erstellen

CREATE TABLE IF NOT EXISTS `plz` (
  `plz` varchar(4) PRIMARY KEY NOT NULL,
  `ort` varchar(50) DEFAULT NULL
);

Schritt 3: In Tabelle "plz" plz auf UNIQUE setzen

ALTER TABLE `plz`
 ADD UNIQUE KEY `plz` (`plz`);

Damit später eine eindeutige Zuordnung möglich ist, darf es eine Postleitzahl "plz" nur einmal geben.

Schritt 4: CONSTRAINT - Verknüpfung setzen

ALTER TABLE `name`
ADD CONSTRAINT `plz_ibfk_1` FOREIGN KEY (`plz`) REFERENCES `plz` (`plz`);

Hier setzen wir unser CONSTRAINT mit Namen plz_ibfk_1 auf den Schlüssel plz.

Ergebnis / Nutzen

Nachdem wir das ganze nun entsprechend aufgesetzt haben, können wir ein paar Orte in unsere Tabelle plz eingeben.

Constraints in MySQL
CONSTRAINT in MySQL

Wenn wir jetzt Daten in unserer Namenstabelle einfügen, wird uns automatische die entsprechende Auswahl angeboten:

Constraints in MySQL
CONSTRAINT in MySQL

Durch das CONSTRAINT können wir hier also keine anderen Wert als eine PLZ aus der plz-Tabelle verwenden.

phpMyAdmin Besonderheiten

phpMyAdmin brauche ich hauptsächlich für die Sicherung und das Zurückspielen von CMS-Datenbanken. Besonders gut kenne ich mich da nicht aus. Beim Herumspielen für diesen Artikel habe ich jedoch zwei für mich neue Dinge festgestellt:

Wie löscht man Indizes in phpMyAdmin?

Indizes kannst Du löschen, indem Du eine Tabelle anwählst und unter der Tabelle auf den recht unscheinbaren Link "Indizes" klickst. Dann öffnet sich eine Liste mit den Indizes und Du kannst diese über die Schaltfläche "Löschen" entfernen.

Indizes löschen in phpMyAdmin
Indizes in phpMyAdmin löschen

Grafischer Beziehungseditor in phpMyAdmin

Beziehungen kann man in phpMyAdmin auch grafisch editieren. Den Editor erreichst Du, indem Du die Datenbank aufrusfst, Abfrage wählst und den Link Designer aufrufst.

Grafischer Beziehungseditor in phpMyAdmin
Grafischer Beziehungseditor in phpMyAdmin

Quellen / Weiterführende Artikel



War der Artikel hilfreich? Bitte liken und sharen. Danke!

it-zeugs.de ist auch auf Facebook...

Schreibe einen Kommentar - aber kein SPAM - der wird zuverlässig gefiltert!

  • Erforderliche Felder sind markiert mit *.

If you have trouble reading the code, click on the code itself to generate a new random code.