SQL/Datendefinition

Aus Foxwiki

Datendefinition

Datenbanktabelle (CREATE TABLE)

Die Datenbanktabelle Vorlesung kann mit der folgenden Anweisung erzeugt werden:

CREATE TABLE Vorlesung (VorlNr INT NOT NULL PRIMARY KEY, Titel VARCHAR NOT NULL, PersNr NOT NULL, FOREIGN KEY (PersNr) REFERENCES Professor (PersNr));

In keinem der Felder VorlNr, Titel, PersNr ist der Wert NULL erlaubt. Der Fremdschlüssel PersNr referenziert den Primärschlüssel PersNr der Tabelle Professor. Damit wird sichergestellt, dass in die Tabelle Vorlesung nur Datensätze eingefügt werden können, für die der Wert von PersNr in der Tabelle Professor als Primärschlüssel vorkommt (siehe referenzielle Integrität).

Datenbankindex (CREATE INDEX)

Mit der Anweisung

CREATE INDEX VorlesungIndex
ON Vorlesung (PersNr, Titel);

kann ein Datenbankindex für die Tabelle Vorlesung definiert werden, der vom Datenbanksystem bei der Ausführung von Abfragen zur Beschleunigung verwendet werden kann. Ob das sinnvoll ist, entscheidet das Datenbanksystem eigenständig durch komplexe Auswertungen und Analysen für jede Abfrage erneut.

Sicht (CREATE VIEW)

Eine Sicht ist im Wesentlichen ein Alias für eine Datenbankabfrage. Sie kann wie eine Datenbanktabelle verwendet werden. Die Anweisung

    CREATE VIEW Vorlesungssicht AS
    SELECT Vorlesung.VorlNr,
           Vorlesung.Titel,
           Professor.PersNr,
           Professor.Name
      FROM Professor
INNER JOIN Vorlesung
        ON Professor.PersNr = Vorlesung.PersNr;

speichert die definierte Abfrage als Sicht. Die Abfrage

SELECT Titel,
       Name
  FROM Vorlesungssicht
 WHERE VorlNr < 5000;

verwendet diese Sicht und könnte zum Beispiel folgendes Ergebnis liefern:

Titel Name
Softwareentwicklung 1 Wirth
Netzwerke 1 Urlauber
Algorithmen Wirth
Datenbanken Urlauber

Zusammenfassung von CREATE TABLE, CREATE INDEX und CREATE VIEW

Zusammengefasst sind die wichtigsten Elemente der Definition einer Datenbanktabelle, eines Datenbankindex oder einer Sicht wie folgt anzugeben:

CREATE TABLE Tabellenname (Attributdefinition [PRIMARY KEY]) [, FOREIGN KEY (Attributliste) REFERENCES Tabellenname (Attributliste)]);
DROP TABLE Tabellenname;
ALTER TABLE Tabellenname (Attributdefinition [PRIMARY KEY]) [, FOREIGN KEY (Attributliste) REFERENCES Tabellenname (Attributliste)]);

CREATE INDEX Indexname ON Tabellenname (Attributliste);
DROP INDEX Indexname;

CREATE VIEW Sichtname [(Attributliste)] AS SELECT <Auswahlkriterien>;
DROP VIEW Sichtname;