CREATE TABLE

Um überhaupt mit Tabellen arbeiten zu können, sprich Datensätze anzuzeigen, zu verändern oder zu bearbeiten, braucht man erste eine Tabelle, wenn sie nicht schon vorhanden ist. Tabellen legt man dabei mit dem Befehl: CREATE TABLE an, der hier weiter erklärt wird.

Der Befehl CREATE TABLE gehört zu der Data Definition Language (DDL), gehört also zur Datendefinition. Zwar kann man bei den meisten Datenbank-Tools auch ohne die DDL, sprich ohne die genaue Syntax für den CREATE TABLE-Befehl, eine Datenbank per Mausklick anlegen, dennoch sollte man es für das Grundverständnis und auch für den allgemeinen Tabellenaufbau den Befehl schon einmal gesehen haben. Auch kann es einmal vorkommen, dass man eben nicht die grafische Oberfläche zu Verfügung hat um eine Tabelle anzulegen, dann ist die Kenntnis über die Syntax Gold wert.

Der Eigentümer der Tabelle wird der Benutzer sein, der den Befehl ausführt. Die Tabelle ist am Anfang leer und kann nach dem Erzeugen mit den Datensätzen befüllt werden.

Möchte man nun eine Tabelle anlegen, muss man nicht nur den CREATE TABLE Befehl kennen, sondern sollte sich schon im voraus Gedanken gemacht haben, was in der Tabelle alles stehen soll, sprich man braucht die Spalten samt ihren Datentypen. Zusätzlich kann man dann beispielsweise noch den Primärschlüssel und Fremdschlüssel definieren, kann bestimmen ob Datensätze immer befüllt werden müssen und noch einiges mehr. Dazu kommen wir aber weiter unten, hier erst einmal die minimalen Voraussetzungen für eine Tabelle:


CREATE TABLE tabellennamen
(
   Spaltenname1 datentyp1 [feldeinschränkung]
   Spaltenname2 datentyp2 [feldeinschränkung]
   [...]
);

Möchte man nun beispielsweise folgende Tabelle unter dem Namen Filme anlegen:

“Beispieltabelle

Geht man folgendermaßen vor, unter der Berücksichtigung, das beim Feld USK nur das Alter per Zahl angegeben wird, sowie das gleiche bei der Länge, lautet der Befehl folgendermaßen:


CREATE TABLE Filme
(
   Titel VARCHAR (100),
   Genre VARCHAR (30),
   USK INTEGER,
   Regisseur VARCHAR (30),
   Laenge INTEGER,
   Veroeffentlichung DATE
);

Primärschlüssel vergeben

Nun möchten wir noch zusätzlich ein Feld hinzufügen mit dem Namen FilmNr. Dieses Feld soll unser Primärschlüssel werden und darf somit keine NULL Wert sowie schon vorhandene Werte enthalten. Wir haben die Änderung fett markiert:


CREATE TABLE Filme
(
   FilmNr INTEGER NOT NULL,
   Titel VARCHAR (100),
   Genre VARCHAR (30),
   USK INTEGER,
   Regisseur VARCHAR (30),
   Laenge INTEGER,
   Veroeffentlichung DATE,
    [CONSTRAINT filmnr]
   PRIMARY KEY(FilmNr)
);

Mit dem Schlüsselwort CONSTRAINT kann man dem Primärschlüssel einen Namen geben, über den man den Schlüssel dann nachher anspricht. Nach dem Schlüsselwort CONSTRAINT folgt der Name, hier haben wir einfach noch einmal 'filmnr' verwendet, es kann aber auch jeder beliebige andere Name sein. Zu beachten ist das wir den Befehl in [ ] geschrieben haben, das heißt er ist optional und kann auch weggelassen werden. Manche Datenbanksysteme verlangen aber das sie einen Schlüssel mit CONSTRAINT anlegen, hier ist der Befehl dann Pflicht.

Fremdschlüssel vergeben

Neben einem Primärschlüssel dem PRIMARY Key kann man natürlich auch einen Fremdschlüssel festlegen. Mit diesem Fremdschlüssel kann eine Spalte der einen Tabelle mit einer gleichartigen Spalte der anderen Tabelle verbunden werden. Damit dies funktioniert, müssen beide Spalten den selben Datentyp besitzen.

Wir gehen wieder von unserer Film Tabelle aus und wollen nun noch eine zweite Tabelle mit Informationen zum Regisseur hinzufügen. Verbunden werden soll die Spalte Regisseur von der Tabelle Film mit der Spalte RegisseurNr in der Tabelle Regisseur, siehe Abbildung unten:

Beispieltabelle für Fremdschlüssel

Dazu erstellen wir erst einmal die neue Tabelle Regisseur:


CREATE TABLE Regisseur
(
   RegisseurNr INTEGER NOT NULL,
   Vorname VARCHAR (20),
   Nachname VARCHAR (30),
   Lebensalter INTEGER,
   Werke INTEGER,
   PRIMARY KEY(RegisseurNr)
 );

Nun setzen wir noch den Fremdschlüssel in die abhängige Tabelle „Filme“, da wir unseren Primärschlüssel in der Vatertabelle „Regisseur“ gesetzt haben:


CREATE TABLE Filme
(
   FilmNr INTEGER NOT NULL,
   Titel VARCHAR (100),
   Genre VARCHAR (30),
   USK INTEGER,
   Regisseur INTEGER NOT NULL,
   Laenge INTEGER,
   Veroeffentlichung DATE,
   PRIMARY KEY (FilmNr),
   FOREIGN KEY (Regisseur)
           REFERENCES regisseur(RegisseurNr)
);

Beachtet werden muss beim Einsatz von Fremdschlüssel, dass die Tabelle, auf die man sich bezieht schon existieren muss. In unserem Fall muss erst die Tabelle Regisseur bestehen, bevor man sich in der Tabelle Filme, darauf beziehen kann. Umgekehrt kann man erst die Tabelle Regisseur löschen, wenn die Tabelle Filme gelöscht wurde, bzw. der Fremdschlüssel in dieser Tabelle.

Doch für was muss, bzw. soll man diesen FOREIGN KEY überhaupt definieren? Durch das bestimmen eines Fremdschlüssels kann die Datenbank die eingegeben Daten überprüfen und bei einer Verletzung sie ablehnen und verwerfen. Weiter ist Kaskadiertes Löschen bzw. Updaten bei den meisten Datenbanksystemen dadurch möglich.