Databases Reference
In-Depth Information
insert into spielkarten values('Herz', '7');
einen weiteren Datensatz einfügen: beide Datensätze stimmen ja nur in der Spal-
te
karte
nicht aber im Schlüsselkandidaten
farbe
überein. Jedoch schlägt die
folgende Anweisung fehl, da die Farbe Pik bereits in der Tabelle vorhanden ist:
insert into spielkarten values('Pik', 'Ass')
Die Definition der Schlüsselkandidaten mit
unique
stellt eine Einschränkung (dt.
für constraint) für die Daten der Tabelle dar. Sie erhöht aber auch die Integrität des
Datenbestandes. Auf Tabellenebene bezeichnen wir syntaktische Komponenenten
wie
unique
als Integritätsregeln (siehe Abschnitt 1.6); in der SQL-Syntax werden
sie
Constraints
genannt. Jeder Integritätsregel können wir einen Namen geben:
Listing 5.4:
Integritätsregel mit Namen
create table spielkarten(
farbe varchar(20),
karte varchar(20),
constraint ukarten unique(farbe)
)
Wir haben der Integritätsregel den Namen
ukarten
gegeben und können sie so
auch später einfach wieder löschen:
alter table spielkarten drop constraint ukarten
Mit der
alter table
-Anweisung können wir Tabellen noch ändern, nachdem
wir sie erzeugt und mit Datensätzen bestückt haben. Weitere Erläuterungen zu
alter table
finden wir noch in den folgenden Abschnitten. Mit dieser Anwei-
sung lassen sich übrigens nicht nur Constraints, sondern auch Spalten hinzufügen
und löschen:
alter table spielkarten add column spieler varchar(20);
alter table spielkarten drop column spieler;
Es gibt die folgende syntaktische Variante, um zunächst die Tabelle und anschlie-
ßend die Integritätsregeln zu definieren:
create table spielkarten(
farbe varchar(20),
karte varchar(20)
);
alter table spielkarten add constraint ukarten unique(farbe)
Tatsächlich hat jede Integritätsregel einen Namen: Wenn wir uns nicht selbst - wie
in Listing 5.4 - um die Namensgebung kümmern, dann erledigt dies das RDBMS.
Der Systemkatalog (siehe Abschnitt 2.7), der ja das „Zentralregister“ der Metada-