Aus dem Kurs: SQL Grundkurs 4: Data Definition Language (DDL) und Data Control Language (DCL)
PRIMARY KEY
Eine Tabelle ohne Primärschlüssel ist eigentlich keine richtige Tabelle in einer relationalen Datenbank. Deshalb zeige ich Ihnen nun, wie Sie eine Tabelle mit Primärschlüssel erstellen können. Ich zeige Ihnen hier im ersten Schritt die einfache Syntax. Die einfache Syntax erzeugt ein Primary Key-Constraint ohne Angabe eines Namens. Daher wird dieser Name automatisch vom System ergänzt. Dafür ist es relativ einfach umgesetzt. Ich habe hier ein ganz einfaches CREATE TABLE-Kommando vorbereitet, indem die Spalten für eine Schulungstabelle erzeugt werden. Es ist hier noch keine Spalte als Primärschlüssel definiert. Die ID sollte das aber werden. Vielleicht fällt Ihnen hier auf, dass die ID nicht als NOT NULL definiert ist hier. Das könnte ich natürlich tun, muss ich aber nicht, wenn ich eine Spalte im selben Statement gleich als Primärschlüssel definiere, denn dann passiert dies automatisch. Und eigentlich brauche ich nicht viel tun, außer hier PRIMARY KEY dazu zu schreiben. Direkt in der betroffenen Spalte, direkt daneben. Dadurch wird diese Spalte als Primärschlüssel definiert. Wenn ich also dieses Kommando nun ausführe und diese Tabelle erstelle, versuche ich nun hier nachträglich gleich Datensätze hinzufügen. Zuerst einmal mit einer 1 für die Spalte-ID. Die Zeile ist eingefügt worden und ist natürlich in der Tabelle auch drinnen. Wie wir hier sehen. Wenn ich jetzt aber, nachdem ich einen Primärschlüssel definiert habe, dasselbe Statement noch einmal auszuführen versuche, laufe ich auf eine Fehlermeldung aus. Die Fehlermeldung sagt mir, dass ich gegen diesen Primärschlüssel verstoßen habe. Lassen Sie sich nicht irritieren, dass Oracle hier den Begriff Unique Constraint ausgibt. Was wir hier sehen, ist der Name des Constraints, den Oracle vergeben hat, weil wir keinen selber vergeben haben. Dieser hat leider einen unpraktischen Namen, nämlich SYS_C und eine Nummer dahinter, d.h., er ist nicht wirklich sprechend. Wenn wir später z.B. dieses Constraint ändern oder löschen wollten, müssten wir zuerst eruieren, wie es heißt. Das ist der Nachteil dieser automatischen Vergabe der Namen. Aber der Primärschlüssel wirkt, wie wir gesehen haben. Wir mussten nur PRIMARY KEY hier ergänzen. Wenn wir das Gleiche bei MySQL uns anschauen, habe ich auch hier die entsprechende CREATE TABLE- Kommandoanweisung vorbereitet. Sie unterscheidet sich nur ein wenig in den Datentypen und z.B. auch bei der Funktion für den DEFAULT-Wert, sonst ist alles ident. Und auch hier ist es ausreichend, einfach in der ersten Zeile PRIMARY KEY zu ergänzen und auch hier auf das NOT NULL verzichten. Ich führe dieses Statement aus, und schon habe ich jetzt hier diese Tabelle erzeugt, und wir sehen hier, dass sie auch hier bereits angezeigt wird im Navigator, wenn ich die Anzeige aktualisiere. Und auch hier bekomme ich beim ersten Einfügen keine Fehlermeldung, weil das hier funktioniert. Ich kann mir den Datensatz auch ausgeben. Hier sehen wir ihn. Aber wenn ich ihn versuche, das zweite Mal einzufügen, bekomme ich eine Fehlermeldung. Ich muss hier nur hinaufziehen, damit wir es hier sehen, und hier sehen wir auch Duplicate entry for key PRIMARY. Das heißt, das funktioniert nicht. Last, but not least dasselbe beim Microsoft SQL-Server. Auch hier sehen wir das vorbereitete Statement, und auch hier muss ich einfach nur PRIMARY KEY ergänzen. Ich führe das aus, mache gleich das erste INSERT mit, eine Zeile ist betroffen, und wenn ich diese Anweisung noch einmal ausführe, dann bekommen wir hier eine Fehlermeldung, und auch hier sehen wir den Namen, der hier vergeben worden ist für dieses Constraint vom System PK__schulung und auch sozusagen Hieroglyphen hinten nach, d.h., auch kein sauberer, schöner Name, der hier vergeben worden ist. Wenn Sie also auf die schnelle Art und Weise einen Primärschlüssel definieren wollen, dann ergänzen Sie einfach den Zusatz PRIMARY KEY in der betroffenen Spalte. Der Name für das Constraint wird zwar automatisch vergeben, aber es funktioniert. Eine zweite Einschränkung haben Sie noch. Sie können diese Variante nur für Primärschlüssel nutzen, die aus einer Spalte bestehen.
Üben mit Projektdateien
Laden Sie die Dateien herunter, die von den Trainer:innen verwendet werden. So können Sie mitlesen und durch Ansehen, Zuhören und Üben lernen.
Inhalt
-
-
-
-
-
(Gesperrt)
Constraint-Arten und Wirkung6 Min. 18 Sek.
-
PRIMARY KEY4 Min. 52 Sek.
-
(Gesperrt)
IDENTITY mit MS SQL Server9 Min. 7 Sek.
-
(Gesperrt)
AUTO_INCREMENT mit MySQL6 Min. 52 Sek.
-
(Gesperrt)
Sequence mit Oracle7 Min. 44 Sek.
-
(Gesperrt)
Identity mit Oracle7 Min. 52 Sek.
-
(Gesperrt)
Sequence mit MS SQL Server4 Min. 57 Sek.
-
(Gesperrt)
CONSTRAINT sauber benennen7 Min. 11 Sek.
-
(Gesperrt)
UNIQUE KEY4 Min. 30 Sek.
-
(Gesperrt)
CHECK7 Min. 5 Sek.
-
(Gesperrt)
FOREIGN KEY7 Min. 45 Sek.
-
(Gesperrt)
Constraint nachträglich ergänzen4 Min. 38 Sek.
-
(Gesperrt)
Constraint löschen5 Min. 3 Sek.
-
(Gesperrt)
-
-
-