SQL/Datendefinition
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;