Tabellen mit verschiedene Spaltentypen erzeugen

Werbung
SQL Arbeitsblatt 9
Tabellen sind die Grundlage jeder relationalen Datenbank. In den Tabellen werden die Daten, die
der Benutzer eingibt und die Systemdaten (Metadaten) gespeichert. Nachfolgend wird die Anweisung CREATE TABLE mit ihren Optionen vorgestellt.
Hinweis:
Damit die Tabellenbezeichnung t_test für alle Übungen verwendet werden kann, können Sie
t_test mit DROP TABLE t_test wieder löschen!
1. Zu welchem Ergebnis führt die folgende Anweisung?
CREATE TABLE t_test (nummer INTEGER, bezeichnung VARCHAR(20))
2. Erzeugen Sie eine Tabelle namens t_test, welche die Spalten nummer, datum und preis
enthält!
CREATE TABLE t_test (nummer INTEGER, datum DATE, preis FLOAT)
3. Welche Auswirkungen haben die verwendeten Optionen?
CREATE TABLE t_test (nummer INTEGER NOT NULL, datum DATE DEFAULT "NOW",
preis FLOAT NOT NULL CHECK (preis > 0.01), bemerkung VARCHAR(20)
CHARACTER SET ISO8859_1 COLLATE DE_DE)
4. Erzeugen Sie eine Tabelle namens t_test mit den Spalten nummer und bezeichnung. Stellen Sie sicher, dass die Spalte bezeichnung keine Werte mit dem Buchstaben ä (in Groß- und
Kleinschreibung) enthält. Für die Spalte bezeichnung soll der Zeichensatz ISO8859_1 und die
Sortierreihenfolge DE_DE verwendet werden!
CREATE TABLE t_test (nummer INTEGER NOT NULL,bezeichnung ARCHAR(20) CHARACTER SET ISO8859_1 CHECK (UPPER(bezeichnung) OT LIKE “%Ä%”) COLLATE
DE_DE)
5. Statt eines Spaltentyps kann auch eine Domäne verwendet werden. Diese wird dann mit allen
Optionen Grundlage der Spaltendefinition. Das folgende Beispiel aus der Testdatenbank soll
analysiert werden!
CREATE DOMAIN ln AS INTEGER NOT NULL;
CREATE DOMAIN pl AS VARCHAR(6) CHARACTER SET ISO8859_1 COLLATE DE_DE;
CREATE DOMAIN tl AS VARCHAR(15) CHARACTER SET ISO8859_1 COLLATE DE_DE;
CREATE DOMAIN st AS VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE DE_DE;
CREATE TABLE t_kunde (nummer ln, vorname st, strasse st, plz pl, ort st,
tel tl, fax tl, PRIMARY KEY(nummer));
6. Erstellen Sie eine Domäne d_test für die Speicherung von Ganzzahlen, die größer als 500 sind.
Erstellen Sie auf dieser Domäne eine Tabelle t_test mit der Spalte nummer. Fügen Sie eine zusätzliche Prüfung ein, welche den Inhalt von nummer auf Werte kleiner 3000 beschränkt!
CREATE DOMAIN d_test INTEGER NOT NULL CHECK (VALUE >= 500)
CREATE TABLE t_test (nummer d_test CHECK (nummer <= 3000)
7. Welche Bedeutung hat die COMPUTED BY-Klausel in der folgenden Abfrage?
CREARTE TABLE t_test (nummer INTEGER NOT NULL, stueckzahl INTEGER NOT
NULL, preis FLOAT NOT NULL, gesamtpreis COMPUTED BY (stueckzahl * preis))
Müller-Tiemann, Cuno-BK I
D:\68612924.doc
Seite 1 von 2
SQL Arbeitsblatt 9
8. Erstellen Sie eine Tabelle mit den Spalten vorname und nachname sowie einer Spalte name,
welche sich aus den beiden anderen Spalten zusammensetzt. Verwenden sie für die Spalten
vorname und nachname die Domäne st!
CREATE TABLE t_test (vorname st, nachname st, name COMPUTED BY (vorname
||” “|| nachname))
Bei manchen Datenbanksystemen ist ein Schlüssel und ein Index dasselbe. Bei Interbase gilt jedoch: Ein Schlüssel ist eine Spalte oder eine Kombination von Spalten, welche jeden Wert bzw. jede Wertkombination nur einmal erlaubt. Ein Index ist ein Suchbaum, welcher das Finden von Datensätzen beschleunigt. Für jeden Schlüssel erstellt Interbase automatisch einen Index. Für Indizies
werden aber keine Schlüssel erzeugt.
9. Analysieren Sie die folgenden Anweisungen!
CREATE TABLE t_test (nummer INTEGER NOT NULL PRIMARY KEY, bezeichnung st)
CREATE TABLE t_gruppe(nummer ln, bezeichnung st, PRIMARY KEY(nummer ));
CREATE TABLE t_test (abteilung INTEGER NOT NULL, mitarbeiter INTEGER NOT
NULL, name st, PRIMARY KEY (abteilung, mitarbeiter))
10. Nun eine umfangreichere Übung: Erstellen Sie die Tabellen t_fluss und t_stadt jeweils mit
einer Nummern- und einer Bezeichnungsspalte. Für die Nummernspalte wird jeweils ein Primärschlüssel gebildet.
Erstellen Sie weiter die Verknüpfungstabelle t_suf, welche aus zwei Nummernspalten besteht,
die gemeinsam den Primärschlüssel bilden!
CREATE TABLE t_fluss(nummer ln,fluss st,PRIMARY KEY(nummer))
CREATE TABLE t_stadt (nummer ln,stadt st,PRIMARY KEY(nummer))
CREATE TABLE t_suf (stadt ln,fluss ln,PRIMARY KEY(stadt, fluss))
11. Sekundärschlüssel dienen dazu, Redundanzen in der Datenbank zu vermeiden. Es können keine zwei Datensätze in einem Sekundärschlüssel denselben Wert haben. Die Verwendung von
Sekundärschlüssel sollte jedoch mit Vorsicht erfolgen. Beispielsweise könnte in einer Mitarbeitertabelle über den spalten nachname und vorname ein Sekundärschlüssel definiert sein. Nun
stellt die Firma einen neuen Mitarbeiter mit dem Namen Konrad Müller ein. Einen Mitarbeiter
solchen Namens gibt es aber bereits, also wird sich die Datenbank weigern, eine entsprechende Eingabe anzunehmen. Sekundärschlüssel werden wie folgt erzeugt:
CREATE TABLE t_test (nummer ln PRIMARY KEY, test INTEGER NOT NULL UNIQUE)
oder:
CREATE TABLE t_kunde2 (nummer ln, vorname st NOT NULL, nachname st NOT
NULL, strasse st NOT NULL, plz pl NOT NULL, ort st, tel tl, fax tl, PRIMARY KEY (nummer), UNIQUE (vorname, nachname, strasse, plz));
12. Erstellen Sie eine Tabelle t_buch mit der Primärschlüsselspalte nummer, der Sekundärschlüsselspalte isbn und der Spalte title. Wählen Sie geeignete Spaltentypen. Gewährleisten sie, dass nur Werke deutscher Verlage in die Tabelle aufgenommen werden können. Stellen Sie außerdem sicher, das die ISBN-Nummer mit Trennstrich formatiert eingegeben
wird.
Müller-Tiemann, Cuno-BK I
D:\68612924.doc
Seite 2 von 2
Herunterladen