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-
Search WWH ::




Custom Search