Inhaltsverzeichnis
Übersicht
SQL enthält neben den Möglichkeiten zum Erstellen und Ändern von Daten auch eine Datendefinitions- oder -beschreibungssprache (DDL). Diese ermöglicht es, die logischen Datenstrukturen zu beschreiben und zu ändern, also quasi die „Daten über die Daten“. Typische Operationen sind das Erstellen, Ändern und Löschen von Tabellen.
Zunächst aber einige Begrifflichkeiten:
- Relation: Entspricht quasi einer Tabelle
- Relationenschema: Information, wie eine Relation aufgebaut ist
- Attribut: Entspricht einer Spalte einer Tabelle
- Datentyp: Bezeichnet die Art der Information, die ein Attribut enthalten kann
- Tupel: Bezeichnet einen Datensatz
Datentypen
Hier eine Liste ausgewählter Datentypen in SQL:
- VARCHAR(n): Zeichenkette mit var. Länge, max. jedoch n
- INTEGER: Ganzzahl
- SMALLINT: kleinere Ganzzahl
- NUMERIC(p,d): Dezimalzahl mit p Ziffern links und d Ziffern rechts des Kommas
- REAL, DOUBLE: Gleitkommazahl
- FLOAT(n): Gleitkommazahl mit benutzerdefinierter Genauigkeit von n Ziffern
- DATE: Datum
- TIME: Tageszeit in Stunden, Minuten und Sekunden
- TIMESTAMP: Datum und Uhrzeit
- INTERVAL: Zeitperiode
Die Subtraktion von Datum- oder Zeitangaben ergibt einen Intervall-Wert. Einzelne Werte können auch ausgelesen werden, z. B. „EXTRACT(YEAR FROM timestamp)“. Es geht auch umgekehrt: „CAST zeichenkette AS DATE“.
Eigene Datentypen können mit „CREATE DOMAIN“ definiert werden, z. B.:
CREATE DOMAIN personenname CHAR(25) NOT NULL
Erzeugen von Relationenschemata
Syntax:
CREATE TABLE tabellenname (
Attribut1 Datentyp1,
Attribut2 Datentyp2
)
Beispiel:
CREATE TABLE filiale (
filialname VARCHAR(15) NOT NULL,
filialstadt VARCHAR(30)
);
Ändern von Relationenschemata
Syntax:
ALTER TABLE tabellenname ADD Attribut1 Datentyp1
ALTER TABLE tabellenname DROP filialstadt
Beispiel:
ALTER TABLE filiale ADD filialnr SMALLINT
Löschen von Relationenschemata
Dies löscht eine Tabelle.
Syntax:
DROP TABLE tabellenname
Indexstrukturen
Indizes dienen dazu, dass auf Daten rascher zugegriffen werden kann. Schlüssel garantieren die Eindeutigkeit der Daten. Dies schlägt sich jedoch auf die Speichergeschwindigkeit und den Platzbedarf nieder.
Zusätzlich können Daten noch „geclustert“ werden, d. h. sie liegen auch am physikalischen Speicher nebeneinander.
Syntax:
CREATE [UNIQUE] INDEX INDEX
ON Relation (Attribut1 Ordnung1, .. , Attribut n Ordnung n)
[CLUSTER]
Beispiel:
CREATE UNIQUE INDEX kundeind1 ON kunde(kundenname ASC)
CLUSTER
Quelle
- Schikuta, Erich: Datenmodellierung und Datenbanksysteme, FFH, 2008