Databases Reference
In-Depth Information
gibt. Hier sehen wir den Einsatz der beiden logischen Operationen not und
and . Da in diese Regel zwei verschiedene Attribute eingehen, müssen wir sie
losgelöst von den Spalten definieren.
SQL verfügt über eine Vielzahl von Funktionen und Operatoren, mit denen wir
uns in Kapitel 11 noch intensiver auseinandersetzen. Wenn wir die Spalte email
wie folgt definieren
email varchar(20) unique check(0<position('@',email))
stellen wir sicher, dass alle E-Mail-Adressen auch ein @ -Zeichen enthalten. Die
Funktion position liefert die Position des @ -Zeichens im Text und 0, wenn das
@ -Zeichen nicht auftritt. Wir werden aber in Kapitel 10 noch weitere, mächtigere
Möglichkeiten kennenlernen, um Muster für Texte zu formulieren. Als Voraus-
blick sei der in -Operator erwähnt. Mit seiner Hilfe können wir die Regel
check(geschlecht = 'W' or geschlecht = 'M')
zu
check(geschlecht in ('W', 'M'))
verkürzen. Zwischen den Klammern steht eine Liste von Werten. Der Operator in
liefert den Wert true , wenn der Wert auf seiner linken Seite mit mindestens einem
der Elemente der Liste auf der rechten Seite übereinstimmt. Den in -Operator ha-
ben wir bereits in Beispielen für die Anweisung create domain genutzt (siehe
Abschnitt 5.3).
5.12
Es muss nicht immer statisch sein
Wir können bei Spalten wie geschlecht fragen, ob wir nicht besser die referenzi-
ellen Integritätsregeln anstatt statischer Regeln oder Wertebereiche nutzen sollen.
Die wie folgt definierte Tabelle
create table geschlechter(
id int generated always as identity primary key,
geschlecht varchar(1) unique
);
insert into geschlechter(geschlecht) values('M');
insert into geschlechter(geschlecht) values('W')
muss dann nur über einen Fremdschlüssel in der Tabelle mitarbeiter referen-
ziert werden. Das erledigen wir gleich in einem Aufwasch mit der Definition der
Spalte:
geschlecht int references geschlechter
Search WWH ::




Custom Search