Inhaltsverzeichnis

Data Definition Language

Diese Kategorie der SQL Befehle wird benutzt, um eine Datenbankstruktur und die enthalten Elemente zu erzeugen, zu verändern und zu löschen. Im Klartext bedeutet es, mit diesem Befehlssatz können Tabellen erzeugt, Spalten hinzugefügt und gelöscht werden. Außerdem kann man festlegen welche Datentypen die einzelnen Felder aufnehmen können.

Tabellen erstellen

Um eine Tabelle zu erzeugen benutzt man den Befehl

 CREATE TABLE Tabellenname(Spaltenname Spaltentyp Spaltenanweisung,Spaltenname2 Spaltentyp2 Spaltenanweisung2, ...);

In einer Datenbank können viele verschiedene Datentypen abgelegt werden. Der nächste Befehl erstellt eine Tabelle mit laufender Nummerierung, in der die komplette Adresse einer Person und das Geburtsdatum abgelegt werden können.

 CREATE TABLE Personen (
              LaufNr INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
              Name VARCHAR(20) NOT NULL,
              Vorname VARCHAR(20) NOT NULL,
              Strasse VARCHAR(20),
              Hausnr SMALLINT,
              PLZ INTEGER,
              Ort VARCHAR(20),
              GebDat DATE);

Der gesamte Code kann in einer Zeile stehen, da es sich ja nur um eine Anweisung handelt und muss insbesondere für SQLite mit einem Semikolon abgeschlossen werden.

Die Spaltenanweisung „NOT NULL“ bedeutet, dass in dieser Spalte kein Feld leer sein darf.

„PRIMARY KEY“ legt den Primärschlüssel auf diese Spalte. In der Spalte, auf der der Primärindex liegt, darf kein Wert zweimal vorkommen. Wozu ein Primärschlüssel gut ist, werden wir später sehen.

„AUTO_INCREMENT“ schließlich sorgt dafür, das der Feldwert für jede Zeile automatisch um den Wert 1 hochgezählt wird. In SQLite lautet das Schlüsselwort AUTOINCREMENT.

Spalten hinzufügen

Um eine Spalte nachträglich hinzuzufügen braucht man diesen Befehl:

 ALTER TABLE Tabellenname ADD Spaltenname Spaltentyp;

Schlüssel und ihre Bedeutung

Ein Schlüssel, ist ein Wert, der dazu dient eine Tabellenzeile eindeutig zu identifizieren. Daher darf kein Wert in der Schlüsselspalte zweimal vorkommen. Man kann für jede Tabelle einen Primärschlüssel festlegen, z.B. als laufende Nummer. Dieser Wert sollte so klein wie möglich gewählt werden. Dieser Primärschlüssel kann dann in einer anderen Tabelle mit einem Sekundär- oder Fremdschlüssel verknüpft werden. Wenn man einen Fremdschlüssel erstellt, muss die Tabelle und der Schlüssel auf den sich der Fremdschlüssel bezieht bereits existieren.

CREATE TABLE Ware(
              Artikelnummer INTEGER NOT NULL PRIMARY KEY,
              Bezeichnung VARCHAR(40),
              Preis NUMERIC(10,2));
 
CREATE TABLE Kunde(
              KdNr INTEGER NOT NULL PRIMARY KEY,
              Name VARCHAR(30),
              Vorname VARCHAR(30),
              Kaufartikel INTEGER,
              FOREIGN KEY (Kaufartikel) REFERENCES Ware(Artikelnummer));

Diese beiden Tabellen sind nun über die Felder Artikelnummer und Kaufartikel verknüpft. Eine solche Verknüpfung kann für Überprüfungen, sowie Lösch- und Updateoperatioenn benutzt werden. ACHTUNG: Das Setzen von Fremdschlüsseln wird von SQLite derzeit nicht unterstützt!

Erzeugen eines Index

Ein Index auf einem Feld beschleunigt die Suche nach Datensätzen, wenn das indizierte Feld als Suchkriterium angegeben wird. Der Befehl dafür lautet:

 CREATE INDEX Indexname ON Tabellenname(Spaltenname);

Löschen eines Index

Einen Index kann man mit diesem Befehl löschen:

 DROP INDEX Indexname ON Tabellenname; 

Für SQLite muss man den Teil „ON Tabellenname“ weglassen.

Löschen einer Tabelle

Um eine ganze Tabelle zu löschen verwendet man diesen Befehl:

 DROP TABLE Tabellenname; 

ACHTUNG: Bei DROP TABLE erfolgt keine Sicherheitsabfrage, also lieber zweimal Überlegen, bevor man den Befehl auf den Weg schickt!

Es gibt auch die Möglichkeit an einen SQL Befehl eine Bedingung zu knüpfen:

 DROP TABLE IF EXISTS Tabellenname;

Hier wird der Löschbefehl nur ausgeführt, wenn diese Tabelle überhaupt existiert hat.