5.1.2 Vertiefung: SQL als Sprache zur Datendefinition (DDL)
Das Erstellen von Relationen
In SQL werden die Begriffe
TABLE
, ROW
und COLUMN
synonym für
Relation, Tupel und Attribut gebraucht. Mit Hilfe des CREATE TABLE
-Befehls wird ein neues Relationenschema in der Datenbank
definiert. Das Relationenschema muss genau spezifiziert werden, oder in anderen
Worten, die zur Relation gehörenden Attribute sowie deren Domänen müssen
angegeben werden.
Mit CREATE TABLE
wird in einer
Datenbank eine neue Relation (Tabelle) angelegt. Der Befehl hat folgende
Grundstruktur:CREATE TABLE <Tabellenname>
(<Attributdefinitionen und Beschränkungen>);
Attributdefinition: Attribute werden
mit einem Namen und einem Datentyp definiert, wobei der Namen innerhalb der
Tabelle eindeutig sein muss. Diese Angaben sind für alle Attribute zwingend
notwendig.
Die Reihenfolge der Attribute bei der Definition
entspricht der Reihenfolge der Spalten in der erstellten Tabelle. Wird eine
bestimmte Ordnung angestrebt ist diese bereits bei der Erstellung der Tabelle zu
definieren. Danach bleibt sie, sofern keine Änderungen an der Struktur der
Tabelle vorgenommen werden bestehen.
Beschränkungen: Es gibt zwei Arten von
Beschränkungen: Tabellenbeschränkungen und Attributbeschränkungen. Der
Unterschied liegt darin, dass Attributbeschränkungen sich auf nur ein Attribut
beziehen und Tabellenbeschränkungen sich auf mehrere Attribute beziehen können,
dies aber nicht müssen. Mit diesen Beschränkungen kann der Wertebereich der
Attribute eingeschränkt werden oder es wird verhindert, dass Werte eingegeben
werden, die nicht erlaubt sind. Ein Datensatz kann nicht erfasst werden, wenn er
eine Beschränkung verletzt.
Es gibt vier Arten von
Beschränkungen:
UNIQUE
- das Attribut oder die Attributkombination muss innerhalb der Tabelle eindeutig seinPRIMARY KEY
- das Attribut oder die Attributkombination ist Primärschlüssel der TabelleFOREIGN KEY
- das Attribut ist ein FremdschlüsselCHECK
- Bedingung die für ein Attribut oder eine Attributkombination erfüllt sein muss
Zusätzlich sind noch eine Reihe weiterer Deklarationen möglich wie z. B.
die Domänendeklaration die in SQL die Datentypen CHAR,
NUMBER, LONG
und DATE
kennt. Durch die Deklaration NOT NULL
wird
festgelegt, dass für das jeweilige Attribut keine NULL-Werte zulässig sind.
Folglich muss beim Einfügen eines Tupels grundsätzlich ein Wert für dieses
Attribut angegeben werden.
Manipulation von Relationsstrukturen
Mit ALTER TABLE
kann die Struktur einer Relation geändert werden.
Es können die mit CREATE TABLE erzeugten Attribute und
Beschränkungen geändert, neue hinzugefügt oder vorhandene gelöscht werden. Der
Befehl hat folgende Syntax:ALTER TABLE <Tabellenname>
<Änderung>;
wobei <Änderung>
verschieden Befehle beinhalten
kann:
ADD [COLUMN] <Attributdefintion>
Attribut hinzufügen (Attributdefiniton wie bei CREATE)ALTER [COLUMN] <Attributname> SET DEFAULT <Standardwert>
neuer Standardwert festlegenALTER [COLUMN] <Attributname> DROP DEFAULT
aktuellen Standardwert löschenDROP [COLUMN] <Attributname> {RESTRICT | CASCADE}
löschen eines AttributesADD <Tabellenbeschränkung>
neue Tabellenbeschränkung hinzufügen (Tabellenbeschränkung wie bei CREATE)DROP CONSTRAINT <Tabellenbeschränkung>
löschen einer Tabellenbeschränkung
Mit den oben genannten Befehlen können Attribute und Beschränkungen
hinzugefügt bzw. gelöscht werden. Zudem können die Standardwerte für die
Attribute gesetzt oder gelöscht werden.
SQL beinhaltet im Standard
keine Befehle um Attribute zu ändern oder umzubenennen. Dies würde auch zu
Problemen führen, wenn bereits Daten vorhanden sind. Dennoch sind diese Befehle
in einigen Datenbanken vorhanden (z.B. MODIFY oder RENAME). Die Syntax
unterscheidet sich jedoch von System zu System. Wenn keine Daten vorhanden sind,
kann das Attribut, das geändert werden soll, gelöscht und neu hinzugefügt
werden.
Löschen von Relationen
Mit DROP TABLE kann
eine bestehende Tabelle gelöscht werden. Dabei werden die Daten und die Struktur
der Tabelle gelöscht.
Der Befehl hat folgende Syntax
Mit DROP TABLE
<Tabellenname>;
wird die Tabellenstruktur samt den Daten
gelöscht. Dies kann in den meisten Fällen nicht mehr rückgängig gemacht werden.
Wirkungsweise von CREATE und ALTER
NAchvollziehen Sie anhand der nachfolgenden Beipiele die Wirkungsweise von SQL auf Relationen
Im animierten Beispiel wird einer Datenbank eine Tabelle hinzugefügt,
die mit einer bereits bestehenden Tabelle verknüpft ist. Im SQL Befehl kommt der
Unterschied zwischen Attribut- und Tabellenbeschränkung zum Ausdruck. projekt_ID
und leiter_ID haben eine Attributbeschränkung (Beschränkung wird direkt hinter
die Attributdefiniton geschrieben). projekt_ID hat die Beschränkung PRIMARY KEY,
ist also Primärschlüssel dieser Tabelle, d.h. das Attribut muss eindeutig und
nicht NULL sein. leiter_ID hat die Beschränkung NOT NULL (Spezialfall einer
CHECK Beschränkung), muss also immer einen Wert enthalten.
Der
Verknüpfung mit der bestehenden Tabelle ist als Tabellenbeschränkung definiert
(FOREIGN KEY) und hat einen Namen (projektleiter). Diese Beschränkung könnte
jedoch auch als Attributbeschränkung definiert werden, da sie nur ein Attribut
beinhaltet.
Das Beispiel zeigt, dass grundsätzlich kein Unterschied
zwischen Attribut- und Tabellenbeschränkungen besteht, sofern nur ein Attribut
betroffen ist.
Im animierten Beispiel wird einer Tabelle ein neues Attribut hinzugefügt.
Der angezeigte Datensatz enthält danach NULL für dieses Attribut, weil noch kein
Wert zugewiesen wurde. Anschliessend wird dieses Attribut wieder aus der Tabelle
gelöscht. Das Schlüsselwort RESTRICT
bewirkt, dass nur Attribute gelöscht werden können, die nicht mit anderen
Tabellen verbunden sind (Fremdschüssel). Alternativ kann das Schlüsselwort
CASCADE
verwendet werden. Dabei wird
nicht nur die gewünschte Spalte, sondern auch die verbundene Spalte in der
anderen Tabelle gelöscht.
Denken Sie nach...
- Was ist der Unterschied zwischen DROP Table und ADD [COLUMN]?